| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/HostingSpaces/admin/penpalamerica.com/backup/newpal3/js/ |
Upload File : |
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/firebase/dist/index.cjs.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/vue/dist/vue.esm.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/framework7/utils/device.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/framework7/utils/support.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@firebase/app/dist/index.cjs.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js","webpack:///./node_modules/firebase/app/dist/index.cjs.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@firebase/component/dist/index.cjs.js","webpack:///./node_modules/@firebase/util/dist/index.cjs.js","webpack:///./node_modules/template7/dist/template7.esm.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/idb/build/idb.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/@firebase/logger/dist/index.esm.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@firebase/installations/dist/index.esm.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/lodash/lodash.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/vuex/dist/vuex.esm.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-SG.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/stream-http/lib/capability.js","webpack:///./node_modules/stream-http/lib/response.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/url/url.js","webpack:///./node_modules/vue-phone-number-input/dist/vue-phone-number-input.common.js","webpack:///./node_modules/vue-ravepayment/dist/rave.min.js","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/@firebase/auth/dist/auth.esm.js","webpack:///./node_modules/@firebase/database/dist/index.cjs.js","webpack:///./node_modules/@firebase/firestore/dist/index.cjs.js","webpack:///./node_modules/@firebase/webchannel-wrapper/dist/index.esm.js","webpack:///./node_modules/@firebase/functions/dist/index.cjs.js","webpack:///./node_modules/@firebase/messaging/dist/index.esm.js","webpack:///./node_modules/@firebase/storage/dist/index.esm.js","webpack:///./node_modules/@firebase/performance/dist/index.cjs.js","webpack:///./node_modules/@firebase/analytics/dist/index.esm.js","webpack:///./node_modules/@firebase/remote-config/dist/index.cjs.js","webpack:///./node_modules/numeral/numeral.js","webpack:///./src/pages/home.vue?9ad7","webpack:///./src/pages/auth/signin.vue?a77e","webpack:///./src/pages/auth/firstpage.vue?b9bc","webpack:///./src/pages/auth/signup.vue?e1b5","webpack:///./src/pages/auth/editprofile.vue?532f","webpack:///./src/pages/auth/editprofilepicture.vue?7a6a","webpack:///./src/pages/auth/phoneverify.vue?2431","webpack:///./src/assets/images/googleimage.png","webpack:///./src/assets/images/appleimage.png","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/pages/chat/contacts.vue?5119","webpack:///./src/pages/chat/pay4me.vue?ec23","webpack:///./src/pages/chat/members.vue?a4e9","webpack:///./src/pages/chat/search.vue?c866","webpack:///./src/pages/chat/livescores.vue?1cb2","webpack:///./src/pages/chat/standings.vue?f0dd","webpack:///./src/pages/chat/requests.vue?5338","webpack:///./src/pages/chat/chat.vue?912d","webpack:///./src/pages/chat/usernotifications.vue?b486","webpack:///./src/pages/chat/beamoderator.vue?ea64","webpack:///./src/pages/chat/sportsupdate.vue?1534","webpack:///./src/pages/chatgroups/chatgroups.vue?e554","webpack:///./src/pages/chatgroups/chatgroup.vue?4681","webpack:///./src/pages/chatgroups/newgroup.vue?cce8","webpack:///./src/pages/chatgroups/addmembers.vue?4394","webpack:///./src/pages/chatgroups/groupinfo.vue?e39a","webpack:///./src/pages/chatgroups/groupmembers.vue?96c9","webpack:///./src/components/app.vue?d2b6","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/https-browserify/index.js","webpack:///./node_modules/stream-http/index.js","webpack:///./node_modules/stream-http/lib/request.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/to-arraybuffer/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/builtin-status-codes/browser.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/url/util.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/dom7/dist/dom7.module.js","webpack:///./node_modules/framework7/utils/utils.js","webpack:///./node_modules/framework7/utils/events-class.js","webpack:///./node_modules/framework7/utils/class.js","webpack:///./node_modules/framework7/utils/constructor-methods.js","webpack:///./node_modules/framework7/utils/modal-methods.js","webpack:///./node_modules/framework7/components/app/load-module.js","webpack:///./node_modules/framework7/components/app/app-class.js","webpack:///./node_modules/framework7/utils/request.js","webpack:///./node_modules/framework7/modules/device/device.js","webpack:///./node_modules/framework7/modules/support/support.js","webpack:///./node_modules/framework7/modules/utils/utils.js","webpack:///./node_modules/framework7/modules/resize/resize.js","webpack:///./node_modules/framework7/modules/request/request.js","webpack:///./node_modules/framework7/modules/touch/touch.js","webpack:///./node_modules/path-to-regexp/dist.es2015/index.js","webpack:///./node_modules/framework7/utils/history.js","webpack:///./node_modules/framework7/modules/router/swipe-back.js","webpack:///./node_modules/framework7/modules/router/redirect.js","webpack:///./node_modules/framework7/modules/router/process-route-queue.js","webpack:///./node_modules/framework7/modules/router/app-router-check.js","webpack:///./node_modules/framework7/modules/router/async-component.js","webpack:///./node_modules/framework7/modules/router/router-class.js","webpack:///./node_modules/framework7/modules/router/navigate.js","webpack:///./node_modules/framework7/modules/router/tab.js","webpack:///./node_modules/framework7/modules/router/modal.js","webpack:///./node_modules/framework7/modules/router/back.js","webpack:///./node_modules/framework7/modules/router/clear-previous-history.js","webpack:///./node_modules/framework7/modules/router/router.js","webpack:///./node_modules/framework7/components/view/resizable-view.js","webpack:///./node_modules/framework7/components/view/view-class.js","webpack:///./node_modules/framework7/modules/clicks/clicks.js","webpack:///./node_modules/framework7/modules/router/template-loader.js","webpack:///./node_modules/framework7/modules/router/component-loader.js","webpack:///../src/vnode.ts","webpack:///../src/is.ts","webpack:///../src/h.ts","webpack:///./node_modules/framework7/modules/component/vdom.js","webpack:///./node_modules/framework7/modules/component/custom-components.js","webpack:///../src/htmldomapi.ts","webpack:///../src/snabbdom.ts","webpack:///../../src/modules/attributes.ts","webpack:///../../src/modules/props.ts","webpack:///../../src/modules/style.ts","webpack:///./node_modules/framework7/modules/component/eventslisteners.js","webpack:///./node_modules/framework7/modules/component/patch.js","webpack:///./node_modules/framework7/modules/component/component-mixins.js","webpack:///./node_modules/framework7/modules/component/component-class.js","webpack:///./node_modules/framework7/modules/component/parse-component.js","webpack:///./node_modules/framework7/modules/component/component.js","webpack:///./node_modules/framework7/modules/history/history.js","webpack:///./node_modules/framework7/modules/service-worker/service-worker.js","webpack:///./node_modules/framework7/components/statusbar/statusbar.js","webpack:///./node_modules/framework7/components/view/view.js","webpack:///./node_modules/framework7/components/navbar/navbar.js","webpack:///./node_modules/framework7/components/toolbar/toolbar.js","webpack:///./node_modules/framework7/components/touch-ripple/touch-ripple-class.js","webpack:///./node_modules/framework7/components/touch-ripple/touch-ripple.js","webpack:///./node_modules/framework7/components/modal/modal-class.js","webpack:///./node_modules/framework7/components/modal/custom-modal-class.js","webpack:///./node_modules/framework7/components/modal/modal.js","webpack:///./node_modules/framework7/components/dialog/dialog-class.js","webpack:///./node_modules/framework7/components/dialog/dialog.js","webpack:///./node_modules/framework7/components/popup/popup-class.js","webpack:///./node_modules/framework7/components/popup/popup.js","webpack:///./node_modules/framework7/components/login-screen/login-screen-class.js","webpack:///./node_modules/framework7/components/login-screen/login-screen.js","webpack:///./node_modules/framework7/components/popover/popover-class.js","webpack:///./node_modules/framework7/components/popover/popover.js","webpack:///./node_modules/framework7/components/actions/actions-class.js","webpack:///./node_modules/framework7/components/actions/actions.js","webpack:///./node_modules/framework7/components/sheet/sheet-class.js","webpack:///./node_modules/framework7/components/sheet/sheet.js","webpack:///./node_modules/framework7/components/toast/toast-class.js","webpack:///./node_modules/framework7/components/toast/toast.js","webpack:///./node_modules/framework7/components/preloader/preloader.js","webpack:///./node_modules/framework7/components/progressbar/progressbar.js","webpack:///./node_modules/framework7/components/sortable/sortable.js","webpack:///./node_modules/framework7/components/swipeout/swipeout.js","webpack:///./node_modules/framework7/components/accordion/accordion.js","webpack:///./node_modules/framework7/components/virtual-list/virtual-list-class.js","webpack:///./node_modules/framework7/components/virtual-list/virtual-list.js","webpack:///./node_modules/framework7/components/list-index/list-index-class.js","webpack:///./node_modules/framework7/components/list-index/list-index.js","webpack:///./node_modules/framework7/components/tabs/tabs.js","webpack:///./node_modules/framework7/components/panel/swipe-panel.js","webpack:///./node_modules/framework7/components/panel/resizable-panel.js","webpack:///./node_modules/framework7/components/panel/panel-class.js","webpack:///./node_modules/framework7/components/panel/panel.js","webpack:///./node_modules/framework7/components/card/card.js","webpack:///./node_modules/framework7/components/form/form.js","webpack:///./node_modules/framework7/components/input/input.js","webpack:///./node_modules/framework7/components/toggle/toggle-class.js","webpack:///./node_modules/framework7/components/toggle/toggle.js","webpack:///./node_modules/framework7/components/range/range-class.js","webpack:///./node_modules/framework7/components/range/range.js","webpack:///./node_modules/framework7/components/stepper/stepper-class.js","webpack:///./node_modules/framework7/components/stepper/stepper.js","webpack:///./node_modules/framework7/components/smart-select/smart-select-class.js","webpack:///./node_modules/framework7/components/smart-select/smart-select.js","webpack:///./node_modules/framework7/components/grid/grid.js","webpack:///./node_modules/framework7/components/calendar/calendar-class.js","webpack:///./node_modules/framework7/components/calendar/calendar.js","webpack:///./node_modules/framework7/components/picker/picker-column.js","webpack:///./node_modules/framework7/components/picker/picker-class.js","webpack:///./node_modules/framework7/components/picker/picker.js","webpack:///./node_modules/framework7/components/infinite-scroll/infinite-scroll.js","webpack:///./node_modules/framework7/components/pull-to-refresh/pull-to-refresh-class.js","webpack:///./node_modules/framework7/components/pull-to-refresh/pull-to-refresh.js","webpack:///./node_modules/framework7/components/lazy/lazy.js","webpack:///./node_modules/framework7/components/data-table/data-table-class.js","webpack:///./node_modules/framework7/components/data-table/data-table.js","webpack:///./node_modules/framework7/components/fab/fab.js","webpack:///./node_modules/framework7/components/searchbar/searchbar-class.js","webpack:///./node_modules/framework7/components/searchbar/searchbar.js","webpack:///./node_modules/framework7/components/messages/messages-class.js","webpack:///./node_modules/framework7/components/messages/messages.js","webpack:///./node_modules/framework7/components/messagebar/messagebar-class.js","webpack:///./node_modules/framework7/components/messagebar/messagebar.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/dom.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/utils.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/support.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/class.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateSize.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateSlides.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateAutoHeight.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateProgress.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateActiveIndex.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/update/updateClickedSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/getTranslate.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/setTranslate.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/minTranslate.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/maxTranslate.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/translate/translateTo.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/transition/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/transition/setTransition.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/transition/transitionStart.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/transition/transitionEnd.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideTo.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideToLoop.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideNext.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slidePrev.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideReset.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideToClosest.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/loop/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/loop/loopCreate.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/loop/loopFix.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/loop/loopDestroy.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/grab-cursor/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/appendSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/prependSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/addSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/removeSlide.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/device.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onTouchStart.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onTouchMove.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onTouchEnd.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onResize.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onClick.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/onScroll.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/events/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/check-overflow/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/defaults.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/core-class.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/utils/browser.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/breakpoints/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/classes/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/classes/addClasses.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/classes/removeClasses.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/images/index.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/images/loadImage.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/core/images/preloadImages.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/modules/device/device.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/modules/support/support.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/modules/browser/browser.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/modules/resize/resize.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/modules/observer/observer.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/virtual/virtual.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/keyboard/keyboard.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/mousewheel/mousewheel.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/navigation/navigation.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/pagination/pagination.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/scrollbar/scrollbar.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/parallax/parallax.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/zoom/zoom.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/lazy/lazy.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/controller/controller.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/a11y/a11y.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/autoplay/autoplay.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/effect-fade/effect-fade.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/effect-cube/effect-cube.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/effect-flip/effect-flip.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/framework7/components/swiper/swiper-src/components/thumbs/thumbs.js","webpack:///./node_modules/framework7/components/swiper/swiper-class.js","webpack:///./node_modules/framework7/components/swiper/swiper.js","webpack:///./node_modules/framework7/components/photo-browser/photo-browser-class.js","webpack:///./node_modules/framework7/components/photo-browser/photo-browser.js","webpack:///./node_modules/framework7/components/notification/notification-class.js","webpack:///./node_modules/framework7/components/notification/notification.js","webpack:///./node_modules/framework7/components/autocomplete/autocomplete-class.js","webpack:///./node_modules/framework7/components/autocomplete/autocomplete.js","webpack:///./node_modules/framework7/components/tooltip/tooltip-class.js","webpack:///./node_modules/framework7/components/tooltip/tooltip.js","webpack:///./node_modules/framework7/components/gauge/gauge-class.js","webpack:///./node_modules/framework7/components/gauge/gauge.js","webpack:///./node_modules/framework7/components/menu/menu.js","webpack:///./node_modules/framework7/components/color-picker/modules/alpha-slider.js","webpack:///./node_modules/framework7/components/color-picker/modules/current-color.js","webpack:///./node_modules/framework7/components/color-picker/modules/hex.js","webpack:///./node_modules/framework7/components/color-picker/modules/hsb-sliders.js","webpack:///./node_modules/framework7/components/color-picker/modules/hue-slider.js","webpack:///./node_modules/framework7/components/color-picker/modules/brightness-slider.js","webpack:///./node_modules/framework7/components/color-picker/modules/palette.js","webpack:///./node_modules/framework7/components/color-picker/modules/initial-current-colors.js","webpack:///./node_modules/framework7/components/color-picker/modules/rgb-bars.js","webpack:///./node_modules/framework7/components/color-picker/modules/rgb-sliders.js","webpack:///./node_modules/framework7/components/color-picker/modules/sb-spectrum.js","webpack:///./node_modules/framework7/components/color-picker/modules/hs-spectrum.js","webpack:///./node_modules/framework7/components/color-picker/modules/wheel.js","webpack:///./node_modules/framework7/components/color-picker/color-picker-class.js","webpack:///./node_modules/framework7/components/color-picker/color-picker.js","webpack:///./node_modules/framework7/components/treeview/treeview.js","webpack:///./node_modules/framework7/components/text-editor/text-editor-class.js","webpack:///./node_modules/framework7/components/text-editor/text-editor.js","webpack:///./node_modules/framework7/components/vi/vi-class.js","webpack:///./node_modules/framework7/components/vi/vi.js","webpack:///./node_modules/framework7/framework7.esm.bundle.js","webpack:///./node_modules/framework7/components/subnavbar/subnavbar.js","webpack:///./node_modules/framework7/components/appbar/appbar.js","webpack:///./node_modules/framework7/components/contacts-list/contacts-list.js","webpack:///./node_modules/framework7/components/timeline/timeline.js","webpack:///./node_modules/framework7/components/chip/chip.js","webpack:///./node_modules/framework7/components/checkbox/checkbox.js","webpack:///./node_modules/framework7/components/radio/radio.js","webpack:///./node_modules/framework7/components/skeleton/skeleton.js","webpack:///./node_modules/framework7/components/elevation/elevation.js","webpack:///./node_modules/framework7/components/typography/typography.js","webpack:///./node_modules/framework7-vue/utils/f7.js","webpack:///./node_modules/framework7-vue/utils/utils.js","webpack:///./node_modules/framework7-vue/utils/mixins.js","webpack:///./node_modules/framework7-vue/runtime-helpers/vue-component-props.js","webpack:///./node_modules/framework7-vue/components/accordion-content.js","webpack:///./node_modules/framework7-vue/runtime-helpers/vue-component-dispatch-event.js","webpack:///./node_modules/framework7-vue/components/accordion-item.js","webpack:///./node_modules/framework7-vue/components/accordion-toggle.js","webpack:///./node_modules/framework7-vue/components/accordion.js","webpack:///./node_modules/framework7-vue/components/actions-button.js","webpack:///./node_modules/framework7-vue/components/actions-group.js","webpack:///./node_modules/framework7-vue/components/actions-label.js","webpack:///./node_modules/framework7-vue/components/actions.js","webpack:///./node_modules/framework7-vue/runtime-helpers/vue-component-set-state.js","webpack:///./node_modules/framework7-vue/components/routable-modals.js","webpack:///./node_modules/framework7-vue/components/app.js","webpack:///./node_modules/framework7-vue/components/appbar.js","webpack:///./node_modules/framework7-vue/components/badge.js","webpack:///./node_modules/framework7-vue/components/block-footer.js","webpack:///./node_modules/framework7-vue/components/block-header.js","webpack:///./node_modules/framework7-vue/components/block-title.js","webpack:///./node_modules/framework7-vue/components/block.js","webpack:///./node_modules/framework7-vue/components/icon.js","webpack:///./node_modules/framework7-vue/runtime-helpers/vue-component-transform-jsx-props.js","webpack:///./node_modules/framework7-vue/components/button.js","webpack:///./node_modules/framework7-vue/components/card-content.js","webpack:///./node_modules/framework7-vue/components/card-footer.js","webpack:///./node_modules/framework7-vue/components/card-header.js","webpack:///./node_modules/framework7-vue/components/card.js","webpack:///./node_modules/framework7-vue/components/checkbox.js","webpack:///./node_modules/framework7-vue/components/chip.js","webpack:///./node_modules/framework7-vue/components/col.js","webpack:///./node_modules/framework7-vue/components/fab-backdrop.js","webpack:///./node_modules/framework7-vue/components/fab-button.js","webpack:///./node_modules/framework7-vue/components/fab-buttons.js","webpack:///./node_modules/framework7-vue/components/fab.js","webpack:///./node_modules/framework7-vue/components/gauge.js","webpack:///./node_modules/framework7-vue/components/toggle.js","webpack:///./node_modules/framework7-vue/components/range.js","webpack:///./node_modules/framework7-vue/components/text-editor.js","webpack:///./node_modules/framework7-vue/components/input.js","webpack:///./node_modules/framework7-vue/components/link.js","webpack:///./node_modules/framework7-vue/components/list-button.js","webpack:///./node_modules/framework7-vue/components/list-group.js","webpack:///./node_modules/framework7-vue/components/list-index.js","webpack:///./node_modules/framework7-vue/components/list-input.js","webpack:///./node_modules/framework7-vue/components/list-item-cell.js","webpack:///./node_modules/framework7-vue/components/list-item-content.js","webpack:///./node_modules/framework7-vue/components/list-item-row.js","webpack:///./node_modules/framework7-vue/components/list-item.js","webpack:///./node_modules/framework7-vue/components/list.js","webpack:///./node_modules/framework7-vue/components/login-screen-title.js","webpack:///./node_modules/framework7-vue/components/login-screen.js","webpack:///./node_modules/framework7-vue/components/menu-dropdown-item.js","webpack:///./node_modules/framework7-vue/components/menu-dropdown.js","webpack:///./node_modules/framework7-vue/components/menu-item.js","webpack:///./node_modules/framework7-vue/components/menu.js","webpack:///./node_modules/framework7-vue/components/message.js","webpack:///./node_modules/framework7-vue/components/messagebar-attachment.js","webpack:///./node_modules/framework7-vue/components/messagebar-attachments.js","webpack:///./node_modules/framework7-vue/components/messagebar-sheet-image.js","webpack:///./node_modules/framework7-vue/components/messagebar-sheet-item.js","webpack:///./node_modules/framework7-vue/components/messagebar-sheet.js","webpack:///./node_modules/framework7-vue/components/messagebar.js","webpack:///./node_modules/framework7-vue/components/messages-title.js","webpack:///./node_modules/framework7-vue/components/messages.js","webpack:///./node_modules/framework7-vue/components/nav-left.js","webpack:///./node_modules/framework7-vue/components/nav-right.js","webpack:///./node_modules/framework7-vue/components/nav-title-large.js","webpack:///./node_modules/framework7-vue/components/nav-title.js","webpack:///./node_modules/framework7-vue/components/navbar.js","webpack:///./node_modules/framework7-vue/components/preloader.js","webpack:///./node_modules/framework7-vue/components/page-content.js","webpack:///./node_modules/framework7-vue/components/page.js","webpack:///./node_modules/framework7-vue/components/panel.js","webpack:///./node_modules/framework7-vue/components/photo-browser.js","webpack:///./node_modules/framework7-vue/components/popover.js","webpack:///./node_modules/framework7-vue/components/popup.js","webpack:///./node_modules/framework7-vue/components/progressbar.js","webpack:///./node_modules/framework7-vue/components/radio.js","webpack:///./node_modules/framework7-vue/components/row.js","webpack:///./node_modules/framework7-vue/components/searchbar.js","webpack:///./node_modules/framework7-vue/components/segmented.js","webpack:///./node_modules/framework7-vue/components/sheet.js","webpack:///./node_modules/framework7-vue/components/skeleton-block.js","webpack:///./node_modules/framework7-vue/components/skeleton-text.js","webpack:///./node_modules/framework7-vue/components/stepper.js","webpack:///./node_modules/framework7-vue/components/subnavbar.js","webpack:///./node_modules/framework7-vue/components/swipeout-actions.js","webpack:///./node_modules/framework7-vue/components/swipeout-button.js","webpack:///./node_modules/framework7-vue/components/swiper-slide.js","webpack:///./node_modules/framework7-vue/components/swiper.js","webpack:///./node_modules/framework7-vue/components/tab.js","webpack:///./node_modules/framework7-vue/components/tabs.js","webpack:///./node_modules/framework7-vue/components/toolbar.js","webpack:///./node_modules/framework7-vue/components/treeview-item.js","webpack:///./node_modules/framework7-vue/components/treeview.js","webpack:///./node_modules/framework7-vue/components/view.js","webpack:///./node_modules/framework7-vue/components/views.js","webpack:///./node_modules/framework7-vue/utils/components-router.js","webpack:///./node_modules/framework7-vue/framework7-vue.esm.bundle.js","webpack:///./src/js/cordova-app.js","webpack:///src/pages/home.vue","webpack:///./src/pages/home.vue?654c","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./src/pages/home.vue","webpack:///./src/pages/home.vue?4f54","webpack:///./src/pages/about.vue","webpack:///./src/pages/about.vue?04c6","webpack:///./src/pages/form.vue","webpack:///./src/pages/form.vue?a0bb","webpack:///./src/pages/catalog.vue","webpack:///src/pages/catalog.vue","webpack:///./src/pages/catalog.vue?2a5a","webpack:///./src/pages/settings.vue","webpack:///./src/pages/dynamic-route.vue","webpack:///src/pages/dynamic-route.vue","webpack:///./src/pages/dynamic-route.vue?cd08","webpack:///./src/pages/request-and-load.vue","webpack:///src/pages/request-and-load.vue","webpack:///./src/pages/request-and-load.vue?643b","webpack:///./src/pages/404.vue","webpack:///src/pages/404.vue","webpack:///./src/pages/404.vue?854e","webpack:///./node_modules/framework7-vue/utils/plugin.js","webpack:///./src/js/mixin.js","webpack:///./src/pages/auth/signin.vue?56c3","webpack:///src/pages/auth/signin.vue","webpack:///./src/pages/auth/signin.vue","webpack:///./src/pages/auth/signin.vue?f3da","webpack:///./src/pages/auth/firstpage.vue?12d8","webpack:///src/pages/auth/firstpage.vue","webpack:///./src/pages/auth/firstpage.vue","webpack:///./src/pages/auth/firstpage.vue?0619","webpack:///./src/pages/auth/signup.vue?14c6","webpack:///src/pages/auth/signup.vue","webpack:///./src/pages/auth/signup.vue","webpack:///./src/pages/auth/signup.vue?4911","webpack:///./src/pages/auth/editprofile.vue?5b17","webpack:///src/pages/auth/editprofile.vue","webpack:///./src/pages/auth/editprofile.vue","webpack:///./src/pages/auth/editprofile.vue?4346","webpack:///./src/pages/auth/editprofilepicture.vue?6d67","webpack:///src/pages/auth/editprofilepicture.vue","webpack:///./src/pages/auth/editprofilepicture.vue","webpack:///./src/pages/auth/editprofilepicture.vue?3a5a","webpack:///./src/pages/auth/phoneverify.vue?fa8f","webpack:///src/pages/auth/phoneverify.vue","webpack:///./src/pages/auth/phoneverify.vue","webpack:///./src/pages/auth/phoneverify.vue?04bd","webpack:///./src/pages/auth/newversion.vue","webpack:///src/pages/auth/newversion.vue","webpack:///./src/pages/auth/newversion.vue?e256","webpack:///./src/pages/chat/contacts.vue?9336","webpack:///src/pages/chat/contacts.vue","webpack:///./src/pages/chat/contacts.vue","webpack:///./src/pages/chat/contacts.vue?2b11","webpack:///./src/pages/chat/pay4me.vue?025c","webpack:///src/pages/chat/pay4me.vue","webpack:///./src/pages/chat/pay4me.vue","webpack:///./src/pages/chat/pay4me.vue?b5ed","webpack:///./src/pages/chat/members.vue?06d5","webpack:///src/pages/chat/members.vue","webpack:///./src/pages/chat/members.vue","webpack:///./src/pages/chat/members.vue?4d00","webpack:///./src/pages/chat/search.vue?f4e2","webpack:///src/pages/chat/search.vue","webpack:///./src/pages/chat/search.vue","webpack:///./src/pages/chat/search.vue?fd69","webpack:///./src/pages/chat/livescores.vue?e325","webpack:///src/pages/chat/livescores.vue","webpack:///./src/pages/chat/livescores.vue","webpack:///./src/pages/chat/livescores.vue?bb60","webpack:///./src/pages/chat/standings.vue?6562","webpack:///src/pages/chat/standings.vue","webpack:///./src/pages/chat/standings.vue","webpack:///./src/pages/chat/standings.vue?025a","webpack:///./src/pages/chat/requests.vue?1df9","webpack:///src/pages/chat/requests.vue","webpack:///./src/pages/chat/requests.vue","webpack:///./src/pages/chat/requests.vue?6041","webpack:///./src/pages/chat/chat.vue?812c","webpack:///src/pages/chat/chat.vue","webpack:///./src/pages/chat/chat.vue","webpack:///./src/pages/chat/chat.vue?a9ba","webpack:///./src/pages/chat/usernotifications.vue?a28a","webpack:///src/pages/chat/usernotifications.vue","webpack:///./src/pages/chat/usernotifications.vue","webpack:///./src/pages/chat/usernotifications.vue?c78a","webpack:///./src/pages/chat/affiliate.vue","webpack:///src/pages/chat/affiliate.vue","webpack:///./src/pages/chat/affiliate.vue?87fd","webpack:///./src/pages/chat/beamoderator.vue?8cf4","webpack:///src/pages/chat/beamoderator.vue","webpack:///./src/pages/chat/beamoderator.vue","webpack:///./src/pages/chat/beamoderator.vue?94ce","webpack:///./src/pages/chat/sportsupdate.vue?b9b8","webpack:///src/pages/chat/sportsupdate.vue","webpack:///./src/pages/chat/sportsupdate.vue","webpack:///./src/pages/chat/sportsupdate.vue?c9f7","webpack:///./src/pages/chatgroups/chatgroups.vue?ea5e","webpack:///src/pages/chatgroups/chatgroups.vue","webpack:///./src/pages/chatgroups/chatgroups.vue","webpack:///./src/pages/chatgroups/chatgroups.vue?73b1","webpack:///./src/pages/chatgroups/chatgroup.vue?ce91","webpack:///src/pages/chatgroups/chatgroup.vue","webpack:///./src/pages/chatgroups/chatgroup.vue","webpack:///./src/pages/chatgroups/chatgroup.vue?0cef","webpack:///./src/pages/chatgroups/postfriends.vue","webpack:///src/pages/chatgroups/postfriends.vue","webpack:///./src/pages/chatgroups/postfriends.vue?3bec","webpack:///./src/pages/chatgroups/newgroup.vue?6049","webpack:///src/pages/chatgroups/newgroup.vue","webpack:///./src/pages/chatgroups/newgroup.vue","webpack:///./src/pages/chatgroups/newgroup.vue?64be","webpack:///./src/pages/chatgroups/addmembers.vue?5a2e","webpack:///src/pages/chatgroups/addmembers.vue","webpack:///./src/pages/chatgroups/addmembers.vue","webpack:///./src/pages/chatgroups/addmembers.vue?948e","webpack:///./src/pages/chatgroups/groupinfo.vue?a84f","webpack:///src/pages/chatgroups/groupinfo.vue","webpack:///./src/pages/chatgroups/groupinfo.vue","webpack:///./src/pages/chatgroups/groupinfo.vue?7186","webpack:///./src/pages/chatgroups/groupmembers.vue?1655","webpack:///src/pages/chatgroups/groupmembers.vue","webpack:///./src/js/routes.js","webpack:///./src/pages/chatgroups/groupmembers.vue","webpack:///./src/pages/chatgroups/groupmembers.vue?db45","webpack:///src/components/app.vue","webpack:///./src/components/app.vue?8ba8","webpack:///./src/components/app.vue","webpack:///./src/components/app.vue?844c","webpack:///./src/pages/store/AuthModule.js","webpack:///./src/pages/store/FileModule.js","webpack:///./src/pages/store/db.js","webpack:///./src/pages/store/ChatModule.js","webpack:///./src/pages/store/ChatGroupModule.js","webpack:///./src/pages/store/store.js","webpack:///./src/js/app.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","doc","document","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","location","hash","win","window","navigator","userAgent","history","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","ex","firebase","registerVersion","console","warn","_typeof","assertThisInitialized","self","hookCallback","some","hooks","apply","arguments","isArray","input","Array","toString","isObject","isUndefined","isNumber","isDate","map","arr","fn","res","length","push","hasOwnProp","a","b","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","len","momentProperties","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","config","updateOffset","isMoment","obj","absFloor","number","Math","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","compareArrays","array1","array2","dontConvert","min","lengthDiff","abs","diffs","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","args","slice","join","Error","stack","keys","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInYear","year","isLeapYear","y","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","keepTime","set$1","month","date","daysInMonth","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","MONTHS_IN_FORMAT","defaultLocaleMonths","split","defaultLocaleMonthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","h","M","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","w","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","string","exec","configFromStringAndFormat","untruncateYear","yearStr","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","result","parsedArray","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","minute","second","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","isLocal","prefix","suffix","toJSON","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","extendStatics","setPrototypeOf","__proto__","__extends","__","constructor","__assign","assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","__generator","f","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","__classPrivateFieldSet","_getPrototypeOf","getPrototypeOf","emptyObject","freeze","isUndef","isDef","isTrue","isPrimitive","_toString","isPlainObject","isRegExp","isValidArrayIndex","String","isPromise","catch","JSON","stringify","toNumber","makeMap","str","expectsLowerCase","list","isBuiltInTag","isReservedAttribute","remove","item","splice","hasOwn","cached","cache","camelizeRE","camelize","capitalize","hyphenateRE","hyphenate","ctx","boundFn","_length","start","_from","noop","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","every","keysA","keysB","looseIndexOf","once","called","ASSET_TYPES","LIFECYCLE_HOOKS","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","async","_lifecycleHooks","unicodeRegExp","isReserved","charCodeAt","def","writable","configurable","bailRE","_isServer","hasProto","inBrowser","inWeex","WXEnvironment","platform","weexPlatform","UA","isIE","isIE9","isEdge","isIOS","isFF","nativeWatch","watch","supportsPassive","opts","isServerRendering","global","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","ownKeys","Set","clear","uid","Dep","id","subs","addSub","sub","removeSub","depend","addDep","notify","update","targetStack","pushTarget","popTarget","VNode","tag","text","elm","context","componentOptions","asyncFactory","fnContext","fnOptions","fnScopeId","componentInstance","parent","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","defineProperties","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","method","original","inserted","ob","__ob__","observeArray","dep","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","src","protoAugment","copyAugment","walk","observe","asRootData","isExtensible","_isVue","defineReactive$$1","customSetter","shallow","childOb","dependArray","newVal","del","items","strats","mergeData","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","dedupeHooks","mergeAssets","hook","type","key$1","props","methods","inject","computed","provide","defaultStrat","mergeOptions","options","normalizeProps","normalized","normalizeInject","dirs","directives","def$$1","normalizeDirectives","_base","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","$options","_props","getType","getPropDefaultValue","prevShouldObserve","isSameType","expectedTypes","handleError","err","info","cur","$parent","errorCaptured","globalHandleError","invokeWithErrorHandling","handler","_handled","logError","timerFunc","isUsingMicroTask","callbacks","pending","flushCallbacks","copies","MutationObserver","setImmediate","counter","observer","textNode","createTextNode","characterData","nextTick","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","depId","normalizeEvent","passive","once$$1","capture","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","createOnceHandler","old","event","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","checkProp","altKey","preserve","normalizeChildren","normalizeArrayChildren","nestedIndex","last","isTextNode","_isVList","resolveInject","provideKey","_provided","provideDefault","resolveSlots","slots","attrs","slot","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","_normalized","$hasNormal","normalizeScopedSlot","key$2","proxyNormalSlot","proxy","renderList","render","renderSlot","fallback","bindObject","nodes","scopedSlotFn","$scopedSlots","$slots","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","loop","domProps","camelizedKey","hyphenatedKey","$event","renderStatic","isInFor","_staticTrees","tree","markStatic","staticRenderFns","_renderProxy","markOnce","markStaticNode","bindObjectListeners","existing","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","symbol","installRenderHelpers","_o","_n","_s","_t","_q","_m","_k","_b","_v","_e","_u","_g","_p","FunctionalRenderContext","contextVm","this$1","_original","isCompiled","_compiled","needNormalization","listeners","injections","scopedSlots","_scopeId","_c","cloneAndMarkFunctionalResult","renderContext","mergeProps","componentVNodeHooks","init","hydrating","_isDestroyed","keepAlive","mountedNode","prepatch","_isComponent","_parentVnode","inlineTemplate","createComponentInstanceForVnode","activeInstance","$mount","oldVnode","parentVnode","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","_renderChildren","$vnode","_vnode","$attrs","$listeners","propKeys","_propKeys","oldListeners","_parentListeners","updateComponentListeners","$forceUpdate","updateChildComponent","insert","_isMounted","callHook","_inactive","activatedChildren","activateChildComponent","destroy","deactivateChildComponent","direct","_directInactive","isInInactiveTree","$children","$destroy","hooksToMerge","createComponent","baseCtor","cid","errorComp","resolved","owner","currentRenderingInstance","owners","loading","loadingComp","sync","timerLoading","timerTimeout","$on","forceRender","renderCompleted","ensureCtor","reason","component","delay","timeout","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","extractPropsFromVNodeData","functional","vnodes","createFunctionalComponent","nativeOn","abstract","toMerge","_merged","mergeHook$1","installComponentHooks","f1","f2","normalizationType","alwaysNormalize","is","simpleNormalizeChildren","pre","applyNS","force","class","registerDeepBindings","_createElement","comp","getFirstComponentChild","remove$1","$off","_target","onceHandler","setActiveInstance","prevActiveInstance","handlers","_hasHookEvent","$emit","queue","waiting","flushing","currentFlushTimestamp","getNow","timeStamp","flushSchedulerQueue","watcher","before","run","activatedQueue","updatedQueue","callActivatedHooks","_watcher","callUpdatedHooks","emit","uid$2","Watcher","expOrFn","isRenderWatcher","_watchers","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","path","segments","parsePath","cleanupDeps","queueWatcher","oldValue","evaluate","teardown","_isBeingDestroyed","sharedPropertyDefinition","sourceKey","initState","propsOptions","initProps","initMethods","getData","initData","watchers","_computedWatchers","isSSR","userDef","computedWatcherOptions","defineComputed","initComputed","createWatcher","initWatch","shouldCache","createComputedGetter","createGetterInvoker","$watch","uid$3","super","superOptions","modifiedOptions","modified","latest","sealed","sealedOptions","resolveModifiedOptions","extendOptions","components","Vue","_init","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","Comp","initProps$1","initComputed$1","mixin","use","getComponentName","pattern","pruneCache","keepAliveInstance","filter","cachedNode","pruneCacheEntry","current","cached$$1","_uid","vnodeComponentOptions","_componentTag","initInternalComponent","_self","$root","$refs","initLifecycle","_events","initEvents","parentData","initRender","initInjections","initProvide","el","initMixin","dataDef","propsDef","$set","$delete","immediate","stateMixin","hookRE","$once","i$1","cbs","eventsMixin","_update","prevEl","$el","prevVnode","restoreActiveInstance","__patch__","__vue__","lifecycleMixin","$nextTick","_render","ref","renderMixin","patternTypes","builtInComponents","KeepAlive","include","exclude","Number","created","destroyed","mounted","configDef","util","defineReactive","delete","observable","plugin","installedPlugins","_installedPlugins","unshift","install","initUse","initMixin$1","definition","initAssetRegisters","initGlobalAPI","ssrContext","acceptValue","attr","isEnumeratedAttr","isValidContentEditableValue","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","parentNode","childNode","mergeClassData","staticClass","dynamicClass","stringifyClass","renderClass","stringified","stringifyArray","stringifyObject","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","isTextInputType","query","selected","nodeOps","tagName","multiple","createElementNS","namespace","createComment","insertBefore","newNode","referenceNode","removeChild","appendChild","nextSibling","setTextContent","textContent","setStyleScope","scopeId","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","typeA","typeB","sameInputType","createKeyToOldIdx","beginIdx","endIdx","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","removeAttribute","baseSetAttr","convertEnumeratedValue","setAttributeNS","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","chr","index$1","expressionPos","expressionEndPos","klass","validDivisionCharRE","parseFilters","exp","prev","filters","inSingle","inDouble","inTemplateString","inRegex","curly","square","paren","lastFilterIndex","trim","pushFilter","wrapFilter","baseWarn","range","pluckModuleFunction","addProp","dynamic","rangeSetItem","plain","addAttr","dynamicAttrs","addRawAttr","attrsMap","attrsList","addDirective","isDynamicArg","prependModifierMarker","addHandler","important","events","right","middle","native","nativeEvents","newHandler","getBindingAttr","getStatic","dynamicValue","getAndRemoveAttr","staticValue","removeFromMap","getAndRemoveAttrByRegex","end","genComponentModel","valueExpression","assignment","genAssignmentCode","lastIndexOf","eof","isStringStart","parseString","parseBracket","parseModel","inBracket","stringQuote","target$1","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","currentTarget","ownerDocument","updateDOMListeners","change","normalizeEvents","svgContainer","updateDOMProps","oldProps","_value","strCur","shouldUpdateValue","innerHTML","firstChild","checkVal","composing","notInFocus","isNotInFocusAndDirty","_vModifiers","isDirtyWithModifiers","parseStyleText","cssText","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","checkChild","styleData","getStyle","whitespaceRE","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","_leaveCb","cancelled","transition","_enterCb","nodeType","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","rm","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","patch","backend","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","nested","ownerArray","isReactivated","initComponent","innerNode","activate","reactivateComponent","setScope","createChildren","invokeCreateHooks","pendingInsert","isPatchable","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","childElm","createRmCb","findIdxInOld","oldCh","patchVnode","removeOnly","hydrate","newCh","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","updateChildren","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","hasChildNodes","childrenMatch","fullInvoke","isInitialPatch","isRealElement","hasAttribute","oldElm","patchable","i$2","createPatchFunction","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","dispatchEvent","locateNode","platformDirectives","transition$$1","originalDisplay","__vOriginalDisplay","display","unbind","transitionProps","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","isNotTextNode","isVShowDirective","Transition","hasParentTransition","_leaving","oldRawChild","oldChild","isSameChild","delayedLeave","moveClass","callPendingCbs","_moveCb","recordPosition","newPos","getBoundingClientRect","applyTranslation","oldPos","dx","left","dy","top","moved","transform","WebkitTransform","transitionDuration","platformComponents","TransitionGroup","beforeMount","kept","prevChildren","rawChildren","transitionData","removed","c$1","updated","hasMove","_reflow","offsetHeight","propertyName","_hasMove","cloneNode","HTMLUnknownElement","HTMLElement","updateComponent","mountComponent","defaultTagRE","regexEscapeRE","buildRegex","delimiters","open","close","klass$1","staticKeys","transformNode","classBinding","genData","decoder","style$1","styleBinding","he","html","isUnaryTag","canBeLeftOpenTag","isNonPhrasingTag","attribute","dynamicArgAttribute","ncname","qnameCapture","startTagOpen","startTagClose","endTag","doctype","comment","conditionalComment","isPlainTextElement","reCache","decodingMap","encodedAttr","encodedAttrWithNewLines","isIgnoreNewlineTag","shouldIgnoreFirstNewline","decodeAttr","shouldDecodeNewlines","re","warn$2","transforms","preTransforms","postTransforms","platformIsPreTag","platformMustUseProp","platformGetTagNamespace","onRE","dirRE","forAliasRE","forIteratorRE","stripParensRE","dynamicArgRE","argRE","bindRE","modifierRE","slotRE","lineBreakRE","whitespaceRE$1","decodeHTMLCached","createASTElement","makeAttrsMap","rawAttrsMap","parse","template","isPreTag","root","currentParent","preserveWhitespace","whitespaceOption","whitespace","inPre","closeElement","element","trimEndingWhitespace","processed","processElement","if","elseif","else","addIfCondition","block","forbidden","findPrevElement","slotScope","slotTarget","lastNode","lastTag","expectHTML","isUnaryTag$$1","canBeLeftOpenTag$$1","endTagLength","stackedTag","reStackedTag","rest$1","all","chars","parseEndTag","textEnd","commentEnd","shouldKeepComment","substring","advance","conditionalEnd","doctypeMatch","endTagMatch","curIndex","startTagMatch","parseStartTag","handleStartTag","rest","unarySlash","unary","shouldDecodeNewlinesForHref","lowerCasedTag","lowerCasedTagName","parseHTML","comments","outputSourceRange","start$1","ieNSBug","ieNSPrefix","guardIESVGBug","processPre","processRawAttrs","processFor","processIf","processOnce","end$1","tagRE","tokenValue","rawTokens","parseText","processKey","for","checkInFor","processRef","slotTargetDynamic","getRawBindingAttr","slotBinding","getSlotName","slotBinding$1","ref$1","dynamic$1","slotContainer","processSlotContent","slotName","processComponent","syncGen","isDynamic","hasBindings","parseModifiers","camel","argMatch","processAttrs","inMatch","iteratorMatch","iterator1","iterator2","parseFor","condition","ifConditions","cloneASTElement","modules$1","preTransformNode","typeBinding","ifCondition","ifConditionExtra","hasElse","elseIfCondition","branch0","branch1","branch2","isStaticKey","isPlatformReservedTag","baseOptions","_warn","code","genSelect","valueBinding","trueValueBinding","falseValueBinding","genCheckboxModel","genRadioModel","needCompositionGuard","genDefaultModel","reduce","genStaticKeys","genStaticKeysCached","optimize","markStatic$1","static","isDirectChildOfTemplateFor","l$1","markStaticRoots","staticInFor","staticRoot","fnExpRE","fnInvokeRE","simplePathRE","esc","tab","space","up","down","keyNames","genGuard","modifierCode","stop","prevent","ctrl","alt","meta","genHandlers","staticHandlers","dynamicHandlers","handlerCode","genHandler","isMethodPath","isFunctionExpression","isFunctionInvocation","genModifierCode","keyModifier","genFilterCode","genKeyFilter","keyVal","keyCode","keyName","baseDirectives","wrapListeners","wrapData","cloak","CodegenState","dataGenFns","maybeComponent","onceId","generate","ast","state","genElement","staticProcessed","genStatic","onceProcessed","genOnce","forProcessed","genFor","ifProcessed","genIf","genChildren","genProps","bind$$1","genSlot","componentName","genData$2","genComponent","originalPreState","altGen","altEmpty","genIfConditions","conditions","genTernaryExp","altHelper","needRuntime","hasRuntime","gen","genDirectives","containsSlotChild","needsKey","generatedSlots","genScopedSlot","inlineRenderFns","genInlineTemplate","isLegacySyntax","reverseProxy","checkSkip","altGenElement","altGenNode","el$1","normalizationType$1","needsNormalization","getNormalizationType","genNode","genComment","transformSpecialNewlines","genText","staticProps","dynamicProps","createFunction","errors","createCompileToFunctionFn","compile","compiled","fnGenErrors","baseCompile","div","finalOptions","tips","tip","compileToFunctions","getShouldDecode","href","idToTemplate","mount","documentElement","outerHTML","container","getOuterHTML","asyncGeneratorStep","_next","_throw","instance","Constructor","Device","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","nwjs","screenWidth","width","screenHeight","height","nw","process","versions","Support","touch","os","osVersion","webView","standalone","matchMedia","webview","pixelRatio","devicePixelRatio","prefersColorScheme","theme","ReferenceError","subClass","superClass","_defineProperties","descriptor","protoProps","maxTouchPoints","DocumentTouch","pointerEvents","PointerEvent","passiveListener","gestures","intersectionObserver","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_a$1","tslib","logger$1","ERRORS","ERROR_FACTORY","ErrorFactory","PLATFORM_LOG_STRING","logger","Logger","FirebaseAppImpl","firebase_","e_1","_this","isDeleted_","name_","automaticDataCollectionEnabled_","automaticDataCollectionEnabled","options_","deepCopy","ComponentContainer","_addComponent","Component","INTERNAL","component$1","e_1_1","return","checkDestroyed_","removeApp","getProviders","provider","_getService","instanceIdentifier","getProvider","getImmediate","identifier","_removeServiceInstance","clearInstance","addComponent","debug","_addOrOverwriteComponent","addOrOverwriteComponent","appName","log","createFirebaseNamespace","firebaseAppImpl","apps","Map","initializeApp","rawConfig","contains","app","libraryKeyOrName","variant","library","libraryMismatch","versionMismatch","warning","registerComponent","setLogLevel","onLog","logCallback","setUserLogHandler","SDK_VERSION","useAsService","serviceNamespace","appArg","serviceProps","deepExtend","serviceFxn","multipleInstances","createFirebaseNamespaceCore","extendNamespace","createSubscribe","PlatformLoggerService","getPlatformInfoString","getComponent","isVersionServiceProvider","service","logString","isBrowser","sdkVersion","isNode","firebase$1","registerCoreComponents","instanceFactory","instantiationMode","setInstantiationMode","setMultipleInstances","setServiceProps","Provider","instances","instancesDeferred","normalizedIdentifier","normalizeInstanceIdentifier","deferred","Deferred","getOrInitializeService","promise","optional","setComponent","isComponentEager","entries","instanceDeferred","services","isComponentSet","normalizeIdentifierForFactory","providers","CONSTANTS","NODE_CLIENT","NODE_ADMIN","assert","assertion","message","assertionError","stringToByteArray","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","webSafe","init_","byteToCharMap","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","bytes","c1","fromCharCode","c2","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","byte4","ENCODED_VALS","ENCODED_VALS_WEBSAFE","base64Decode","wrapCallback","getUA","FirebaseError","_super","captureStackTrace","serviceName","customData","fullCode","replaceTemplate","fullMessage","PATTERN","jsonEval","decode","header","claims","signature","Sha1","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","lengthMinusBlock","inbuf","digest","totalBits","ObserverProxy","executor","onNoObservers","observers","unsubscribes","observerCount","task","finalized","forEachObserver","complete","subscribe","nextOrObserver","methods_1","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","errorPrefix","fnName","argumentNumber","argName","onError","base64Encode","utf8Bytes","isAdmin","isBrowserExtension","runtime","chrome","browser","isElectron","isEmpty","isMobileCordova","isNodeSdk","isReactNative","isUWP","isValidFormat","isValidTimestamp","validSince","validUntil","issuedAtTime","contextObj","querystring","querystringParams","_loop_1","arrayVal","encodeURIComponent","querystringDecode","safeGet","high","validateArgCount","minCount","maxCount","argCount","argError","validateCallback","validateContextObject","validateNamespace","t7ctx","Template7Context","Template7Utils","quoteSingleRexExp","quoteDoubleRexExp","escape","helperToSlices","shiftIndex","helperParts","slices","part","blockQuoteRegExp","openingQuote","hashParts","hashName","hashContent","stringToBlocks","blocks","stringBlocks","content","contextName","helperSlices","helperName","isPartial","helperContext","helperHash","helperContent","elseContent","toSkip","foundClosed","foundElse","depth","inverseContent","parseJsVariable","variable","partName","parseJsParents","parents","levelsUp","getCompileVar","newDepth","dataLevel","getCompiledArguments","contextArray","Template7Helpers","_partial","partialName","Template7Class","partials","inverse","unless","each","reverse","first","with","delimiter","delimeter","js","execute","re1","re2","Template7","eval","js_if","js_compare","Template7Options","Template7Partials","getCompileFn","getCompileInverse","resultString","compiledArguments","level","parentsString","dynamicHelper","rendered","registerHelper","helpers","unregisterHelper","registerPartial","unregisterPartial","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","title","argv","addListener","off","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","promisifyRequest","request","onsuccess","onerror","promisifyRequestCall","promisifyCursorRequestCall","Cursor","proxyProperties","ProxyClass","targetProp","properties","proxyRequestMethods","proxyMethods","proxyCursorRequestMethods","Index","_index","cursor","_cursor","_request","ObjectStore","store","_store","Transaction","idbTransaction","_tx","oncomplete","onabort","UpgradeDB","db","oldVersion","transaction","_db","DB","IDBIndex","IDBCursor","methodName","createIndex","IDBObjectStore","objectStore","IDBTransaction","createObjectStore","IDBDatabase","funcName","nativeObject","getAll","count","iterateCursor","continue","openDb","upgradeCallback","indexedDB","onupgradeneeded","deleteDb","ctor","superCtor","super_","TempCtor","LogLevel","levelStringToEnum","DEBUG","VERBOSE","INFO","WARN","ERROR","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","logLevel","_logLevel","_logHandler","_userLogHandler","newLevel","inst","customLogLevel","userLogHandler","ignored","instances_1","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","arrayWithHoles","iterableToArrayLimit","nonIterableRest","pna","objectKeys","Duplex","inherits","Readable","Writable","readable","allowHalfOpen","onend","_writableState","onEndNT","highWaterMark","_readableState","_destroy","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","Uint8Array","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","write","fromString","isBuffer","checked","copy","buffer","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","objectToString","isBoolean","isNull","isNullOrUndefined","isString","isSymbol","isError","isNativeReflectConstruct","_construct","Parent","Class","construct","ERROR_DESCRIPTION_MAP","isServerError","getInstallationsEndpoint","INSTALLATIONS_API_URL","projectId","extractAuthTokenInfoFromResponse","response","requestStatus","expiresIn","responseExpiresIn","creationTime","getErrorFromResponse","requestName","responseJson","errorData","json","serverCode","serverMessage","serverStatus","status","getHeaders","apiKey","Headers","Accept","getHeadersWithAuth","appConfig","refreshToken","headers","append","INTERNAL_AUTH_VERSION","getAuthorizationHeader","retryIfServerError","createInstallationRequest","fid","endpoint","responseValue","authVersion","appId","fetch","ok","registrationStatus","authToken","sleep","VALID_FID_PATTERN","generateFid","fidByteArray","crypto","msCrypto","getRandomValues","encode","getKey","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","channel","getBroadcastChannel","postMessage","closeBroadcastChannel","broadcastFidChange","callbacks_1","callbacks_1_1","broadcastChannel","BroadcastChannel","onmessage","OBJECT_STORE_NAME","dbPromise","getDbPromise","upgradeDB","tx","put","updateFn","newValue","getInstallationEntry","registrationPromise","installationEntry","oldEntry","clearTimedOutRequest","updateOrCreateInstallationEntry","entryWithPromise","onLine","registrationPromiseWithError","inProgressEntry","registrationTime","registeredInstallationEntry","registerInstallation","waitUntilFidRegistration","triggerRegistrationIfNecessary","entry","updateInstallationRequest","generateAuthTokenRequest","platformLoggerProvider","platformLogger","getGenerateAuthTokenEndpoint","installation","refreshAuthToken","dependencies","forceRefresh","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenExpired","isAuthTokenValid","updateAuthTokenRequest","waitUntilAuthTokenRequest","inProgressAuthToken","requestTime","makeAuthTokenRequestInProgressEntry","updatedInstallationEntry","fetchAuthTokenFromServer","completeInstallationRegistration","deleteInstallationRequest","getDeleteEndpoint","onIdChange","callbackSet","addCallback","removeCallback","getMissingValueError","valueName","registerInstallations","configKeys_1","configKeys_1_1","extractAppConfig","getId","getToken","deleteInstallation","arg1","arg2","arg3","copyProps","SafeBuffer","FUNC_ERROR_TEXT","PLACEHOLDER","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","types","require","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","random","nativeReverse","DataView","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","skip","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","criteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","MAX_ARRAY_LENGTH","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","flatten","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","defer","resolver","memoized","Cache","negate","overArgs","funcsLength","partial","partialRight","rearg","gt","gte","isInteger","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","toPairs","toPairsIn","camelCase","word","upperFirst","kebabCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","over","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","multiply","multiplier","multiplicand","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","position","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isElement","isEqual","isEqualWith","isMatch","isMatchWith","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","padStart","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startsWith","sum","sumBy","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","takeCount","iterIndex","commit","wrapped","webpackPolyfill","devtoolHook","forEachValue","Module","rawModule","_children","_rawModule","rawState","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","register","getNamespace","targetModule","newModule","rawChildModule","unregister","isRegistered","Store","plugins","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","payload","installModule","resetStoreVM","_devtoolHook","targetState","replaceState","mutation","prepend","subscribeAction","devtoolPlugin","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","_vm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","isRoot","parentState","getNestedState","moduleName","noNamespace","_type","_payload","_options","unifyObjectStyle","gettersProxy","splitPos","localType","makeLocalGetters","makeLocalContext","registerMutation","rootGetters","registerAction","rawGetter","registerGetter","_Vue","beforeCreate","vuexInit","$store","applyMixin","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","index_esm","createNamespacedHelpers","_setPrototypeOf","arr2","arrayLikeToArray","minLen","moment","symbolMap","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","suffixes","1","5","8","70","80","2","7","20","50","3","4","100","6","9","10","30","60","90","relativeTimeWithPlural","num","forms","lastDigit","last2Digits","relativeTimeWithMutation","mutationTable","softMutation","lastNumber","translate","monthsParseExact","ll","lll","llll","plural","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","0","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","special","relativeTimeWithSingular","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun","processHoursFunction","rnds8","rnds","byteToHex","bth","writableStream","WritableStream","abortController","AbortController","blobConstructor","Blob","xhr","getXHR","XMLHttpRequest","XDomainRequest","checkTypeSupport","responseType","haveArrayBuffer","haveSlice","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","vbArray","VBArray","stream","rStates","readyStates","UNSENT","OPENED","HEADERS_RECEIVED","LOADING","DONE","IncomingMessage","fetchTimer","_mode","rawHeaders","trailers","rawTrailers","_fetchResponse","url","statusCode","statusMessage","statusText","capability","_destroyed","_resumeFetch","abort","pipeTo","reader","getReader","_xhr","_pos","responseURL","getAllResponseHeaders","_charset","mimeType","charsetMatch","_read","_onXHRProgress","readyState","responseBody","responseText","MSStreamReader","onprogress","onload","readAsArrayBuffer","Stream","Transform","PassThrough","ReadableState","EventEmitter","EElistenerCount","emitter","OurUint8Array","debugUtil","debuglog","StringDecoder","BufferList","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","defaultEncoding","awaitDrain","readingMore","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","isPaused","setEncoding","enc","howMuchToRead","computeNewHighWaterMark","emitReadable_","maybeReadMore_","nReadingNextTick","resume_","fromList","hasStrings","nb","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","xs","nOrig","doRead","pipe","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","pause","dests","ev","paused","_fromList","ReflectOwnKeys","R","ReflectApply","NumberIsNaN","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","doError","originalListener","spliceOne","rawListeners","eventNames","emitErrorNT","readableDestroyed","writableDestroyed","errorEmitted","ending","finished","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","final","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","hasInstance","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","_transform","_flush","_this2","err2","punycode","Url","protocol","slashes","auth","host","port","hostname","pathname","urlParse","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","qm","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","isAbsolute","DESCRIPTORS","$export","redefine","META","KEY","$fails","shared","setToStringTag","wks","wksExt","wksDefine","enumKeys","anObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$GOPS","$DP","$keys","gOPD","dP","gOPN","$Symbol","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","findChild","setSymbolDesc","it","protoDesc","sym","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","G","F","es6Symbols","wellKnownSymbols","S","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","LIBRARY","hide","Iterators","$iterCreate","ITERATOR","BUGGY","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","IteratorPrototype","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","windowNames","getWindowNames","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","O","ignoreCase","multiline","unicode","sticky","enumBugKeys","cof","forbiddenField","pIE","IE8_DOM_DEFINE","getKeys","Properties","$at","iterated","point","$find","forced","defined","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","classof","aFunction","anInstance","forOf","speciesConstructor","microtask","newPromiseCapabilityModule","perform","promiseResolve","v8","$Promise","newPromiseCapability","FakePromise","PromiseRejectionEvent","isThenable","isReject","reaction","exited","fail","domain","_h","onHandleUnhandled","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","onrejectionhandled","$reject","$resolve","onFulfilled","onRejected","C","$$reject","iter","$index","alreadyCalled","race","__webpack_exports__","ResizeObserver","initCompat","msie","rv","getInternetExplorerVersion","compareAndNotify","offsetWidth","addResizeHandlers","_resizeObject","contentDocument","defaultView","removeResizeHandlers","beforeDestroy","GlobalVue","SRC","$toString","TPL","inspectSource","safe","dPs","Empty","createDict","iframeDocument","iframe","contentWindow","USE_SYMBOL","searchString","un","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_46e105de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","ArrayProto","core","onFinally","ARG","T","B","tryGet","callee","cel","setTask","clearTask","MessageChannel","Dispatch","port2","port1","importScripts","promiseCapability","$Object","stat","bitmap","gOPS","symbols","colorNameToHex","isColorName","HexToRgba","ShadeColor","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","SPECIES","SAFE_CLOSING","riter","skipClosing","MATCH","isArrayIter","createProperty","getIterFn","arrayLike","aLen","mapfn","mapping","iterFn","copyright","__e","toAbsoluteIndex","IS_INCLUDES","own","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","fails","px","IS_WRAP","virtual","PromiseCapability","$$resolve","$includes","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","hiddenKeys","$flags","define","TO_STRING_TAG","DOMIterables","Collection","TO_STRING","__g","getIteratorMethod","FProto","nameRE","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","ObserveVisibility","VisibilityState","_classCallCheck","frozen","createObserver","destroyObserver","_leading","throttleOptions","lastState","currentArgs","throttled","_len","_key","_clear","oldResult","IntersectionObserver","intersectingEntry","isIntersecting","intersectionRatio","disconnect","_ref2","_vue_visibilityState","_ref3","deepEqual","val1","val2","Attributes","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","currentScript","pageSource","inlineScriptSourceRegExp","inlineScriptSource","stackDetails","scriptLocation","line","currentLocation","scripts","check","buggy","getOwnPropertyDescriptors","getDesc","isIterable","Op","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","displayName","isGeneratorFunction","genFun","mark","awrap","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","UNSCOPABLES","BREAK","RETURN","spaces","ltrim","rtrim","exporter","ALIAS","FORCE","macrotask","WebKitMutationObserver","toggle","$iterators","ArrayValues","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","addToUnscopables","Arguments","inheritIfRequired","$trim","$Number","BROKEN_COF","TRIM","argument","third","maxCode","digits","__vue_component__","vue_resize__WEBPACK_IMPORTED_MODULE_0__","vue_observe_visibility__WEBPACK_IMPORTED_MODULE_1__","scrollparent__WEBPACK_IMPORTED_MODULE_2__","scrollparent__WEBPACK_IMPORTED_MODULE_2___default","itemsLimit","_defineProperty","enumerableOnly","_objectSpread2","_arrayLikeToArray","_createForOfIteratorHelper","_unsupportedIterableToArray","normalCompletion","didErr","required","keyField","validator","simpleArray","normalizeComponent","script","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","shadowRoot","originalRender","__vue_script__","itemSize","minItemSize","sizeField","typeField","pageMode","prerender","emitUpdate","pool","totalSize","ready","hoverKey","sizes","computedMinSize","$_computedMinItemSize","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","removeListeners","addView","nonReactive","used","unuseView","fake","unusedViews","nr","unusedPool","handleResize","handleScroll","continuous","$_refreshTimout","handleVisibilityChange","isVisible","_this3","boundingClientRect","checkItem","startIndex","endIndex","checkPositionDiff","views","scroll","getScroll","positionDiff","oldI","itemsLimitError","$_continuous","_i2","unusedIndex","_i3","$_sortTimer","sortViews","getListenerTarget","scrollState","isVertical","bounds","boundsSize","innerHeight","innerWidth","scrollTop","clientHeight","scrollLeft","clientWidth","addListeners","listenerTarget","scrollToItem","scrollToPosition","_this4","viewA","viewB","__vue_render__","_obj","_obj$1","hover","mouseenter","mouseleave","_withStripped","__vue_script__$1","RecycleScroller","$_resizeObserver","_step","_iterator","detail","contentRect","vscrollData","vscrollParent","vscrollResizeObserver","validSizes","itemsWithSize","$_undefinedMap","forceUpdate","$_updates","$_undefinedSizes","activated","deactivated","onScrollerResize","scroller","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","scrollHeight","__vue_render__$1","resize","visible","itemWithSize","__vue_component__$1","__vue_component__$2","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","_loop","onVscrollUpdate","onVscrollUpdateSize","$_pendingSizeUpdate","computeSize","$_watchData","_ref","applySize","onResize","unobserve","_event$detail$content","installComponents","componentsPrefix","registerComponents","setDesc","FREEZE","preventExtensions","setMeta","NEED","fastKey","getWeak","onFreeze","ps","SVGElement","scrollingElement","$startsWith","getCurrentScript","promise_default","_asyncToGenerator","define_property","define_property_default","allCountries","countriesIso","country","countries","iso2","dialCode","areaCodes","examples_mobile","metadata_min_json","VALID_PUNCTUATION","matchesEntirely","regular_expression","ParseError","semver_compare","pa","pb","na","metadata_classCallCheck","_createClass","Metadata","is_object","type_of","validateMetadata","setVersion","countryCode","v1","v2","v3","nonGeographic","nonGeographical","getCountryMetadata","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","selectNumberingPlan","hasCountry","numberingPlan","NumberingPlan","hasCallingCode","getNumberingPlanMetadata","getCountryCodeForCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","country_phone_code_to_countries","country_calling_codes","globalMetadataObject","_getFormats","getDefaultCountryMetadataForRegion","Format","_getNationalPrefixFormattingRule","_nationalPrefixForParsing","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","_type2","metadata_getType","Type","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","getCountryCallingCode","countryCallingCode","isSupportedCountry","v4","create_extension_pattern","purpose","single_extension_characters","RFC3966_EXTN_PREFIX","EXTN_PATTERNS_FOR_PARSING","EXTN_PATTERNS_FOR_MATCHING","EXTN_PATTERN","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumber","DIGITS","parseDigit","character","parseDigits","_isArray","digit","parseIncompletePhoneNumber","parsePhoneNumberCharacter","NON_FIXED_LINE_PHONE_TYPES","getNumberType","nationalNumber","phone","is_of_type","_NON_FIXED_LINE_PHONE","checkNumberLengthForType","type_info","possible_lengths","mobile_type","mergeArrays","actual_length","minimum_length","isPossiblePhoneNumber","chooseCountryByCountryCallingCode","isPossibleNumber","isNonGeographicCallingCode","isInternational","CAPTURING_DIGIT_PATTERN","SINGLE_IDD_PREFIX","stripIDDPrefix","countryMetadata","IDDPrefixPattern","matchedGroups","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","parseRFC3966","_part$split2","formatRFC3966","isValidNumber","format_defineProperty","DEFAULT_OPTIONS","formatExtension","formattedNumber","extension","format_formatNumber","_objectSpread","addExtension","formatNationalNumber","fromCountry","getIDDPrefix","humanReadable","formattedForSameCountryCallingCode","toCountryCallingCode","toCountryMetadata","fromCountryMetadata","formatIDDSameCountryCallingCodeNumber","FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","useInternationalSeparator","useNationalPrefixFormattingRule","internationalFormat","applyInternationalSeparatorStyle","formatAs","availableFormats","nationalNnumber","leadingDigitsPatterns","lastLeadingDigitsPattern","chooseFormatForNumber","PhoneNumber_defineProperty","PhoneNumber_defineProperties","PhoneNumber_PhoneNumber","PhoneNumber","PhoneNumber_classCallCheck","_metadata","isCountryCode","phoneNumber","PhoneNumber_objectSpread","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","defaultCountry","_parseInput","throwOnError","startsAt","extractFormattedPhoneNumber","withExtensionStripped","number_without_extension","extractExtension","parseInput","formattedPhoneNumber","_parsePhoneNumber","defaultCallingCode","_extractCountryCallin","parse_extractCountryCallingCode","_stripNationalPrefixA","stripNationalPrefixAndCarrierCodeFromCompleteNumber","carrierCode","exactCountry","findCountryCode","parsePhoneNumber","hasSelectedNumberingPlan","extended","possible","parse_result","stripNationalPrefixAndCarrierCode","prefixPattern","prefixMatch","capturedGroupsCount","nationalPhoneNumber","possibleCountries","_findCountryCode","_stripNationalPrefixA2","numberWithoutIDD","_extractCountryCallin2","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","_countryCallingCode","possibleShorterNumber","possibleShorterNationalNumber","parsePhoneNumber_defineProperty","parsePhoneNumber_parsePhoneNumber","parsePhoneNumber_objectSpread","parsePhoneNumber_typeof","es6_parsePhoneNumber_defineProperty","parsePhoneNumber_slicedToArray","parsePhoneNumber_arrayWithHoles","parsePhoneNumber_iterableToArrayLimit","parsePhoneNumber_nonIterableRest","normalizeArguments","_Array$prototype$slic2","arg_1","arg_2","arg_3","arg_4","es6_parsePhoneNumber_objectSpread","parsePhoneNumberFromString_defineProperty","parsePhoneNumberFromString","parsePhoneNumberFromString_objectSpread","parsePhoneNumberFromString_parsePhoneNumberFromString","_normalizeArguments","getExampleNumber","examples","trimAfterFirstMatch","SECOND_NUMBER_START_PATTERN","parsePreCandidate","candidate","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","isValidPreCandidate","followingText","_pZ","pZ","PZ","pNd","_pL","pL","pL_regexp","pSc","pSc_regexp","pMn","pMn_regexp","latinLetterRegexp","isLatinLetter","letter","isInvalidPunctuationSymbol","NON_PARENS","LEAD_CLASS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","isValidCandidate","leniency","previousChar","lastCharIndex","nextChar","findPhoneNumbers_defineProperties","findPhoneNumbers_defineProperty","findPhoneNumbers_VALID_PHONE_NUMBER","WHITESPACE_IN_THE_BEGINNING_PATTERN","PUNCTUATION_IN_THE_END_PATTERN","findPhoneNumbers_PhoneNumberSearch","PhoneNumberSearch","findPhoneNumbers_classCallCheck","parseCandidate","endsAt","last_match","hasNext","LRUCache_defineProperties","LRUCache_classCallCheck","Node","LRUCache","ensureLimit","RegExpCache_defineProperties","RegExpCache_RegExpCache","RegExpCache","RegExpCache_classCallCheck","regExp","Leniency","POSSIBLE","VALID","containsOnlyValidXChars","STRICT_GROUPING","regExpCache","candidateString","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","allNumberGroupsRemainGrouped","EXACT_GROUPING","allNumberGroupsAreExactlyPresent","charAtIndex","charAtNextIndex","isNumberMatch","MatchType","NSN_MATCH","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","nationalSignificantNumber","alternateFormat","getPatternForRegExp","formattingPattern","formatNsnUsingPattern","rfc3966Format","formatNumber","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","formattedNumberGroupIndex","FROM_DEFAULT_COUNTRY","region","getNddPrefixForRegion","Character","isDigit","getExtension","PhoneNumberMatcher_objectSpread","PhoneNumberMatcher_defineProperty","PhoneNumberMatcher_classCallCheck","PhoneNumberMatcher_defineProperties","INNER_MATCHES","leadLimit","punctuationLimit","blockLimit","MAX_LENGTH_FOR_NSN","punctuation","digitSequence","UNWANTED_END_CHAR_PATTERN","MAX_SAFE_INTEGER","PhoneNumberMatcher_PhoneNumberMatcher","PhoneNumberMatcher","maxTries","parseAndVerify","extractInnerMatch","_INNER_MATCHES","isFirstMatch","possibleInnerMatch","_group","_match","lastMatch","AsYouType_typeof","AsYouType_defineProperties","LONGEST_DUMMY_PHONE_NUMBER","DIGIT_PLACEHOLDER_MATCHER","NATIONAL_PREFIX_SEPARATORS_PATTERN","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","ELIGIBLE_FORMAT_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART_PATTERN","AsYouType_VALID_PHONE_NUMBER","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","AsYouType_AsYouType","AsYouType","optionsOrDefaultCountry","AsYouType_classCallCheck","formattedOutput","international","internationalPrefix","nationalNumberDigits","setCountry","chosenFormat","populatedNationalNumberTemplate","populatedNationalNumberTemplatePosition","initializePhoneNumberFormatsForCountry","matchingFormats","resetFormat","formattedDigits","extractFormattedDigits","getFullNumber","inputDigits","getNonFormattedNationalNumber","extractedNumber","hasPlus","AsYouType_extractFormattedPhoneNumber","startInternationalNumber","nextDigits","isCountryCallingCodeAmbiguous","determineTheCountry","extractCountryCallingCode","previousNationalPrefix","extractNationalPrefix","matchFormats","formatNationalNumberWithNextDigits","attemptToFormatCompletePhoneNumber","previouslyChosenFormat","newlyChosenFormat","chooseFormat","formatNextNationalNumberDigits","reformatNationalNumber","createFormattingTemplate","leadingDigitsPatternIndex","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","leadingDigitsPatternsCount","leadingDigitsPattern","_iterator2","_isArray2","formattedNationalNumber","formattedNationalNumberWithNationalPrefix","getSeparatorAfterNationalPrefix","spacing","getInternationalPrefix","getTemplateForNumberFormatPattern","strictPattern","nationalNumberDummyDigits","includesNationalPrefix","numberFormat","getFormatFormat","numberFormatWithNationalPrefix","_iterator3","_isArray3","cutAndStripNonPairedParens","getCountry","getNumber","isPossible","getNonFormattedTemplate","cutBeforeIndex","dangling_braces","cleared_string","_i4","_dangling_braces","stripNonPairedParens","index_es6_parsePhoneNumberFromString","parameters","index_es6_PhoneNumberSearch","index_es6_PhoneNumberMatcher","index_es6_AsYouType","index_es6_getCountryCallingCode","StylesHandler","labelColorStyle","errorColor","validColor","isFocus","color","dark","textDarkColor","inputBorderStyle","borderErrorColor","borderValidColor","isHover","borderColor","inputBoxShadowStyle","boxShadowError","boxShadowValid","boxShadowColor","inputBgColor","bgDarkColor","textColor","inputCaretStyle","caretColor","colorValue","radiusStyle","borderRadius","radiusLeftStyle","borderLeftRadius","radiusRightStyle","borderRightRadius","bgItemSelectedStyle","bgColor","loaderBgColor","VuePhoneNumberInput_InputTelvue_type_script_lang_js_","hint","disabled","readonly","loader","clearable","noCountrySelector","inputValue","labelValue","hintValue","updateHoverState","focusInput","InputTel","focus","onFocus","onBlur","keyUp","keyDown","scriptExports","functionalTemplate","injectStyles","_injectStyles","$$a","$$el","$$c","$$i","is_array","is_array_default","from_default","is_iterable","is_iterable_default","symbol_default","_updateValue","VuePhoneNumberInput_CountrySelectorvue_type_script_lang_js_","preferredCountries","onlyCountries","ignoredCountries","noFlags","countriesHeight","showCodeOnList","hasListOpen","tmpValue","indexItemToShow","itemHeight","listHeight","maxHeight","countriesList","countriesFiltered","otherCountries","countriesSorted","selectedValueIndex","tmpValueIndex","_this5","handleBlur","relatedTarget","closeList","toggleList","offsetParent","openList","CountrySelector","scrollToSelectedOnFocus","updateValue","_callee","_context","_x","arrayIndex","_this6","keyboardNav","preventDefault","searching","_this7","queryTimer","resultIndex","stopPropagation","countrySelectorLabel","countrySelectorError","phoneNumberLabel","example","index_min","VuePhoneNumberInputvue_type_script_lang_js_objectSpread","_fetchCountryCode","_mounted","VuePhoneNumberInputvue_type_script_lang_js_getShadowColor","browserLocale","userLanguage","language","src_VuePhoneNumberInputvue_type_script_lang_js_","darkColor","defaultCountryCode","translations","noValidatorState","noExample","noUseBrowserLocale","fetchCountry","results","userLocale","lastKeyPressed","codesCountries","newCountry","setLocale","PhoneNumberInput","newPhone","emitValues","shouldChooseCountry","phoneFormatted","formatInternational","phoneNumberExample","index_es6_getExampleNumber","formatNational","hasEmptyPhone","backgroundColor","bgValidColor","bgErrorColor","borderDarkColor","boxShadow","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","fetchCountryCode","t0","getAsYouTypeFormat","asYouType","getParsePhoneNumberFromString","parsing","uri","getURI","e164","backSpacePressed","lastCharacOfPhoneNumber","countryAvailable","VuePhoneNumberInputvue_type_script_lang_js_isCountryAvailable","_callee2","_context2","VuePhoneNumberInput","$$v","locals","sourceRoot","styleClass","email","amount","raveKey","currency","customerFirstname","customerLastname","customTitle","customDescription","customLogo","redirectUrl","paymentOptions","paymentPlan","hostedPayment","subaccounts","payWithRave","getpaidSetup","customer_email","txref","PBFPubKey","customer_firstname","customer_lastname","custom_title","custom_logo","redirect_url","payment_plan","payment_options","hosted_payment","click","media","sourceMap","ssrId","styleSheet","uuid","sham","Proxy","registerImmediate","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","onreadystatechange","attachEvent","aa","ca","globalThis","ba","ea","fa","da","Oa","A","Q","xa","ud","ha","ia","ja","ka","la","ma","oa","qa","ra","sa","ta","Za","va","wa","serverResponse","Aa","ya","hd","Ra","Xa","Ua","pd","rd","sd","za","firebaseEndpoint","secureTokenEndpoint","identityPlatformEndpoint","Ba","$goog_Thenable","Ca","Da","Ea","Fa","Ga","Ia","Ha","Ja","Ka","La","Na","Pa","Sa","Ta","Ma","Va","Wa","fb","Ya","$a","ab","bb","eb","gb","hb","z","ib","jb","kb","lb","mb","parentWindow","Element","Location","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Mb","Nb","Ob","Yb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","documentMode","Zb","$b","ac","cc","Qb","bc","Pb","OffscreenCanvas","getContext","dc","ec","fc","className","htmlFor","gc","mc","pc","cellpadding","cellspacing","colspan","frameborder","maxlength","nonce","role","rowspan","usemap","valign","jc","kc","ic","contentType","lc","nc","Kb","origin","oc","sc","Window","qc","rc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Ec","Gc","Kc","Fc","Yc","Zc","Oc","Lc","Mc","Ic","Jc","Nc","Hc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","defaultPrevented","button","screenY","screenX","clientY","clientX","metaKey","shiftKey","ctrlKey","pointerId","pointerType","changedTouches","srcElement","fromElement","toElement","pageX","pageY","returnValue","$c","ad","bd","cd","fd","ed","gd","jd","kd","ld","md","nd","od","qd","td","vd","detachEvent","wd","xd","yd","handleEvent","zd","Ad","Bd","Cd","V","Dd","X","Fd","Gd","Hd","Id","Kd","Ld","Md","Nd","Od","Pd","Qd","be","fe","de","Wd","Rd","Xd","H","Yd","Zd","$d","decodeURI","encodeURI","Sd","Td","Ud","Vd","Jd","ce","ee","ge","ke","je","le","me","ne","I","oe","pe","ue","ve","we","availHeight","availWidth","resizable","statusbar","toolbar","se","xe","scrollbars","noreferrer","initMouseEvent","opener","noopener","ze","Ae","Be","De","Ee","Fe","Ge","WorkerGlobalScope","He","Ie","te","Ke","Le","J","Me","localStorage","Ne","setItem","removeItem","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","___jsl","CP","We","Xe","visibilityState","Ze","toUTCString","$e","connection","ef","cf","df","ff","abcd","K","gf","kf","lf","mf","nf","of","pf","qf","rf","factorId","enrollmentTime","sf","tf","uf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","If","Jf","Kf","operation","continueUrl","Lf","languageCode","Mf","tenantId","Nf","recoverEmail","resetPassword","revertSecondFactorAddition","signIn","verifyAndChangeEmail","verifyEmail","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","canHandleCodeInApp","androidPackageName","androidMinimumVersion","androidInstallApp","iOSBundleId","dynamicLinkDomain","ag","bg","dg","cg","eg","fg","iss","aud","provider_id","sign_in_provider","tenant","is_anonymous","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","isNewUser","rawUserInfo","providerId","profile","login","screenName","ug","vg","wg","xg","yg","zg","Ag","Bg","Dg","pendingToken","requestUri","Gg","signInMethod","Hg","idToken","accessToken","oauthToken","oauthTokenSecret","Ig","id_token","access_token","secret","oauth_token_secret","postBody","Jg","oauthIdToken","oauthAccessToken","Kg","isOAuthProvider","Lg","Mg","Ng","credential","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","EMAIL_LINK_SIGN_IN_METHOD","EMAIL_PASSWORD_SIGN_IN_METHOD","$g","password","ah","bh","gh","verificationId","verificationCode","temporaryProof","dh","sessionInfo","lh","mh","rawNonce","nh","oh","ph","eventId","urlResponse","sessionId","qh","multiFactorSession","pendingCredential","Cg","Eg","Fg","N","Wg","oobCode","Xg","Yg","Zg","PROVIDER_ID","eh","fh","verify","session","ij","phoneSessionInfo","ih","phoneEnrollmentInfo","recaptchaToken","kj","phoneResponseInfo","jh","mfaPendingCredential","mfaEnrollmentId","multiFactorHint","multiFactorUid","phoneSignInInfo","gj","kh","PHONE_SIGN_IN_METHOD","getUid","yh","rh","th","uh","vh","wh","xh","zh","Ah","ActiveXObject","Bh","Ch","ontimeout","Dh","Eh","send","setRequestHeader","getResponseHeader","Gh","Hh","Fh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Wh","Vh","Uh","Xh","Yh","credentials","Request","ReadableStream","TextDecoder","Zh","$h","ai","bi","ci","Ed","Qa","FormData","withCredentials","di","ei","fi","gi","ji","li","mi","pi","qi","oi","ri","ti","ui","vi","wi","ni","getResponse","mozResponseArrayBuffer","xi","yi","zi","Ai","Bi","attributes","charset","Lb","Ci","Di","Ei","secureTokenTimeout","Fi","secureTokenHeaders","Gi","firebaseTimeout","Hi","firebaseHeaders","Ii","Ji","Ki","Li","Mi","gapi","client","Pi","si","Oi","Ni","ki","Si","Ri","Ti","Ui","Zi","setApiKey","setToken","authType","$i","aj","bj","photoUrl","jj","phoneVerificationInfo","nj","oj","pj","needConfirmation","errorMessage","qj","returnIdpCredential","rj","sj","autoCreate","tj","uj","deleteAttribute","requestType","cj","dj","ej","newEmail","fj","hj","vj","newPassword","wj","xj","yj","Wi","zj","mj","deleteProvider","Aj","Bj","Cj","Yi","Dj","recaptchaSiteKey","Ej","USER_NOT_FOUND","Fj","jf","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","Gj","Oj","Nj","Mj","where","messageHandlersFilter","dontclear","restyle","setHideOnLeave","Jj","ping","Hj","Pj","Qj","Rj","Sj","Tj","authorizedDomains","Xi","Uj","Lj","authEvent","Vj","Xj","Yj","Zj","reactNative","AsyncStorage","ak","Kj","webStorageSupport","Wj","closed","ye","getItem","lk","bk","dk","ek","fk","gk","messageChannel","onMessage","eventType","hk","ik","jk","ck","kk","keyProcessed","serviceWorker","bf","nk","keyPath","objectStoreNames","deleteDatabase","mk","pk","qk","sk","controller","af","openCursor","fbase_key","qe","uk","vk","wk","xk","zk","yk","Ak","Bk","Dk","sessionStorage","Ck","Ek","Browser","Fk","Gk","ReactNative","Hk","Worker","Ik","ports","Jk","Nk","Kk","NONE","Mk","Ok","Pk","Qk","Sk","Uk","Vk","Tk","bl","Wk","Yk","$k","al","Int32Array","cl","dl","fl","gl","hl","kl","ml","ol","$f","sl","pl","rl","handleOpenURL","sh","tl","Xk","ul","nl","ibi","apn","appDisplayName","ql","vl","xl","zl","Al","Bl","unknown","signInViaRedirect","linkViaRedirect","reauthViaRedirect","signInViaPopup","linkViaPopup","reauthViaPopup","Cl","Dl","El","Fl","Gl","Hl","yl","Il","Jl","Kl","Ll","Ml","wl","Nl","Ol","Pl","Ql","Sl","Ul","Tl","Xl","Yl","Zl","$l","auth_time","iat","expirationTime","authTime","signInProvider","signInSecondFactor","sign_in_second_factor","am","bm","cm","Rl","Vl","Wl","confirm","dm","em","fm","im","jm","km","lm","multiFactor","enrolledFactors","pm","sm","tm","um","wm","grant_type","refresh_token","Qi","xm","lastSignInTime","zm","photoURL","authDomain","Am","Bm","Cm","Z","Dm","$","Em","Fm","Gm","Hm","Im","Km","Lm","emailVerified","isAnonymous","createdAt","lastLoginAt","providerData","Mm","Nm","Om","Pm","Qm","Rm","Sm","ym","Tm","Um","om","Xm","Wm","additionalUserInfo","operationType","Ym","reload","Zm","$m","an","ga","bn","cn","dn","hc","en","stsTokenManager","redirectEventId","hn","gm","mfaInfo","nm","Ye","users","localId","providerUserInfo","rawId","Vm","passwordHash","lj","Dc","hf","kn","mn","Rk","pn","ln","nn","rn","sn","tn","vn","jn","Hn","wn","En","xn","yn","logFramework","zn","An","Bn","Cn","Gn","Fn","Jm","Dn","currentUser","Jn","_lat","Kn","Ln","Lk","languages","qn","gn","addAuthTokenListener","In","removeAuthTokenListener","continueUri","signinMethods","Vi","Mn","On","Pn","Nn","Qn","Rn","Sn","Je","Tn","Un","grecaptcha","Vn","Wn","Xn","Yn","Zn","$n","ao","bo","co","fo","go","ho","appVerificationDisabledForTesting","io","jo","eo","ko","mo","qo","uo","vo","wo","xo","yo","Persistence","LOCAL","SESSION","appVerificationDisabled","ActionCodeInfo","Operation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","Auth","AuthCredential","App","User","DOMStorageWrapper","domStorage_","prefix_","prefixedName_","storedVal","MemoryStorage","cache_","isInMemoryStorage","createStoragefor","domStorageName","domStorage","PersistentStorage","SessionStorage","logClient","LUIDGenerator","sha1","sha1Bytes","buildLogMessage_","varArgs","firstLog_","enableLogging","logger_","persistent","logWrapper","fatal","isInvalidJSONNumber","POSITIVE_INFINITY","NEGATIVE_INFINITY","MIN_NAME","MAX_NAME","nameCompare","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","ObjectToUniqueKey","splitStringBySize","segsize","dataSegs","doubleToIEEE754String","LN2","bits","hexByteString","hexByte","INTEGER_REGEXP_","intVal","exceptionGuard","setTimeoutNonBlocking","Path","pathOrString","pieceNum","pieces_","copyTo","pieceNum_","getFront","getLength","popFront","getBack","pathString","toUrlEncodedString","begin","pieces","childPathObj","childPieces","relativePath","outerPath","innerPath","inner","comparePaths","leftKeys","rightKeys","cmp","ValidationPath","errorPrefix_","parts_","byteLength_","checkValid_","MAX_PATH_LENGTH_BYTES","MAX_PATH_DEPTH","toErrorString","RepoInfo","secure","webSocketOnly","persistenceKey","includeNamespaceInQueryParams","internalHost","needsQueryParam","isCustomHost","isCacheableHost","isDemoHost","updateHost","newHost","connectionURL","connURL","toURLString","PUSH_CHARS","lastPushTime","lastRandChars","__EMPTY_NODE","MAX_NODE","parseRepoInfo","dataURL","parsedUrl","parseDatabaseURL","scheme","repoInfo","subdomain","colonInd","slashInd","questionMarkInd","pathStringDecoded","piece","decodePath","queryParams","queryString","segment","kv","decodeQuery","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","isValidKey","isValidPathString","isValidPriority","validateFirebaseDataArg","validateFirebaseData","path_","hasDotValue_1","hasActualChild_1","validateFirebaseMergeDataArg","mergePaths","curPath","prevPath","validateFirebaseMergePaths","validatePriority","validateEventType","validateKey","validatePathString","validateRootPathString","validateWritablePath","validateUrl","isValidRootPathString","validateBoolean","bool","OnDisconnect","repo_","onComplete","onDisconnectCancel","onDisconnectSet","setWithPriority","onDisconnectSetWithPriority","objectToMerge","newObjectToMerge","onDisconnectUpdate","TransactionResult","committed","snapshot","nextPushId","duplicateTime","timeStampChars","NamedNode","Wrap","getCompare","indexedValueChanged","oldNode","oldWrapped","newWrapped","minPost","MIN","KeyIndex","isDefinedOn","maxPost","makePost","indexValue","KEY_INDEX","__childrenNodeConstructor","nodeFromJSON","MAX_NODE$1","priorityHashText","validatePriorityNode","priorityNode","isLeafNode","getPriority","LeafNode","value_","priorityNode_","EMPTY_NODE","lazyHash_","updatePriority","newPriorityNode","getImmediateChild","childName","getPredecessorChildName","updateImmediateChild","newChildNode","updateChild","front","numChildren","exportFormat","toHash","compareTo","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","withIndex","isIndexed","_defaultIndexMap","PRIORITY_INDEX","PriorityIndex","aPriority","bPriority","indexCmp","SortedMapIterator","startKey","isReverse_","resultGenerator_","nodeStack_","getNext","peek","LLRBNode","RED","SortedMap","inorderTraversal","reverseTraversal","min_","minKey","maxKey","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","checkMaxDepth_","blackDepth","check_","BLACK","LLRBEmptyNode","comparator_","root_","getPredecessorKey","rightParent","getIterator","resultGenerator","getIteratorFrom","getReverseIteratorFrom","getReverseIterator","LOG_2","Base12Num","current_","mask","bits_","nextBitIsOne","buildChildSet","childList","keyFn","mapSortFn","buildBalancedTree","namedNode","base12","buildPennant","chunkSize","childTree","attachPennant","pennant","isOne","buildFrom12Array","fallbackObject","IndexMap","indexes_","indexSet_","indexKey","sortedMap","hasIndex","indexDefinition","addIndex","existingChildren","newIndex","sawIndexedValue","indexName","newIndexSet","newIndexes","addToIndexes","indexedChildren","existingSnap","newChildren","removeFromIndexes","NAME_ONLY_COMPARATOR","NAME_COMPARATOR","ChildrenNode","children_","indexMap_","Default","newIndexMap","newPriority","newImmediateChild","numKeys","allIntegerKeys","toHash_1","childHash","idx","resolveIndex_","predecessor","getFirstChildName","getFirstChild","getLastChildName","getLastChild","wrappedNode","startPost","endPost","MAX_NODE$2","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","MaxNode","MAX","setMaxNode$1","nodeFromJSON$1","node_1","childData","children_1","childrenHavePriority_1","childSet","sortedChildSet","setNodeFromJSON","__referenceConstructor","VALUE_INDEX","ValueIndex","valueNode","PathIndex","indexPath_","extractChild","snap","aChild","bChild","DataSnapshot","node_","ref_","index_","exportVal","exists","childPathString","childPath","childRef","childrenNode","hasChildren","getRef","DataEvent","eventRegistration","prevName","getPath","getParent","getEventType","getEventRunner","CancelEvent","ValueEventRegistration","callback_","cancelCallback_","context_","respondsTo","getQueryParams","getIndex","snapshotNode","eventData","cancelCB_1","cb_1","createCancelEvent","hasAnyCallback","ChildEventRegistration","callbacks_","eventToCheck","cancelCB_2","cb_2","otherKeys","thisKeys","otherCount","otherKey","thisKey","Query","repo","queryParams_","orderByCalled_","validateQueryEndpoints_","startNode","endNode","hasStart","getIndexStartValue","hasEnd","getIndexEndValue","tooManyArgsError","wrongArgTypeError","getIndexStartName","getIndexEndName","validateLimit_","hasLimit","hasAnchoredLimit","validateNoPreviousOrderByCall_","cancelCallbackOrContext","getCancelAndContextArgs_","onValueEvent","onChildEvent","cancelCallback","addEventCallbackForQuery","valueCallback","removeEventCallbackForQuery","userCallback","failureCallbackOrContext","firstCall","onceCallback","limitToFirst","limitToLast","orderByChild","parsedPath","newParams","orderByKey","orderByPriority","orderByValue","startAt","endAt","equalTo","queryObject","getQueryObject","queryIdentifier","sameRepo","samePath","sameQueryIdentifier","cancelOrContext","ExistingValueProvider","DeferredValueProvider","syncTree","syncTree_","calcCompleteEventCache","resolveDeferredLeafValue","existingVal","serverValues","resolveScalarDeferredValue","resolveComplexDeferredValue","unused","delta","existingNode","resolveDeferredValueTree","resolveDeferredValue","resolveDeferredValueSnapshot","rawPri","leafNode","OperationType","SparseSnapshotTree","childKey","remember","forget","self_1","forEachTree","prefixPath","emptyChildrenSingleton","__referenceConstructor$1","OperationSource","fromUser","fromServer","queryId","tagged","Server","forServerTaggedQuery","AckUserWrite","affectedTree","revert","ACK_USER_WRITE","operationForChild","subtree","ImmutableTree","childSnap","findRootMostMatchingPathAndValue","childExistingPathAndValue","findRootMostValueAndPath","toSet","newChild","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","nextChild","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","ListenComplete","LISTEN_COMPLETE","Overwrite","OVERWRITE","Merge","MERGE","CacheNode","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","getNode","ViewCache","eventCache_","serverCache_","updateEventSnap","eventSnap","filtered","updateServerSnap","serverSnap","getEventCache","getCompleteEventSnap","getServerCache","getCompleteServerSnap","Change","oldSnap","valueChange","VALUE","childAddedChange","CHILD_ADDED","childRemovedChange","CHILD_REMOVED","childChangedChange","newSnapshot","oldSnapshot","CHILD_CHANGED","childMovedChange","CHILD_MOVED","IndexedFilter","affectedPath","optChangeAccumulator","trackChildChange","updateFullNode","newSnap","filtersNodes","getIndexedFilter","ChildChangeAccumulator","changeMap","oldChange","oldType","getChanges","NO_COMPLETE_CHILD_SOURCE","NoCompleteChildSource_","getCompleteChild","getChildAfterChild","WriteTreeCompleteChildSource","writes_","viewCache_","optCompleteServerCache_","serverNode","calcCompleteChild","completeServerData","calcIndexedSlice","ProcessorResult","viewCache","changes","ViewProcessor","filter_","assertIndexed","applyOperation","oldViewCache","writesCache","completeCache","newViewCache","filterServerNode","overwrite","applyUserOverwrite_","applyServerOverwrite_","applyUserMerge_","applyServerMerge_","ackUserWrite","revertUserWrite_","ackUserWrite_","listenComplete_","maybeAddValueEvent_","isLeafOrEmpty","oldCompleteSnap","generateEventCacheAfterServerEvent_","changePath","oldEventSnap","shadowingWrite","newEventCache","serverCache","completeChildren","completeEventChildren","calcCompleteEventChildren","completeNode","oldEventNode","updatedPriority","calcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","changedSnap","newServerCache","oldServerSnap","serverFilter","newServerNode","newEventSnap","cacheHasChild_","changedChildren","curViewCache","writePath","applyMerge_","viewMergeTree","serverChild","childMergeTree","isUnknownDeepMerge","ackPath","changedChildren_1","changedChildren_2","mergePath","serverCachePath","oldServerNode","completeServerCache","oldEventCache","serverChildren","EventGenerator","query_","generateEventsForChanges","eventCache","eventRegistrations","moves","generateEventsForType_","registrations","filteredChanges","compareChanges_","materializedChange","materializeSingleChange_","registration","aWrapped","bWrapped","View","initialViewCache","eventRegistrations_","indexFilter","getNodeFilter","processor_","initialServerCache","initialEventCache","eventGenerator_","getQuery","getCompleteServerCache","loadsAllData","addEventRegistration","removeEventRegistration","cancelError","cancelEvents","path_1","maybeEvent","generateEventsForChanges_","getInitialEvents","initialChanges","SyncPoint","optCompleteServerCache","serverCacheComplete","eventCacheComplete","e_2","hadCompleteView","hasCompleteView","viewQueryId","e_2_1","getQueryViews","e_3","e_3_1","e_4","e_4_1","viewForQuery","getCompleteView","viewExistsForQuery","e_5","e_5_1","CompoundWrite","writeTree_","addWrite","rootmost","rootMostPath","addWrites","updates","newWrite","removeWrite","hasCompleteWrite","getCompleteNode","getCompleteChildren","childCompoundWrite","shadowingNode","applySubtreeWrite","writeTree","priorityWrite_1","WriteTree","visibleWrites_","allWrites_","lastWriteId_","childWrites","WriteTreeRef","addOverwrite","writeId","addMerge","getWrite","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","recordContainsPath_","resetTree_","getCompleteWriteData","treePath","writeIdsToExclude","includeHiddenWrites","mergeAtPath","layerTree_","layeredCache","subMerge","completeServerChildren","topLevelSet","merge_1","existingEventSnap","existingServerSnap","childMerge","toIterate","writeRecord","DefaultFilter_","writes","treeRoot","compoundWrite","deepNode","treePath_","existingServerCache","SyncTree","listenProvider_","syncPointTree_","pendingWriteTree_","tagToQueryMap","queryToTagMap","applyUserOverwrite","applyOperationToSyncPoints_","applyUserMerge","changeTree","affectedTree_1","applyServerOverwrite","applyServerMerge","applyListenComplete","applyTaggedQueryOverwrite","queryKey","queryKeyForTag_","parseQueryKey_","queryPath","applyTaggedOperation_","applyTaggedQueryMerge","applyTaggedListenComplete","foundAncestorDefaultView","pathToSyncPoint","sp","syncPoint","childSyncPoint","viewAlreadyExists","makeQueryKey_","getNextQueryTag_","setupListener_","maybeSyncPoint","removedAndEvents","removingDefault","covered","parentSyncPoint","newViews","collectDistinctViewsForSubTree_","newQuery","createListenerForView_","startListening","queryForListening_","tagForQuery_","hashFn","stopListening","queryToRemove","tagToRemove","removeTags_","maybeChildSyncPoint","childMap","views_1","childViews","queries","removedQuery","removedQueryKey","removedQueryTag","isDefault","queriesToStop","queries_1","childQueries","queryToStop","errorForServerCode","splitIndex","nextQueryTag_","applyOperationHelper_","syncPointTree","applyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","SnapshotHolder","rootNode_","updateSnapshot","newSnapshotNode","AuthTokenProvider","app_","authProvider_","auth_","addTokenChangeListener","removeTokenChangeListener","notifyForInvalidToken","StatsCollection","counters_","incrementCounter","StatsManager","getCollection","hashString","collections_","getOrCreateReporter","creatorFunction","reporters_","StatsListener","collection_","last_","newStats","StatsReporter","server_","statsToReport_","statsListener_","reportStats_","includeStat","stats","reportedStats","haveStatsToReport","reportStats","EventQueue","eventLists_","recursionDepth_","queueEvents","eventDataList","currList","eventPath","EventList","raiseEventsAtPath","raiseQueuedEventsMatchingPredicate_","raiseEventsForChangedPath","changedPath","sentAll","eventList","raise","events_","eventFn","allowedEvents_","listeners_","validateEventType_","getInitialEvent","et","VisibilityMonitor","hidden","visibilityChange","visible_","getInstance","OnlineMonitor","online_","currentlyOnline","PacketReceiver","onMessage_","pendingResponses","currentResponseNum","closeAfterResponse","onClose","closeAfter","responseNum","handleResponse","requestNum","toProcess","this_1","_loop_2","BrowserPollConnection","connId","transportSessionId","lastSessionId","bytesSent","bytesReceived","everConnected_","log_","stats_","urlFn","onDisconnect","curSegmentNum","onDisconnect_","myPacketOrderer","isClosed_","connectTimeoutTimer_","onClosed_","called_1","wrappedFn_1","executeWhenDOMReady","scriptTagHolder","FirebaseIFrameScriptHolder","command","incrementIncomingBytes_","sendNewPolls","pN","urlParams","uniqueCallbackIdentifier","connectURL","addTag","startLongPoll","addDisconnectPingFrame","forceAllow","forceAllow_","forceDisallow","forceDisallow_","isAvailable","Windows","UI","markConnectionHealthy","shutdown_","myDisconnFrame","dataStr","base64data","MAX_URL_DATA_SIZE","enqueueSegment","pw","commandCB","onMessageCB","outstandingRequests","pendingSegs","currentSerial","myIFrame","createIFrame_","iframeContents","alive","myID","myPW","newRequest_","theURL","curDataString","theSeg","seg","addLongPollTag_","segnum","totalsegs","serial","doNewRequest","keepaliveTimeout","loadCB","doNodeLongPoll","newScript_1","rstate","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","mySock","onopen","handleIncomingFrame","isOldAndroid","oldAndroidMatch","previouslyFailed","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","mess","resetKeepAlive","remainingData","sendString_","responsesRequiredToBeHealthy","healthyTimeout","TransportManager","initTransports_","isWebSocketsAvailable","isSkipPollConnection","transports_","transports","ALL_TRANSPORTS","transport","initialTransport","upgradeTransport","Connection","repoInfo_","onReady_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","start_","conn","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeoutMS","healthyTimeout_","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","sendRequest","dataMsg","sendData_","tryCleanupConnection","onSecondaryControl_","controlData","cmd","upgradeIfSecondaryHealthy_","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onDataMessage_","onPrimaryResponse_","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","timestamp","onConnectionEstablished_","tryStartUpgrade_","startUpgrade_","closeConnections_","ServerActions","onDisconnectPut","onDisconnectMerge","PersistentConnection","onDataUpdate_","onConnectStatus_","onServerInfoUpdate_","authTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens","outstandingPuts_","outstandingPutCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","establishConnectionTimer_","requestCBHash_","requestNumber_","realtime_","authToken_","forceTokenRefresh_","invalidAuthTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","scheduleConnect_","onVisible_","onOnline_","onResponse","curReqNum","listen","currentHashFn","listenSpec","sendListen_","req","warnOnListenWarnings_","removeListen_","warnings","indexSpec","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","token_1","authMethod","requestData","cred","onAuthRevoked_","unlisten","sendUnlisten_","queryObj","sendOnDisconnect_","putInternal","sendPut_","queued","errorReason","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","handleTimestamp_","sendConnectStats_","restoreState_","establishConnection_","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage_1","onReady_1","onDisconnect_1","connId_1","nextConnectionId_","lastSessionId_1","canceled_1","connection_1","closeFn_1","interrupt","serverTimeOffset","normalizedPathString","explanation","clientName","ReadonlyRestClient","listens_","getListenId_","listenId","thisListen","queryStringParameters","toRestQueryStringParameters","restRequest_","authTokenData","Repo","forceRestClient","authProvider","dataUpdateCount","eventQueue_","nextWriteId_","interceptServerDataCallback_","persistentConnection_","authTokenProvider","authOverride","statsReporter_","transactionsInit_","infoData_","infoSyncTree_","infoEvents","updateInfo_","serverSyncTree_","serverTime","generateServerValues","isMerge","taggedChildren","taggedSnap","rerunTransactions_","interceptServerData_","connectStatus","runOnDisconnectEvents_","getNextWriteId_","newNodeUnresolved","success","clearEvents","callOnCompleteCallback","abortTransactions_","childrenToMerge","changedKey","changedValue","writeId_1","resolvedOnDisconnectTree","showDelta","longestName","previousValue","currentValue","paddedStat","statsIncrementCounter","metric","__database","Database","RangedFilter","indexedFilter_","startPost_","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","startName","endName","LimitedFilter","rangedFilter_","limit_","getLimit","reverse_","isViewFromLeft","fullLimitUpdateChild_","indexCompare_1","foundStartPost","changeAccumulator","indexCmp_1","newChildNamedNode","windowBoundary","oldChildSnap","compareNext","QueryParams","limitSet_","startSet_","startNameSet_","endSet_","endNameSet_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","WIRE_PROTOCOL_CONSTANTS_","VIEW_FROM_LEFT","copy_","newLimit","VIEW_FROM_RIGHT","WIRE_PROTOCOL_CONSTANTS","INDEX_START_VALUE","INDEX_START_NAME","INDEX_END_VALUE","INDEX_END_NAME","LIMIT","viewFrom","VIEW_FROM","INDEX","REST_CONSTANTS","REST_QUERY_CONSTANTS_","qs","ORDER_BY","START_AT","END_AT","LIMIT_TO_FIRST","LIMIT_TO_LAST","Reference","parentPath","getRoot","databaseProp","database","transactionUpdate","applyLocally","promiseComplete","startTransaction","setPriority","thennablePushRef","pushRef","TransactionStatus","TreeNode","childCount","Tree","parent_","subTree","pathObj","setValue","updateParents_","forEachDescendant","includeSelf","childrenFirst","forEachAncestor","forEachImmediateDescendantWithValue","updateChild_","childEmpty","childExists","MAX_TRANSACTION_RETRIES_","transactionQueueTree_","watchRef","retryCount","unwatcher","abortReason","currentWriteId","currentInputSnapshot","currentOutputSnapshotRaw","currentOutputSnapshotResolved","currentState","getLatestState_","RUN","queueNode","nodeQueue","priorityForNode","sendReadyTransactions_","excludeSets","pruneCompletedTransactionsBelowNode_","buildTransactionQueue_","sendTransactionQueue_","setsToIgnore","txn","latestState","snapToSend","latestHash","SENT","dataToSend","pathToSend","COMPLETED","SENT_NEEDS_ABORT","NEEDS_ABORT","rootMostTransactionNode","getAncestorTransactionNode_","rerunTransactionQueue_","abortTransaction","currentNode","newDataNode","oldWriteId","newNodeResolved","lastInput","transactionNode","transactionQueue","aggregateTransactionQueuesForNode_","abortTransactionsOnNode_","lastSent","_staticInstance","RepoManager","repos_","useRestClient_","dbUrl","databaseFromApp","dbEmulatorHost","createRepo","deleteRepo","appRepos","DatabaseInternals","checkDeleted_","refFromURL","apiName","parsedURL","goOffline","goOnline","ServerValue","TIMESTAMP","increment","forceLongPolling","forceWebSockets","setSecurityDebugCallback","interceptServerData","DataConnection","simpleListen","echo","onEcho","RealTimeConnection","ConnectionTarget","TEST_ACCESS","hijackHash","newHash","oldPut","registerDatabase","setSDKVersion","UNAUTHENTICATED","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","UNAVAILABLE","DATA_LOSS","Authorization","nanoseconds","fromMillis","fromDate","toMillis","tt","st","EMPTY","nt","rt","ht","ot","ut","ct","dt","ft","Tt","Et","It","wt","Rt","At","Pt","Vt","pt","yt","bt","vt","St","Dt","Ct","Ft","Nt","kt","$t","Mt","fromBase64String","Lt","fromUint8Array","toBase64","toUint8Array","Ot","MIN_SAFE_INTEGER","mapValue","fields","__type__","stringValue","__local_write_time__","timestampValue","nanos","xt","booleanValue","bytesValue","referenceValue","geoPointValue","latitude","longitude","integerValue","doubleValue","arrayValue","Bt","__previous_value__","qt","Ut","elements","serializer","Qt","asNumber","Wt","jt","Kt","Gt","zt","transformResults","updateTime","Yt","mt","Jt","Xt","Zt","hasCommittedMutations","fieldTransforms","collectionGroup","canonicalId","ASCENDING","Ce","DESCENDING","LESS_THAN","LESS_THAN_OR_EQUAL","EQUAL","GREATER_THAN_OR_EQUAL","GREATER_THAN","ARRAY_CONTAINS","IN","ARRAY_CONTAINS_ANY","targetId","sequenceNumber","lastLimboFreeSnapshotVersion","resumeToken","es","Ht","hs","track","us","docs","cs","docChanges","fromCache","ls","ds","fs","Ts","Es","Is","Rs","As","Ps","Vs","gs","removedTargetIds","ys","bs","targetIds","cause","vs","Ss","Ds","Cs","Fs","$s","Ms","Ls","Os","Bs","Us","Qs","Ws","Ks","Gs","zs","Hs","Ys","Js","Xs","Zs","Ns","removeTarget","ks","toVersion","fromVersion","missing","readTime","targetChange","targetChangeType","documentChange","documentDelete","documentRemove","updateMask","currentDocument","fieldPath","setToServerValue","appendMissingElements","removeAllFromArray","documents","structuredQuery","collectionId","allDescendants","in","compositeFilter","unaryFilter","fieldFilter","nullValue","fieldPaths","ssl","batchId","baseMutations","batch","streamToken","tr","getEntries","sr","ir","rr","hr","or","ur","cr","_r","lr","dr","Tr","Er","Ir","wr","Rr","Ar","mr","Pr","Vr","gr","pr","yr","br","vr","Sr","Dr","Cr","Fr","Nr","kr","$r","Mr","Lr","Or","xr","Br","qr","Ur","Qr","Wr","jr","Kr","Gr","zr","Hr","Yr","Jr","Xr","Zr","enqueue","DISABLED","maxValue","so","ro","onblocked","createOrUpgrade","oo","__PRIVATE_process","__PRIVATE_env","onversionchange","runTransaction","do","To","Io","aborted","Ro","Ao","Po","Vo","po","primaryKey","Eo","openKeyCursor","userId","So","IDBKeyRange","bound","userMutationsIndex","Do","Co","lastStreamToken","Fo","No","$o","Mo","Lo","Oo","Bo","lowerBound","upperBound","Uo","prefixForPath","Qo","Wo","Ko","Go","zo","prefixForUser","only","Ho","Yo","Jo","Xo","Zo","highestTargetId","lastRemoteSnapshotVersion","highestListenSequenceNumber","targetCount","queryTargetsIndexName","documentTargetsIndex","updateMetadata","getMetadata","byteSize","collectionReadTimeIndex","readTimeIndex","unknownDocument","noDocument","autoIncrement","userMutationsKeyPath","unique","deleteObjectStore","removeAcknowledgedMutations","addDocumentGlobal","ensureSequenceNumbers","createCollectionParentIndex","readTimeIndexPath","collectionReadTimeIndexPath","rewriteCanonicalIds","lastAcknowledgedBatchId","ownerId","allowTabSynchronization","leaseTimestampMs","localWriteTimeMs","lastListenSequenceNumber","queryTargetsKeyPath","documentTargetsKeyPath","clientId","updateTimeMs","networkEnabled","inForeground","isPrimary","tu","eu","su","iu","nu","ru","hu","ou","au","newVersion","uu","cu","lu","du","fu","Tu","Eu","Iu","wu","Ru","Au","mu","Pu","Vu","gu","pu","yu","clearPersistence","bu","vu","Su","Du","Cu","Fu","Nu","ku","$u","Mu","Lu","Ou","persistence","xu","Bu","qu","Uu","Qu","Wu","ju","Ku","Gu","zu","Hu","Yu","Ju","Xu","Zu","hasPendingWrites","fr","documentId","serverTimestamp","arrayUnion","arrayRemove","t_","e_","s_","i_","n_","r_","h_","o_","a_","u_","c_","l_","d_","f_","addTarget","labels","T_","E_","w_","writeResults","commitTime","R_","A_","m_","P_","V_","g_","p_","y_","b_","v_","S_","D_","C_","F_","N_","k_","M_","L_","O_","x_","B_","q_","U_","Q_","j_","K_","G_","z_","H_","Y_","J_","X_","Z_","enableNetwork","disableNetwork","I_","activeTargetIds","onlineState","storage","storageArea","updateFunction","includeMetadataChanges","tT","eT","sT","iT","nT","rT","hT","oT","aT","uT","cT","_T","lT","dT","fT","TT","initialize","ET","IT","wT","RT","AT","mT","PT","VT","gT","pT","yT","bT","vT","ST","synchronizeTabs","cacheSizeBytes","DT","CT","FT","NT","kT","terminate","$T","DOMException","waitForPendingWrites","MT","OT","muted","xT","BT","firestore","timestampsInSnapshots","qT","converter","QT","WT","jT","KT","GT","zT","experimentalForceLongPolling","HT","YT","JT","XT","ZT","tE","eE","sE","iE","nE","rE","hE","getAuthHeaderValueForFirstParty","enablePersistence","experimentalTabSynchronization","oE","aE","onSnapshotsInSync","cE","_E","lE","dE","fE","TE","EE","mergeFields","IE","wE","RE","onSnapshot","AE","mE","withConverter","PE","VE","gE","fromFirestore","serverTimestamps","pE","yE","bE","vE","SE","DE","startAfter","endBefore","CE","FE","NE","kE","$E","ME","LE","OE","xE","oldIndex","BE","toFirestore","Firestore","GeoPoint","Timestamp","WriteBatch","DocumentReference","DocumentSnapshot","QueryDocumentSnapshot","QuerySnapshot","CollectionReference","FieldPath","FieldValue","CACHE_SIZE_UNLIMITED","qE","UE","QE","WE","jE","KE","GE","zE","HE","YE","JE","XE","ZE","tI","BatchGetDocuments","Commit","eI","sI","iI","XhrIo","listenOnce","EventType","COMPLETE","getLastErrorCode","ErrorCode","NO_ERROR","getResponseJson","TIMEOUT","HTTP_ERROR","getStatus","getResponseText","createWebChannelTransport","httpSessionIdParam","initMessageHeaders","messageUrlParams","sendRawJson","supportsCrossDomainXhr","internalChannelParams","forwardChannelRequestTimeoutMs","httpHeadersOverwriteParam","createWebChannel","WebChannel","OPEN","CLOSE","MESSAGE","__PRIVATE_registerFirestore","commonjsGlobal","goog","compatMode","PerformanceNavigationTiming","getEntriesByType","nextHopProtocol","concurrentRequestLimit","backgroundChannelTest","fastHandshake","sendBeacon","messageHeaders","clientProtocolHeaderRequired","messageContentType","__sm__","getLastError","tmp_1","tmp_2","tmp_3","tmp_4","tmp_5","errorCodeMap","HttpsErrorImpl","ContextProvider","messagingProvider","messaging","getAuthToken","getInstanceIdToken","Notification","permission","instanceIdToken","Serializer","Service","region_","emulatorOrigin","deleteService","contextProvider","cancelAllRequests","_url","useFunctionsEmulator","httpsCallable","postJSON","responseData","millis","bodyJSON","codeForHTTPStatus","description","errorJSON","status_1","_errorForResponse","namespaceExports","Functions","ERROR_MAP","arrayToBase64","uint8Array","base64ToArray","base64String","rawData","outputArray","migrateOldDatabase","senderId","databases","tokenDetails","oldDetails","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","checkTokenDetails","upgradeDb","dbGet","firebaseDependencies","oldTokenDetails","dbSet","dbRemove","DEFAULT_VAPID_KEY","requestGetToken","subscribeOptions","err_1","getBody","getEndpoint","errorInfo","requestUpdateToken","updateOptions","err_2","requestDeleteToken","unsubscribeOptions","err_3","ENDPOINT","installations","web","applicationPubKey","MessageType","swRegistration","pushSubscription","getPushSubscription","getNewToken","dbOptions","isVapidKeyEqual","currentOptions","isEndpointEqual","isAuthEqual","isP256dhEqual","updateToken","deleteToken","pushManager","getSubscription","unsubscribe","updatedToken","updatedTokenDetails","subscription","userVisibleOnly","applicationServerKey","isConsoleMessage","WindowController","onMessageCallback","messageEventListener","getServiceWorkerRegistration","requestPermission","permissionResult","usePublicVapidKey","useServiceWorker","ServiceWorkerRegistration","setBackgroundMessageHandler","onTokenRefresh","browserErrorMessage","firebaseMessaging","PUSH_RECEIVED","logEvent","messageType","NOTIFICATION_CLICKED","analyticsProvider","message_id","message_name","message_time","message_device_time","SwController","bgMessageHandler","waitUntil","onPush","onSubChange","onNotificationClick","clientList","notificationDetails","getMessagePayload","getClientList","hasVisibleClients","sendMessageToWindowClients","notification","notificationInformation","getNotificationData","showNotification","newSubscription","link","fcmOptions","click_action","getLink","getWindowClient","clients","openWindow","createNewMessage","clientList_1","clientList_1_1","URL","clientList_2","clientList_2_1","matchAll","includeUncontrolled","maxActions","NAMESPACE_EXPORTS","isSupported","PushSubscription","cookieEnabled","messagingSenderId","FirebaseStorageError","code_","prependCode","message_","serverResponse_","codeProp","codeEquals","serverResponseProp","setServerResponseProp","Code","canceled","cannotSliceBlob","noDownloadURL","invalidArgument","appDeleted","internalError","StringFormat","RAW","BASE64","BASE64URL","DATA_URL","formatValidator","stringFormat","StringData","dataFromString","stringData","utf8Bytes_","base64Bytes_","DataURLParts","decoded","percentEncodedBytes_","dataUrl","dataURLContentType_","hasMinus","hasUnder","hasSlash","TaskEvent","STATE_CHANGED","InternalTaskState","TaskState","RUNNING","PAUSED","SUCCESS","CANCELED","taskStateFromInternalTaskState","isJustDef","isNonNullObject","isNativeBlob","isNativeBlobDefined","NetworkXhrIo","sent_","xhr_","errorCode_","sendPromise_","ABORT","NETWORK_ERROR","getErrorCode","addUploadProgressListener","upload","removeUploadProgressListener","XhrIoPool","createXhrIo","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","getBlob","FbsBlob","elideCopy","blobType","data_","size_","type_","startByte","endByte","sliced","blob","webkitSlice","mozSlice","sliceBlob","blobby","uint8Arrays","finalLength_1","merged_1","index_1","uploadData","bucket","fullServerUrl","bucketOnlyServerUrl","makeFromBucketSpec","bucketString","bucketLocation","makeFromUrl","gsRegex","httpModify","firebaseStorageHost","groups","indices","postModify","captures","bucketValue","pathValue","invalidUrl","jsonObjectOrNull","canonicalChildPath","lastComponent","makeUrl","urlPart","makeQueryString","queryPart","noXform_","Mapping","server","xform","mappings_","getMappings","mappings","nameMapping","fullPath","xformPath","sizeMapping","fromResource","authWrapper","resource","makeStorageReference","addRef","fromResourceString","resourceString","toResourceString","metadataValidator","fromResponseString","listResult","prefixes","nextPageToken","pathWithoutTrailingSlash","fromBackendResponse","listOptionsValidator","RequestInfo","progressCallback","successCodes","additionalRetryCodes","handlerCheck","cndn","metadataHandler","downloadUrlHandler","downloadUrlFromResourceString","sharedErrorHandler","newErr","objectErrorHandler","maxOperationRetryTime","requestInfo","pageToken","maxResults","listHandler","getDownloadUrl","deleteObject","_text","metadataForUpload_","metadataClone","determineContentType_","ResumableUploadStatus","checkResumeHeader_","allowed","continueResumableUpload","status_","bytesLeft","bytesToUpload","maxUploadRetryTime","uploadStatus","newCurrent","UploadTaskSnapshot","bytesTransferred","totalBytes","validate","specs","passed","minArgs","maxArgs","argMin","argMax","real","countPart","ArgSpec","stringSpec","stringValidator","chainedValidator","uploadDataSpec","metadataSpec","listOptionSpec","nonNegativeNumberSpec","looseObjectSpec","nullFunctionSpec","argsToForward","UploadTask","transferred_","needToFetchStatus_","needToFetchMetadata_","observers_","error_","uploadUrl_","request_","chunkMultiplier_","resolve_","reject_","authWrapper_","location_","blob_","metadata_","resumable_","shouldDoResumable_","errorHandler_","completeTransitions_","transition_","metadataErrorHandler_","promise_","makeProgressCallback_","sizeBefore","loaded","updateProgress_","createResumable_","fetchStatus_","fetchMetadata_","continueUpload_","oneShotUpload_","resolveToken_","metadataForUpload","createResumableUpload","createRequest","makeRequest","getPromise","sizeString","getResumableUploadStatus","statusRequest","uploadRequest","newStatus","increaseMultiplier_","metadataRequest","boundary","genBoundary","preBlobPart","postBlobPart","multipartUpload","multipartRequest","transferred","notifyObservers_","wasPaused","externalState","completed","typeValidator","nextOrObserverMessage","nextValidator","observerValidator","nextOrObserverValidator","makeBinder","addObserver_","removeObserver_","binderNextOrObserverValidator","binderSpecs","typeOnly","notifyObserver_","finishPromise_","triggered","newRef","newPath","throwIfRoot_","putString","listAll","listAllHelper","opt","nextPage","getDownloadURL","invalidRootOperation","FailRequest","_appDelete","RequestMap","addRequest","AuthWrapper","maker","requestMaker","bucket_","appId_","deleted_","extractBucket_","storageRefMaker_","requestMaker_","pool_","service_","maxOperationRetryTime_","maxUploadRetryTime_","requestMap_","deleteApp","setMaxUploadRetryTime","setMaxOperationRetryTime","NetworkRequest","errorCallback","pendingXhr_","backoffId_","canceled_","appDelete_","url_","method_","headers_","body_","successCodes_","additionalRetryCodes_","errorCallback_","progressCallback_","timeout_","backoffDone","requestWentThrough","wasSuccessCode","RequestEndStatus","waitSeconds","timeoutId","hitTimeout","cancelState","triggeredCallback","triggerCallback","callWithDelay","waitMillis","mustStop","stopped","wasTimeout","backoffCallback","progressListener","hitServer","isRetryStatusCode_","successCode","wasCanceled","progressEvent","lengthComputable","appDelete","isFiveHundredCode","isExtraRetryCode","isRequestSpecificRetryCode","addGmpidHeader_","addAuthHeader_","addVersionHeader_","authWrapperBucket","internals_","ServiceInternals","registerStorage","Storage","apiInstance","windowInstance","settingsServiceInstance","Api","PerformanceObserver","windowLocation","perfMetrics","onFirstInputDelay","getUrl","measure","measureName","mark1","mark2","getEntriesByName","getTimeOrigin","timeOrigin","timing","navigationStart","requiredApisAvailable","setupObserver","entryType","entryTypes","mergeStrings","part1","part2","sizeDiff","resultArray","iid","SettingsService","instrumentationEnabled","dataCollectionEnabled","loggingEnabled","tracesSamplingRate","networkRequestsSamplingRate","logEndPointUrl","flTransportEndpointUrl","transportKey","shouldSendToFl","logSource","logTraceAfterSampling","logNetworkAfterSampling","configTimeToLive","getAppId","firebaseAppInstance","getProjectId","getApiKey","getFlTransportFullUrl","getIid","RESERVED_ATTRIBUTE_PREFIXES","ATTRIBUTE_FORMAT_REGEX","getServiceWorkerStatus","getVisibilityState","VISIBLE","getEffectiveConnectionType","navigatorConnection","effectiveType","consoleLogger","DEFAULT_CONFIGS","NO_TEMPLATE_CONFIGS","getConfig","expiryString","expiry","configStringified","getStoredConfig","processConfig","authTokenPromise","installationsService","authTokenVal","configEndPoint","FIS_AUTH_PREFIX","app_instance_id","app_instance_id_token","app_id","app_version","sdk_version","getRemoteConfig","storeConfig","fpr_enabled","fpr_log_source","fpr_log_endpoint_url","fpr_log_transport_key","fpr_log_transport_web_percent","rolloutPercent","seed","getHashPercent","isDestFl","fpr_vc_network_request_sampling_rate","fpr_vc_trace_sampling_rate","shouldLogAfterSampling","samplingRate","initializationPromise","initializationStatus","getInitializationPromise","handler_1","getDocumentReadyComplete","iidPromise","iidVal","changeInitializationStatus","remainingTries","isTransportSetup","processQueue","timeOffset","staged","log_event","evt","source_extension_json_proto3","event_time_ms","eventTime","flTransportFullUrl","postToFlEndpoint","transportWait","nextRequestWaitMillis","requestOffset","logResponseDetails","responseAction","sendEventsToFl","next_request_wait_millis","sendEventsToCc","postToEndpoint","request_time_ms","client_info","client_type","js_client_info","log_source","dispatchQueueEvents","addToQueue","sendLog","resourceType","transportHandler","logTrace","trace","settingsService","isAuto","sendTraceLog","networkRequestMetric","networkRequest","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","serializeTrace","google_app_id","web_app_info","page_url","service_worker_status","visibility_state","effective_connection_type","application_process_state","oobMetrics","Trace","traceMeasureName","api","randomId","traceStartMark","TRACE_START_MARK_PREFIX","traceStopMark","TRACE_STOP_MARK_PREFIX","traceMeasure","TRACE_MEASURE_PREFIX","calculateTraceMetrics","traceName","startTime","metrics","incrementMetric","putMetric","isValidMetricName","customMetricName","getMetric","putAttribute","isValidName","isValidCustomAttributeName","isValidValue","isValidCustomAttributeValue","attributeName","attributeValue","setStartTime","setDuration","perfMeasureEntries","perfMeasureEntry","createOobTrace","navigationTimings","paintTimings","firstInputDelay","route","timeOriginUs","domInteractive","domContentLoadedEventEnd","loadEventEnd","firstPaint","paintObject","firstContentfulPaint","createUserTimingTrace","createNetworkRequestEntry","performanceEntry","responseStart","responseEnd","networkRequestUrl","logEndpointUrl","flEndpointUrl","logNetworkRequest","transferSize","setupOobResources","timeoutId_1","setupOobTraces","resources","resources_1","setupNetworkRequests","measures","measures_1","setupUserTimingTraces","PerformanceController","registerPerformance","factoryMethod","setupApi","GtagCommand","EventName","GTAG_URL","wrapOrCreateGtag","initializedIdPromisesMap","dataLayerName","gtagFunctionName","gtagCore","_args","idOrNameOrParams","gtagParams","EVENT","initializationPromisesToWaitFor","gaSendToList","gaSendToList_1","sendToId","idPromise","CONFIG","SET","wrapGtag","wrappedGtag","gtagCoreFunction","wrappedGtagFunction","gtagName","globalInitDone","resetGlobalVars","newGlobalInitDone","newGaInitializedPromise","getGlobalVars","analyticsId","scriptTags","findGtagScriptOnPage","insertScriptTag","dataLayer","getOrCreateDataLayer","initializeGAId","eventName","eventParams","gtagFunction","setCurrentScreen","setUserId","setUserProperties","flatProperties","setAnalyticsCollectionEnabled","enabled","registerAnalytics","CachingClient","storageCache","isCachedDataFresh","cacheMaxAgeMillis","lastSuccessfulFetchTimestampMillis","cacheAgeMillis","lastSuccessfulFetchResponse","storageOperations","getLastSuccessfulFetchTimestampMillis","getLastSuccessfulFetchResponse","eTag","setLastSuccessfulFetchTimestampMillis","setLastSuccessfulFetchResponse","RestClient","firebaseInstallations","installationId","installationToken","urlBase","requestBody","fetchPromise","timeoutPromise","originalError_1","errorCode","responseEtag","originalError_2","FIREBASE_REMOTE_CONFIG_URL_BASE","language_code","navigatorLanguage","signal","originalErrorMessage","httpStatus","RemoteConfigAbortSignal","BOOLEAN_TRUTHY_VALUES","Value","_source","asString","asBoolean","getSource","RemoteConfig","_client","_storageCache","_storage","_logger","_isInitializationComplete","fetchTimeoutMillis","minimumFetchIntervalMillis","defaultConfig","getLastFetchStatus","activeConfigEtag","getActiveConfigEtag","setActiveConfig","setActiveConfigEtag","ensureInitialized","_initializePromise","loadFromStorage","abortSignal","lastFetchStatus","setLastFetchStatus","fetchAndActivate","obj1","obj2","getActiveConfig","allConfigs","getBoolean","getString","activeConfig","toFirebaseError","originalError","openDbPromise","etag","getThrottleMetadata","setThrottleMetadata","deleteThrottleMetadata","compositeKey","createCompositeKey","StorageCache","lastFetchStatusPromise","lastSuccessfulFetchTimestampMillisPromise","activeConfigPromise","timestampMillis","calculateBackoffMillis","backoffCount","currBaseValue","randomWait","setAbortableTimeout","throttleEndTimeMillis","backoffMillis","RetryingClient","throttleMetadata","attemptFetch","isRetriableError","registerRemoteConfig","firebaseInstance","restClient","retryingClient","cachingClient","remoteConfigInstance","numeral","decimal","binary","unformatRegex","currentLocale","zeroFormat","nullFormat","scalePercentBy100","Numeral","_input","unformatFunction","isNumeral","regexps","unformat","stringToNumber","numberToFormat","leadingCount","abbrForce","int","signed","thousands","negP","optDec","neg","abbreviations","trillion","billion","million","thousand","abbreviation","stringOriginal","correctionFactor","maxDecimals","optionals","boundedPrecision","optionalsRegExp","power","splitValue","minDecimals","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","formatFunction","corrFactor","curr","currI","bytesMultiplier","toExponential","timeArray","webpackContext","webpackContextResolve","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","nsecs","tmh","normalizeArray","allowAboveRoot","resolvedPath","resolvedAbsolute","trailingSlash","fromParts","toParts","samePartsLength","outputParts","sep","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","http","https","validateParams","statusCodes","defaultProtocol","ClientRequest","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","toArrayBuffer","preferBinary","_opts","_body","_headers","setHeader","useFetch","decideMode","_fetchTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","headersObj","headersList","_fetchAbortController","requestTimeout","_connect","_response","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","custom","arrayCopy","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","digitToBasic","flag","adapt","numPoints","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","maxKeys","kstr","vstr","stringifyPrimitive","Dom7","selector","els","tempParent","toCreate","uniqueArray","webkitRequestAnimationFrame","Methods","classes","hasClass","toggleClass","attrName","removeAttr","propName","dom7ElementDataStorage","dataKey","removeData","dataset","group1","selectedOptions","elStyle","webkitTransform","webkitTransitionDuration","targetSelector","handleLiveEvent","dom7EventData","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","dom","eventArgs","bubbles","cancelable","dataIndex","transitionEnd","fireCallBack","animationEnd","outerWidth","includeMargins","outerHeight","box","clientTop","clientLeft","scrollY","scrollX","matchedItems","modifiedItems","compareWith","webkitMatchesSelector","msMatchesSelector","previousSibling","returnIndex","tempDiv","appendTo","prependTo","insertAfter","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","siblings","closest","foundElements","detach","toAdd","Scroll","scrollTo","easing","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","scrollWidth","progress","easeProgress","cos","PI","Animate","animate","initialProps","initialParams","animateInstance","animating","que","easingProgress","frameId","cancelAnimationFrame","webkitCancelAnimationFrame","dom7AnimateInstance","initialFullValue","initialValue","finalValue","finalFullValue","elementsDone","propsDone","began","noTrigger","eventShortcut","focusin","focusout","keyup","keydown","keypress","submit","mousedown","mousemove","mouseup","mouseout","mouseover","touchstart","touchend","touchmove","defaultDiacriticsRemovalap","letters","diacriticsMap","uniqueNumber","Utils","mdPreloaderContent","iosPreloaderContent","auroraPreloaderContent","eventNameToColonCase","hasColon","char","deleteProps","removeDiacritics","parseUrlQuery","param","urlToParse","paramsPart","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","serializeObject","newParents","varName","parentParts","varValue","toPush","nextSource","keysArray","nextIndex","nextKey","colorHexToRgb","hex","colorRgbToHex","colorRgbToHsl","colorHslToRgb","rgb1","hp","colorHsbToHsl","HSL","HSB","colorHslToHsb","colorThemeCSSProperties","rgb","hsl","hslShade","hslTint","shade","tint","EventsClass","eventsParents","eventsListeners","f7proxy","eventHandler","eventsArray","localEvents","parentEvents","eventsParent","Framework7Class","instanceParams","originalParams","paramKey","moduleParams","modulePropName","moduleProp","moduleEventName","vnodeHooks","vnodeId","hookName","modulesParams","useModule","defaultSelector","domProp","addMethods","ConstructorMethods","targetEl","$targetPage","modalEl","$modalEl","f7Modal","$parentEl","$targetEl","fetchedModules","loadModule","moduleToLoad","Framework7","modulePath","moduleObj","moduleFunc","matchNamePattern","lazyModulesPath","scriptLoad","resolveScript","rejectScript","scriptContent","callbackLoadName","scriptEl","componentLoader","styleLoad","resolveStyle","rtl","styleContent","styleEl","useModuleParams","passedParams","routes","initOnDeviceReady","autoDarkTheme","iosTranslucentBars","iosTranslucentModals","componentUrl","useModulesParams","$rootEl","f7","useModules","DARK","LIGHT","mq","light","colorSchemeListener","darkTheme","router","rootComponent","f7Component","initialized","enableAutoDarkTheme","initAppComponent","loadModules","ModalMethods","globals","jsonpRequests","requestOptions","globalsNoCallbacks","callbackName","xhrFields","processData","dataType","fireCallback","globalCallbackValue","optionCallbackValue","paramsPrefix","abortTimeout","callbackSplit","requestUrl","addVars","requestParameters","postData","Document","headerName","crossDomain","$2","parseError","RequestShortcut","RequestShortcutPromise","post","getJSON","setup","classNames","metaStatusbar","support","utils","getSize","orientationchange","touchClicksDistanceThreshold","disableContextMenu","tapHold","tapHoldDelay","tapHoldPreventClicks","activeState","activeStateElements","activeStateOnMouseMove","mdTouchRipple","iosTouchRipple","auroraTouchRipple","touchRippleElements","touchEvents","move","touchStartX","touchStartY","targetElement","isMoved","tapHoldFired","tapHoldTimeout","preventClick","activableElement","activeTimeout","rippleWave","rippleTarget","rippleTimeout","useRipple","findActivableElement","activable","preventPropagation","newActivable","isInsideScrollableView","addActive","removeActive","createRipple","touchRipple","removeRipple","rippleTouchStart","rippleElements","rippleParent","findRippleElement","rippleTouchMove","rippleTouchEnd","handleMouseUp","emitAppTouchEvent","appTouchStartActive","appTouchMoveActive","appTouchEndActive","appTouchStartPassive","appTouchMovePassive","appTouchEndPassive","appGestureActive","appGesturePassive","passiveListenerCapture","activeListener","activeListenerCapture","isOverswipe","localPreventClick","targetTouches","touches","distance","$activableEl","which","lexer","defaultPattern","escapeString","tryConsume","mustConsume","nextType","consumeText","modifier","name_1","pattern_1","typeOfMessage","tokensToFunction","sensitive","stringToRegexp","tokens_1","endToken","isEndDelimited","tokensToRegexp","pathToRegexp","regexpToRegexp","arrayToRegexp","History","clearQueue","routerQueue","clearRouterQueue","stateUrl","pushStateAnimate","back","pushState","navigate","blockPopstate","previousState","allowChange","viewState","allowPageChange","initViewState","viewId","newState","SwipeBack","isScrolling","viewContainerWidth","touchesDiff","touchStartTime","dynamicNavbar","$pageShadowEl","$pageOpacityEl","animatableNavEls","$navbarsEl","isTouched","touchesStart","$currentPageEl","$previousPageEl","allowViewTouchMove","$currentNavbarEl","$previousNavbarEl","paramsSwipeBackAnimateShadow","paramsSwipeBackAnimateOpacity","paramsSwipeBackActiveArea","paramsSwipeBackThreshold","transformOrigin","transformOriginTitleLarge","setAnimatableNavElements","classNameSet","styleProp","handleTouchStart","swipeBackEnabled","swipeout","masterDetailBreakpoint","handleTouchMove","f7PreventSwipeBack","preventSwipeBack","activeNavBackIconText","previousNavBackIconText","inverter","currentNavIsTransparent","currentNavIsLarge","currentNavIsCollapsed","currentNavIsLargeTransparent","previousNavIsTransparent","previousNavIsLarge","previousNavIsCollapsed","previousNavIsLargeTransparent","fromLarge","toLarge","$currentNavElements","$previousNavElements","iosAnimateNavbarBackIcon","f7NavbarLeftOffset","navEl","$navEl","isSubnavbar","isLeft","isTitle","isBg","subIndex","subNavEl","opacity","isSliding","transformTarget","textEl","activeNavTranslate","f7NavbarRightOffset","previousNavTranslate","animatableNavElements","sheet","f7PreventSwipePanel","preventSwipePanelBySwipeBack","percentage","callbackData","currentPageEl","previousPageEl","currentNavbarEl","previousNavbarEl","currentPageTranslate","previousPageTranslate","swipeBackActive","handleTouchEnd","timeDiff","pageChanged","setNavbarPosition","currentRoute","f7Page","currentPage","pageCallback","swipeBack","saveHistory","stackPages","initialPages","removePage","removeNavbar","previousRoute","preloadPreviousPage","preload","redirect","redirectOptions","routeQueue","enterNextRoute","routesBeforeEnter","routesBeforeLeave","asyncComponent","resolvePromise","componentPromise","_default","asyncComponentResult","Router","isAppRouter","navbarsEl","scrollHistory","iosDynamicNavbar","initialNavbars","tempDom","newRoute","$newNavbarEl","$oldNavbarEl","newNavEls","oldNavEls","animateIcon","animatableNavEl","$navbarInner","isIconLabel","needsOpacityTransition","$iconEl","leftOffset","rightOffset","navEls","otherEls","otherNavEl","iconTextEl","offsetLeft","$oldPageEl","$newPageEl","animateCustom","routerCustomTransitionClass","oldIsLarge","newIsLarge","routerTransitionClass","animateNavbars","removeEl","tabEl","tabIndex","tabChild","removeElements","removeElementsWithTimeout","removeElementsTimeout","findElement","stringSelector","notStacked","$container","viewMainClass","flattenedRoutes","hasTabRoutes","tabs","mergedPathsRoutes","tabRoute","tRoute","flattenRoutes","detailRoutes","detailRoute","dRoute","masterRoute","masterRoutePath","childRoute","cRoute","findRouteByKey","constructRouteUrl","toUrl","foundTabRoute","$tabEl","tabId","matchingRoute","parseRouteUrl","pathsToMatch","aliasPath","pathToMatch","keyObj","paramValue","compiledUrl","paramName","xhrCache","ignoreCache","hasQuery","passRouteQueryToRequest","passRouteParamsToRequest","replaceRequestUrlParams","xhrCacheIgnoreGetParameters","xhrCacheIgnore","cachedUrl","xhrCacheDuration","beforeSend","removeFromXhrCache","ariaHidden","toRemove","pageEl","navbarEl","pageFrom","pageFromEl","$pageEl","$navbarEl","fromPage","$pageFromEl","page","restoreScrollTopOnBack","camelName","colonName","getPageData","attachEvents","$pageContent","pageContentIndex","pageContentEl","f7PageInitialized","detachEvents","f7RouteEventsAttached","f7RouteEventsOn","f7RouteEventsOnce","newUrl","appRouterCheck","pushStateRoot","pushStateSeparator","iosSwipeBack","mdSwipeBack","auroraSwipeBack","historyRestored","initUrl","documentUrl","pushStateOnLoad","pushStateAnimateOnLoad","restoreHistory","findMatchingRoute","loadInitialPage","reloadCurrent","hasTabRoute","setPagePosition","master","checkMasterDetailBreakpoint","initOptions","removeThemeElements","tabLoad","pageAfterIn","routerProp","forward","masterPageEl","otherDetailPageEl","modalType","forwardOptions","reloadPages","reloadPrevious","reloadAll","clearPreviousHistory","reloadDetail","masterDetailEnabled","isMaster","currentRouteIsModal","modal","modalLoadProp","modalToClose","modalInstance","previousUrl","modalRemove","$oldPage","$viewEl","$newPage","keepAliveData","$navbarsInView","isDetail","isDetailRoot","$pagesInView","pageInView","navbarInView","newPagePosition","detailRoot","navbar","getElByPage","removedPageEls","removedNavbarEls","oldNavbarEl","pageIndex","navbarIndex","newPageInDom","componentEl","f7PageMounted","$oldNavbarElEl","afterAnimation","keepOldPage","setPositionClasses","f7PageTransition","load","loadParams","loadOptions","ignorePageChange","pageName","templateUrl","sameParams","allowDuplicateUrls","getPageEl","pageTemplateLoader","pageComponentLoader","xhrRequest","pageContent","navigateParams","createRoute","navigateOptions","generateUrl","navigateUrl","currentPath","viewName","anotherViewName","anotherView","routerLoaded","asyncResolve","resolveParams","resolveOptions","resolvedAsModal","modalRoute","modalLoad","asyncReject","pageLoadProp","preloadMaster","masterLoaded","processRouteQueue","refreshPage","parentPageEl","$parentPageEl","hasContentLoadProp","tabShowResult","$newTabEl","$oldTabEl","animated","onTabsChanged","tabParentPageData","onTabLoaded","contentEl","tabEventTarget","unloadTabContent","tabRemove","f7RouterTabLoaded","loadTab","loadTabParams","loadTabOptions","tabTemplateLoader","tabComponentLoader","tabContent","tabLoadProp","hasTabComponentChild","removeTabContent","foundLoadProp","isPanel","modalOrPanel","modalParams","onModalLoaded","hasEl","closeOnSwipeBack","closeByRouter","modalComponent","removeModal","loadModal","loadModalParams","loadModalOptions","modalTemplateLoader","modalComponentLoader","modalContent","backward","backwardOptions","masterPageRemoved","backIndex","currentIsMaster","pageToRemove","$navbarToRemove","$pageToRemove","insertPage","$previousPages","loadBack","backParams","backOptions","prevOpenedModals","forceOtherUrl","isBrokenPushState","needHistoryBack","skipMaster","$previousPage","$previousMaster","expectedPreviousPageUrl","expectedPreviousPageRoute","previousPageRoute","backForceLoaded","panel","clearPreviousPages","templates","resizableView","resizableInitialized","resizableWidth","$htmlEl","$resizeHandlerEl","minWidth","maxWidth","transformCSSWidth","newV","$pageMasterEl","newWidth","appInstance","viewParams","routesAdd","main","f7View","viewProp","wasMasterDetail","isMasterDetail","masterDetailResizable","initMasterDetail","clicks","externalLinks","$clickedEl","$clickedLinkEl","isLink","InAppBrowser","moduleClicks","preventF7Router","clickSelector","matchingClickedElement","clickedLinkData","linksView","ViewClass","f7RouteProps","initClicks","templateLoader","compiledHtml","$app","$route","$f7route","$router","$f7router","$theme","aurora","templateContent","cachedComponent","extendContext","createdComponent","componentCache","loadedComponent","parsedComponent","rootEl","routerEl","tempDomTBODY","tempDomTROW","selfClosing","propsAttrs","booleanProps","tempDomDIV","toCamelCase","contextFromAttrs","getHooks","isFakeElement","isCustomComponent","customComponents","sel","$props","__component__","createCustomComponent","destroyCustomComponent","newProps","$update","updateCustomComponent","getVnodeHooks","$hook","attrValue","eventNamePart","eventNameIndex","handlerString","customArgs","needMethodBind","pathIndex","handlerArguments","deepArg","getEventHandler","$id","$style","$styleScoped","getChildren","elementToVNode","slotEl","childEl","childSlotName","getSlots","htmlTrim","invokeHandler","updateEvents","oldListener","attributesModule","propsModule","$$","$dom7","$f7","isClassComponent","$mixins","$isRootComponent","componentMixins","childVNode","$onRootUpdated","deleteProperty","styleScoped","__updateQueue","datas","$render","vdom","$styleEl","$attachEvents","$detachEventsHandlers","__requestAnimationFrameId","__updateIsPending","newVNode","resolvers","$startUpdateQueue","mergeState","mountMethod","$detachEvents","promises","parseComponent","componentString","callbackCreateName","callbackRenderName","hasTemplate","templateType","rules","rule","templateFunction","renderContent","registerComponentMixin","SW","reg","Statusbar","StatusBar","onClick","setTextColor","styleLightContent","styleDefault","setBackgroundColor","backgroundColorByHexString","overlaysWebView","overlays","scrollTopOnClick","iosOverlaysWebView","iosTextColor","androidOverlaysWebView","androidTextColor","iosBackgroundColor","androidBackgroundColor","iosSwipeBackAnimateShadow","iosSwipeBackAnimateOpacity","iosSwipeBackActiveArea","iosSwipeBackThreshold","mdSwipeBackAnimateShadow","mdSwipeBackAnimateOpacity","mdSwipeBackActiveArea","mdSwipeBackThreshold","auroraSwipeBackAnimateShadow","auroraSwipeBackAnimateOpacity","auroraSwipeBackActiveArea","auroraSwipeBackThreshold","iosPageLoadDelay","mdPageLoadDelay","auroraPageLoadDelay","viewEl","$popoverView","$popupView","$panelView","$viewsEl","getCurrentView","modalOpen","modalBeforeDestroy","Navbar","$innerEl","needCenterTitle","needLeftTitle","iosCenterTitle","currLeft","subnavbar","noLeft","noRight","leftWidth","rightWidth","titleWidth","navbarStyles","navbarInnerWidth","paddingLeft","paddingRight","isPrevious","sliding","requiredLeft","titleLeftOffset","titleRightOffset","activeNavbarBackLink","titleLeft","hideStatusbar","currentIsLarge","subEl","pageData","getPageByEl","collapseLargeTitle","expandLargeTitle","toggleLargeTitle","initNavbarOnScroll","needHide","needCollapse","needTransparent","previousScrollTop","currentScrollTop","reachEnd","navbarHidden","navbarCollapsed","navbarTitleLargeHeight","navbarOffsetHeight","scrollChanged","scrollContent","scrollTimeoutId","touchEndTimeoutId","$titleLargeEl","isLarge","navbarHideHeight","snapPageScrollToLargeTitle","snapPageScrollToTransparentNavbar","snapLargeNavbar","snapTransparentNavbar","previousCollapseProgress","collapseProgress","isLargeTransparent","previousCollapseWasInMiddle","handleLargeNavbarCollapse","isHidden","notTransparent","handleNavbarTransparent","showOnPageScrollEnd","showOnPageScrollTop","handeTouchStart","f7DetachNavbarScrollHandlers","scrollTopOnTitleClick","mdCenterTitle","auroraCenterTitle","hideOnPageScroll","collapseLargeTitleOnScroll","pageBeforeRemove","pageBeforeIn","pageReinit","pageInit","needCollapseOnScrollHandler","needTransparentOnScroll","needHideOnScrollHandler","tabShow","$pageContentEl","Toolbar","setHighlight","tabbarEl","$tabbarEl","$highlightEl","tabLinksCount","highlightWidth","highlightTranslate","$activeLink","activeIndex","initToolbarOnScroll","toolbarHidden","$toolbarEl","f7ScrollToolbarHandler","tabbar","TouchRipple","ripple","center","diameter","$rippleWaveEl","rippleTransform","removing","removeTimeout","openedModals","dialogsQueue","Modal","opened","animateModal","pushToQueue","$backdropEl","queueDialogs","openedModal","$modalParentEl","wasInDom","onClosed","onOpened","moveToRoot","_clientLeft","onOpen","needToHideBackdrop","popupEl","popupInstance","closeByBackdropClick","backdrop","backdropEl","CustomModal","extendedParams","customModal","handleClick","Dialog","dialog","buttons","verticalButtons","cssClass","destroyOnClose","addKeyboardHander","dialogClasses","buttonsHTML","bold","dialogHtml","buttonOnClick","onKeyDown","buttonEl","setProgress","progressbar","setText","newText","$textEl","setTitle","newTitle","$titleEl","buttonOk","buttonCancel","usernamePlaceholder","passwordPlaceholder","preloaderTitle","progressTitle","destroyPredefinedDialogs","keyboardActions","autoFocus","defaultDialogTitle","autoFocusHandler","alert","callbackOk","prompt","callbackCancel","username","preloader","preloaderInner","infinite","Popup","popup","pushOffset","isPush","elIndex","$target","Keyboard","needToClose","closeOnEscape","pushViewScale","startTouch","currentTouch","pageContentScrollTop","pageContentOffsetHeight","pageContentScrollHeight","popupHeight","$pushEl","allowSwipeToClose","swipeToClose","swipeHandler","pushProgress","scale","hasPreviousPushPopup","removeProperty","parentSelector","LoginScreen","loginScreen","Popover","popover","$angleEl","originalOpen","closeByOutsideClick","angleEl","targetX","targetY","angleLeft","angleTop","targetWidth","targetHeight","targetOffsetLeft","targetOffsetTop","angleSize","safeAreaTop","targetOffset","targetParentPage","hPosition","popoverEl","$popoverEl","Actions","convertToPopover","popoverHtml","renderPopover","actionsHtml","originalClose","buttonIndex","groupIndex","$buttonEl","forceToPopover","grid","buttonClasses","icon","itemClasses","Sheet","isTopSheetModal","swipeStepTranslate","startTranslate","currentTranslate","sheetElOffsetHeight","minTranslate","maxTranslate","$pushViewEl","pushBorderRadius","sheetPageContentEl","sheetPageContentScrollTop","sheetPageContentScrollHeight","sheetPageContentOffsetHeight","swipeToStep","openDirection","closeDirection","absCurrentTranslate","absSwipeStepTranslate","stepOpened","setSwipeStep","byResize","$swipeStepEl","scrollToEl","$scrollEl","newPaddingBottom","paddingTop","paddingBottom","pageHeight","pageScrollHeight","pageScroll","scrollElTop","scrollToElementOnOpen","stepOpen","stepClose","stepToggle","sheetInstance","Toast","toast","closeButton","closeTimeout","toastHtml","openedEl","toastInstance","closeButtonColor","closeButtonText","Preloader","showIn","hideIn","photoBrowserOpen","preloaderEl","tabMounted","Progressbar","$progressbarEl","progressNormalized","$progressbarLine","removeAfterHide","progressbarEl","Sortable","$sortingEl","$sortingItems","$sortableContainer","sortingElHeight","minTop","$insertAfterEl","$insertBeforeEl","indexFrom","pageOffset","sortingElOffsetLocal","sortingElOffsetTop","initialScrollTop","wasTapHold","isTapHold","$listGroup","allowOpen","allow","offsetTop","translateScrollOffset","scrollDiff","allowScroll","$currentEl","currentElOffset","currentElHeight","sortingElOffset","indexTo","moveElements","sortableMoveElements","sortable","f7VirtualListIndex","virtualList","f7VirtualList","moveItem","pointerEvent","enable","disable","Swipeout","$swipeoutEl","$swipeoutContent","$actionsRight","$actionsLeft","actionsLeftWidth","actionsRightWidth","openedActionsSide","$leftButtons","$rightButtons","$overswipeLeftButton","$overswipeRightButton","overswipeLeft","overswipeRight","noFollow","buttonOffset","buttonTranslate","f7SwipeoutButtonOffset","$buttons","$actions","actionsWidth","newTranslate","side","$swipeoutActions","swipeoutActionsWidth","onSwipeoutClose","virtualIndex","deleteItem","actionsNoFold","confirmTitle","Accordion","toggleClicked","$accordionItemEl","$accordionContent","accordion","prevented","$list","$contentEl","$openedItem","VirtualList","defaultHeight","cols","dynamicHeightBufferSize","showFilteredItemsOnly","renderExternal","setListHeight","searchByItem","searchAll","itemTemplate","createUl","scrollableParentEl","renderItem","filteredItems","t7","$scrollableParentEl","updatableScroll","$itemsWrapEl","$ul","itemsWrapEl","domCache","displayDomCache","tempDomElement","lastRepaintY","fragment","createDocumentFragment","rowsPerScreen","rowsBefore","rowsAfter","rowsToRender","maxBufferHeight","dynamicHeight","$panelEl","$popupEl","handleScrollBound","handleResizeBound","heights","forceScrollTop","toIndex","topPosition","heightBeforeFirstItem","heightBeforeLastItem","itemTop","renderExternalItems","itemEl","currentFromIndex","currentToIndex","emptyTemplate","resetScrollTop","listTop","getClientRects","setListSize","appendItems","newCache","prependItems","cachedIndex","indexShift","appendItem","prependItem","prevIndex","deletedItem","deleteItems","deleteCache","ListIndex","$listEl","listEl","iosItemHeight","mdItemHeight","auroraItemHeight","scrollList","itemContent","itemIndex","renderSkipPlaceholder","f7ListIndex","calcSize","$clickedLi","skipRate","scrollListToIndex","topPoint","bottomPoint","$labelEl","previousIndex","ulHeight","bubbleBottom","$scrollToEl","parentTop","scrollToElTop","navbarInnerEl","wasSkipped","itemHtml","maxItems","elContent","calcIndexes","listIndex","listIndexEl","tabBeforeRemove","Tab","tabLinkEl","$tabLinkEl","f7TabRoute","newTabEl","$tabsEl","tabsChangedCallbacks","tabsChanged","swiper","tabsTranslate","slideTo","tabLinkElement","$oldTabLinkEl","oldTabId","oldTabEl","swipePanel","swipeInitialized","swipeable","otherPanel","isGestureStarted","isInterrupted","backdropOpacity","panelWidth","effect","touchMoves","handleGestureStart","handleGestureEnd","swipe","swipeOnlyClose","otherPanelOpened","swipeActiveArea","getViewEl","preventSwipePanel","swipeThreshold","insertToRoot","noFollowProgress","swipeNoFollow","isGesture","removePanelInClass","visibility","resizablePanel","panelMinWidth","panelMaxWidth","visibleByBreakpoint","newPanelWidth","Panel","f7Panel","visibleBreakpointDisabled","setVisibleBreakpoint","emitEvents","visibleBreakpointResizeHandler","breakpoint","visibleBreakpoint","wasVisible","allowPanelOpen","collapsedBreakpointDisabled","setCollapsedBreakpoint","collapsedBreakpointResizeHandler","collapsedBreakpoint","collapsed","modifyHtmlClasses","toggleVisibleBreakpoint","$panelParentEl","otherOpenedPanel","transitionEndTarget","panelTransitionEnd","enableSwipe","enableResizable","panelEl","clickedEl","CardExpandable","cardEl","$cardEl","cardParams","card","hideNavbarOnOpen","hideToolbarOnOpen","currTransform","$cardContentEl","$cardSizeEl","statusbarHeight","cardWidth","cardHeight","pageWidth","hideStatusbarOnOpen","cardLeftOffset","cardTopOffset","scaleX","scaleY","transformValues","cardRightOffset","cardScrollTop","touchEndX","touchEndY","isV","isH","$cardScrollableEl","cardBottomOffset","translateX","translateY","f7KeepNavbarOnClose","f7KeepToolbarOnClose","detachEventHandlers","onTouchStart","onTouchMove","onTouchEnd","scrollableEl","animateWidth","$openedCardEl","form","formId","$formEl","FormStorage","formEl","initialData","getFormData","fillFromData","convertToData","storeFormData","formToData","skipTypes","skipNames","inputIndex","inputEl","$inputEl","formFromData","formData","selectEl","checkboxEl","radioEl","initAjaxForm","fromData","removeFormData","Input","ignoreTypes","createTextareaResizableShadow","$shadowEl","textareaResizableShadow","resizeTextarea","textareaEl","$textareaEl","styleValue","currentHeight","initialHeight","$itemInputEl","$inputWrapEl","validity","validationMessage","$errorEl","validateInputs","checkEmptyState","scrollIntoView","centered","$scrollableEl","contentHeight","contentScrollTop","contentPaddingTop","contentPaddingBottom","contentOffsetTop","inputOffsetTop","inputHeight","centeredPosition","isContentEditable","scrollIntoViewOnFocus","scrollIntoViewDuration","scrollIntoViewCentered","scrollIntoViewAlways","itemInputIndex","itemInputEl","textareaIndex","Toggle","f7Toggle","toggleWidth","touchStartChecked","changed","handleInputChange","toggleEl","Range","dual","draggableBar","vertical","verticalReversed","formatLabel","scaleSteps","scaleSubSteps","formatScaleLabel","limitKnobPosition","f7Range","valueLeft","valueRight","$barEl","$barActiveEl","knobHTML","knobs","$knobEl","$scaleEl","renderScale","rangeOffset","rangeOffsetLeft","rangeOffsetTop","$touchedKnobEl","dualValueIndex","valueChangedByTouch","targetTouchIdentifier","parentModals","parentPanel","parentPage","onTouchChange","rangeHeight","rangeWidth","leftValue","rightValue","touchEnded","layout","knobHeight","knobWidth","knobSize","rangeSize","positionProperty","knobIndex","startPos","realStartPos","byTouchMove","valueChanged","newValues","valueIndex","labelEl","scaleEl","scaleStepValue","scaleValue","subStepEl","subStep","subProgress","rangeEl","Stepper","stepper","valueEl","formatValue","watchInput","autorepeat","autorepeatDynamic","wraps","manualInputMode","decimalPoint","buttonsEndInputMode","$valueEl","f7Stepper","$buttonPlusEl","$buttonMinusEl","buttonPlusEl","buttonMinusEl","typeModeChanged","preventButtonClick","intervalId","autorepeatAction","autorepeatInAction","manualInput","dynamicRepeat","progressions","startsIn","progressionStep","repeatEvery","onMinusClick","endTypeMode","decrement","onPlusClick","onInputClick","readOnly","selectionStart","selectionEnd","onInputKey","onInputBlur","onInput","typeValue","sentByF7Stepper","withWraps","formattedValue","noBlur","inputTxt","powVal","stepperEl","SmartSelect","smartSelect","searchbarDisableButton","f7SmartSelect","$selectEl","setValueText","inputType","onChange","clearCache","optionEl","displayAs","optionText","checkMaxLength","formatValueText","closeOnSelect","inputName","selectName","attachInputsEvents","$containerEl","detachInputsEvents","optionIndex","valueArray","$optionEl","previousGroupEl","optionData","optionImage","optionIcon","optionIconIos","optionIconMd","optionIconAurora","optionHasMedia","optionColor","optionClassName","optionClass","optionGroupEl","optionGroupLabel","optionIsLabel","groupLabel","isLabel","groupEl","image","iconIos","iconMd","iconAurora","hasMedia","checkbox","radio","renderSearchbar","searchbarPlaceholder","searchbarDisableText","ssValue","hasIcon","iconContent","iconValue","getIconContent","iconClass","getIconClass","renderItems","renderPage","pageTitle","$itemTitleEl","navbarColorTheme","pageBackLinkText","searchbar","formColorTheme","renderPopup","popupTabletFullscreen","popupCloseLinkText","renderSheet","toolbarColorTheme","sheetCloseLinkText","$selectedItemEl","containerEl","openedIn","virtualListHeight","scrollToSelectedItem","$searchbarEl","appendSearchbarNotFound","$notFoundEl","searchbarParams","searchContainer","searchIn","getItemsData","pageHtml","pageBeforeOut","pageAfterOut","popupParams","popupPush","popupSwipeToClose","popupOpen","popupOpened","popupClose","popupClosed","routableModals","sheetParams","sheetPush","sheetSwipeToClose","sheetOpen","sheetOpened","sheetClose","sheetClosed","popoverParams","popoverOpen","popoverOpened","popoverClose","popoverClosed","openIn","smartSelectEl","getElMinSize","dimension","minSize","getElMaxSize","maxSize","Grid","$prevResizableEl","$nextResizableEl","prevElSize","prevElMinSize","prevElMaxSize","nextElSize","nextElMinSize","nextElMaxSize","parentSize","itemsInFlow","gapSize","isRow","sizeProp","getSizeProp","touchCurrentX","touchCurrentY","resizeNextEl","prevElNewSize","nextElNewSize","gapAddSize","gapAddSizeCSS","prevElNewSizeNormalized","nextElNewSizeNormalized","Calendar","isHorizontal","inline","hasTimePicker","timePicker","rangePicker","dayFormatter","Intl","DateTimeFormat","monthFormatter","yearFormatter","timeSelectorFormatter","timePickerFormat","monthNames","monthNamesShort","dayNames","dayNamesShort","getIntlNames","monthNamesIntl","monthNamesShortIntl","dayNamesIntl","dayNamesShortIntl","onInputFocus","onInputClear","onHtmlClick","isPopover","closing","attachInputEvents","inputReadOnly","detachInputEvents","attachHtmlEvents","detachHtmlEvents","attachCalendarEvents","wrapperWidth","wrapperHeight","allowItemClick","$wrapperEl","monthsTranslate","resetMonth","nextMonth","prevMonth","handleDayClick","$dayEl","dateYear","dateMonth","dateDay","valueToAdd","setHours","getHours","getMinutes","addValue","onNextMonthClick","onPrevMonthClick","onNextYearClick","nextYear","onPrevYearClick","prevYear","onMonthSelectorClick","renderMonthPicker","onMonthSelectorItemClick","diffIndex","currentMonth","setYearMonth","currentYear","onYearSelectorClick","renderYearPicker","$yearPickerEl","onYearSelectorItemClick","onTimeSelectorClick","openTimePicker","onTimePickerCloseClick","closeTimePicker","monthPicker","yearPicker","touchMove","detachCalendarEvents","yearStarted","yearEnded","formatterMonthNames","formatterMonthNamesShort","formatterDayNames","formatterDayNamesShort","weekDay","normalizeDate","month1","twoDigits","yyyy","DD","getSeconds","hours12","HH","formatDate","rangePickerMinDays","rangePickerMaxDays","inValuesIndex","equal","onlyHeader","valueDate","timePickerPlaceholder","currentLocaleMonth","currentLocaleYear","$months","prevMonthHtml","renderMonth","currentMonthHtml","nextMonthHtml","setMonthsTranslate","monthEl","updateCurrentMonthYear","currentIndex","rebuildBoth","prevMonthTranslate","currentMonthTranslate","nextMonthTranslate","nextDateTime","transitionEndCallback","maxDate","onMonthChangeStart","onMonthChangeEnd","prevDateTime","minDate","targetDate","newMonthHTML","monthTranslate","prevTranslate","wrapperTranslate","dayDate","renderMonths","localeMonth","localeYear","hasEvents","currentValues","today","daysInPrevMonth","minDayNumber","firstDay","monthHtml","dayIndex","firstDayOfMonthIndex","row","rowHtml","col","dayNumber","weekDayIndex","weekendDays","eventsHtml","dateInRange","eventDots","rangesClasses","dayYear","dayMonth","dayNumberDisplay","renderWeekHeader","weekDaysHtml","dayName","renderMonthSelector","renderYearSelector","yearMin","yearPickerMin","yearMax","yearPickerMax","timeString","renderHeader","headerPlaceholder","renderFooter","toolbarCloseText","renderToolbar","monthSelector","yearSelector","footer","weekHeader","renderTimeSelector","renderCustomModal","renderInline","hoursArr","minutesArr","timePickerInstance","picker","rotateEffect","divider","displayValues","opening","normalizeValues","f7Calendar","scrollToInput","initInput","colEl","updateItems","$colEl","colIndex","itemsHeight","animationFrameId","$itemsEl","replaceValues","renderColumn","colWidth","colHeight","valueCallbacks","newActiveIndex","updateValuesOnMomentum","updateDuringScroll","previousActiveIndex","selectedItem","$itemEl","itemsFit","angle","needsOriginFix","displayValue","returnTo","velocityTranslate","mousewheelTimeout","mousewheel","handleMouseWheel","updateValuesOnTouchmove","momentumRatio","freeMode","deltaX","deltaY","updateValuesOnMousewheel","Picker","resizeCols","attachResizeEvent","detachResizeEvent","forceValues","column","newDisplayValue","noDividerColumns","pickerColumn","onlyItems","columnHtml","columnItemsHtml","colClasses","textAlign","initColumn","f7Picker","InfiniteScroll","virtualListContainer","onTop","scrollHandler","infiniteScroll","f7InfiniteScrollHandler","$isEls","PullToRefresh","ptr","$preloaderEl","bottom","touchId","isMaterial","isIos","isAurora","refresh","wasScrolled","triggerDistance","dynamicTriggerDistance","pullStarted","maxScrollTop","mousewheelMoved","useTranslate","forceUseTranslate","hasNavbar","pageNavbarEl","$pageNavbarEl","isTransparent","targetIsScrollable","$ptrWatchScrollable","ptrScrollableIndex","ptrScrollableEl","mousewheelAllow","mousewheelTranslate","handleMouseWheelRelease","f7PullToRefresh","$ptrEls","Lazy","f7LazyDestroy","$lazyLoadImages","placeholderSrc","lazyEl","imagesSequence","imageIsLoading","f7LazyObserver","sequential","loadImage","onImageComplete","f7LazyObserverAdded","f7LazyAttached","lazyHandler","isInViewport","rect","imageEl","$imageEl","onLoad","DataTable","table","f7DataTable","handleChange","sentByF7DataTable","columnIndex","checkedRows","totalRows","$headCheckboxEl","checkSelectedHeader","handleSortableClick","newSort","$cellEl","isActive","currentSort","collapsible","$headerEl","$headerSelectedEl","collpsibleTitle","checkedItems","setCollapsibleLabels","dataTable","tableEl","Fab","morphOpen","fabEl","$fabEl","zIndex","fab","f7FabMorphData","diffX","diffY","f7FabMorphResizeHandler","diffXNew","diffYNew","scaleXNew","scaleYNew","morphClose","morphData","$buttonsEl","Searchbar","inputEvents","disableButton","disableButtonEl","searchItem","searchGroup","searchGroupTitle","ignore","foundEl","notFoundEl","hideOnEnableEl","hideOnSearchEl","customSearch","hideDividers","hideGroups","disableOnBackdropClick","expandable","f7Searchbar","$foundEl","$hideOnEnableEl","$hideOnSearchEl","$searchContainer","$disableButtonEl","preventSubmit","onInputChange","isVirtualList","disableOnClick","onPageBeforeOut","onPageBeforeIn","disableButtonHasMargin","previousQuery","setFocus","backdropShow","setDisableButtonMargin","needsFocus","backdropHide","internal","vlQuery","foundItems","resetFilter","compareWithText","$searchIn","searchInIndex","searchInEl","itemText","wordsMatch","titleIndex","titleEl","$nextElements","$nextEl","$groupEl","filterItems","FrameworkClass","searchbarEl","Messages","autoLayout","messages","newMessagesFirst","scrollMessages","scrollMessagesOnEdge","firstMessageRule","lastMessageRule","tailMessageRule","sameNameMessageRule","sameHeaderMessageRule","sameFooterMessageRule","sameAvatarMessageRule","customClassMessageRule","renderMessage","f7Messages","messageEl","$messageEl","textHeader","textFooter","imageSrc","typing","avatar","getMessageData","messageToRender","isTyping","messagesToRender","getMessagesData","previousMessage","nextMessage","isFirstMessage","isLastMessage","isTailMessage","isSameNameMessage","isSameHeaderMessage","isSameFooterMessage","isSameAvatarMessage","customMessageClasses","isCustomClassMessage","customClass","messageToRemove","messagesToRemove","messagesToRemoveEls","messageToRemoveIndex","removeMessage","messageToAdd","addMessages","messagesToAdd","scrollHeightBefore","heightBefore","scrollBefore","messagesHTML","typingMessage","$messagesEls","onEdge","addMessage","typingMessageIndex","typingFound","$typingMessageEl","newScrollTop","currentScroll","renderMessages","messagesEl","Messagebar","messagebar","topOffset","bottomOffset","attachments","renderAttachments","renderAttachment","resizePage","f7Messagebar","$areaEl","$attachmentsEl","$sheetEl","onAppResize","onSubmit","onAttachmentClick","onTextareaChange","onTextareaFocus","sheetHide","onTextareaBlur","areaEl","attachmentsEl","attachmentsVisible","sheetEl","sheetVisible","elHeight","currentPaddingBottom","requiredPaddingBottom","currentPaddingTop","pageOffsetHeight","scrollOnBottom","attachmentsCreate","attachmentsHide","attachmentsShow","attachment","sheetCreate","sheetShow","messagebarEl","updateSlides","swiperSize","rtlTranslate","wrongRTL","isVirtual","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","slidesPerGroup","slideIndexInGroup","columnsInGroup","slideStyles","currentTransform","currentWebKitTransform","roundLengths","boxSizing","swiperSlideSize","centeredSlides","slidesPerGroupSkip","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","swiperSlideOffset","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","autoHeight","slideBefore","slideAfter","updateProgress","translatesDiff","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","setTranslate","byController","wrapperEl","previousTranslate","translateTo","runCallbacks","translateBounds","preventInteractionOnTransition","onTranslateToWrapperTransitionEnd","transitionStart","initialSlide","allowSlideNext","allowSlidePrev","onSlideToWrapperTransitionEnd","slideToLoop","loopedSlides","slideNext","loopFix","slidePrev","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","nextSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","unsetGrabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","touchEventsData","originalEvent","touchEventsTarget","isTouchEvent","noSwiping","noSwipingSelector","noSwipingClass","allowClick","currentX","currentY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","startMoving","swipeDirection","allowThresholdMove","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","sqrt","touchAngle","atan2","touchMoveStopPropagation","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","velocities","currentPos","touchEndTime","lastClickTime","freeModeMomentum","lastMoveEvent","velocityEvent","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","breakpoints","setBreakpoint","autoplay","running","preventClicks","preventClicksPropagation","dummyEventAttached","dummyEventListener","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","manipulation","onScroll","getBreakpoint","currentBreakpoint","breakpointOnlyParams","breakpointParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","minRatio","wasLocked","lastSlidePosition","addClasses","removeClasses","images","srcset","checkForComplete","onReady","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","swipers","touchEventsTouch","touchEventsDesktop","clickTimeout","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","SwiperClass","isSafari","isUiWebView","resizeHandler","orientationChangeHandler","WebkitMutationObserver","attach","ObserverFunc","observerUpdate","observeParents","containerParents","observeSlideChildren","Virtual","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","slidesToRender","prependIndexes","appendIndexes","$slideEl","numberOfNewSlides","$cachedEl","cachedElIndex","beforeInit","overwriteParams","charCode","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","eventsTarged","releaseOnEdges","rtlFactor","forceToAxis","newEvent","ignoreWheelEvents","sensitivity","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","animateSlider","releaseScroll","Navigation","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","hideOnClick","hiddenClass","toEdge","fromEdge","Pagination","pagination","paginationType","bullets","firstIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","moveDivider","getPointerPosition","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","touchX","touchY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","touchStart","touchEnd","doubleTap","slideChange","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","loadPrevNext","loadPrevNextAmount","maxIndex","minIndex","loadOnTransitionStart","scrollbarDragMove","Controller","LinearSpline","guess","i1","i3","binarySearch","getInterpolateFunction","spline","controlledTranslate","controlled","control","setControlledTranslate","by","setControlledTransition","a11y","makeElFocusable","addElRole","addElLabel","disableEl","enableEl","onEnterKey","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","notificationClass","paginationUpdate","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","waitForTransition","disableOnInteraction","onVisibilityChange","beforeTransitionStart","sliderFirstMove","Fade","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","Coverflow","coverflowEffect","rotate","offsetMultiplier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Resize","A11y","EffectFade","EffectCube","EffectFlip","EffectCoverflow","initSwiper","swiperEl","isTabs","isRoutableTabs","f7SwiperParams","updateSwiper","findTabRoute","pageMounted","PhotoBrowser","photoBrowser","exposed","started","timeStart","virtualSlides","photos","$previousSlideEl","$totalEl","captions","captionIndex","$captionsContainerEl","previousSlideVideo","renderNavbar","iconsColor","renderNavbarCount","navbarShowCount","isPopup","navbarOfText","caption","renderCaption","photo","renderObject","renderLazyPhoto","renderPhoto","captionsTheme","renderStandalone","f7PhotoBrowser","$swiperContainerEl","$swiperWrapperEl","exposition","expositionToggle","doubleClick","onSlideChange","slideChangeTransitionStart","slideChangeTransitionEnd","lazyImageLoad","lazyImageReady","touchMoveOpposite","expositionHideCaptions","openStandalone","openPage","openPopup","notificationHeight","titleRightText","subtitle","closeOnClick","notificationHtml","notificationInstance","closeOnTimeout","Autocomplete","$openerEl","autocomplete","openerEl","f7Autocomplete","$dropdownEl","firstValue","firstItem","itemsHTML","highlightMatches","itemValue","valueProperty","textProperty","dropdownPlaceholderText","typeahead","setSelectionRange","onPageInputChange","aValue","updateValues","onOpenerClick","positionDropdown","$selectedItemLabel","$newItem","$selectedItem","onDropdownClick","clickedItem","updateInputValueOnSelect","attachDropdownEvents","detachDropdownEvents","attachPageEvents","detachPageEvents","$listParent","inputOffset","inputOffsetWidth","inputOffsetHeight","parentEl","paddingValue","listOffset","listOffsetLeft","inputOffsetLeft","paddingProp","expandInput","valuesHTML","preloaderColor","inPopup","navbarLeft","renderPreloader","navbarRight","renderDropdown","notFoundText","requestSourceOnOpen","dropdownContainerEl","autocompleteEl","Tooltip","tooltip","f7Tooltip","handleClickOut","handleTransitionEnd","tooltipOffset","aroundEl","$aroundEl","Gauge","gauge","f7Gauge","borderWidth","radius","calcRadius","borderBgColor","valueText","valueTextColor","valueFontSize","valueFontWeight","labelText","labelTextColor","labelFontSize","labelFontWeight","semiCircle","calcBorderLength","$gaugeSvgEl","svgAttrs","viewBox","backAttrs","stroke","frontAttrs","cx","cy","textAttrs","labelAttrs","gaugeSvgEl","Menu","$menuEl","originalZIndex","f7MenuZIndex","menu","openedMenus","sliderLabel","sliderValue","sliderValueEditable","alphaLabelText","alpha","alphaRangeSlider","destroyAlphaSliderEvents","hexLabel","hexLabelText","hexValueEditable","destroyHexEvents","hueLabelText","saturationLabelText","brightnessLabelText","hsb","hueRangeSlider","hue","saturationRangeSlider","brightnessRangeSlider","destroyHsbSlidersEvents","hslCurrent","hslLeft","hslRight","brightness","palette","handlePaletteClick","destroyPaletteEvents","handleInitialColorClick","destroyInitialCurrentEvents","barLabel","barValue","barValueEditable","redLabelText","greenLabelText","blueLabelText","redBar","greenBar","blueBar","destroyRgbBarsEvents","redRangeSlider","greenRangeSlider","blueRangeSlider","destroyRgbSlidersEvents","specterRect","specterIsTouched","specterHandleIsTouched","setSBFromSpecterCoords","destroySpectrumEvents","specterWidth","specterHeight","setHSFromSpecterCoords","hslBright","circles","svgWheelCircles","wheelRect","wheelIsTouched","wheelHandleIsTouched","setHueFromWheelCoords","wheelCenterX","wheelCenterY","angleDeg","wheel","destroyWheelEvents","wheelSize","wheelHalfSize","angleRad","handleHalfSize","tX","tY","ColorPicker","colorPicker","onTargetClick","$clickTargetEl","moduleAlphaSlider","moduleCurrentColor","moduleHex","moduleHsbSliders","moduleHueSlider","moduleBrightnessSlider","modulePalette","moduleInitialCurrentColors","moduleRgbBars","moduleRgbSliders","moduleSbSpectrum","moduleHsSpectrum","moduleWheel","attachTargetEvents","detachTargetEvents","centerModules","openInPhone","updateModules","rgba","hsla","needChangeEvent","subV","normalizeHsValues","fireEvents","targetElSetBackgroundColor","navbarTitleText","navbarBackLinkText","navbarCloseText","groupedModules","renderPicker","toolbarSheet","toolbarPopover","navbarPopup","getModalType","f7ColorPicker","colorPickerContent","sliderValueEdiable","barValueEdiable","Treeview","f7TreeviewChildrenLoaded","wasOpened","treeview","clickedData","$treeviewItemEl","textEditorButtonsMap","italic","underline","strikeThrough","orderedList","unorderedList","paragraph","h1","h2","h3","alignLeft","alignCenter","alignRight","alignJustify","subscript","superscript","indent","outdent","TextEditor","textEditor","f7TextEditor","onButtonClick","onPaste","onSelectionChange","closeKeyboardToolbar","$keyboardToolbarEl","$selectedLinks","currentSelection","getSelection","selectedNodes","anchorNode","focusNode","linkIndex","linkNode","selection","selectNodeContents","removeAllRanges","addRange","execCommand","currentRange","getSelectionRange","linkUrlText","imageUrlText","imageUrl","selectionIsInContent","selectionIsInPopover","closePopover","isCollapsed","rangeCount","getRangeAt","openPopover","openKeyboardToolbar","clearFormattingOnPaste","clipboardData","removePlaceholder","insertPlaceholder","buttonData","customButtons","$anchorNode","insertImage","createLink","select","renderButton","dividers","renderButtons","isDark","popoverTimeout","createToolbar","createPopover","createKeyboardToolbar","editorEl","ViAd","orientation","appVer","adParams","skipParams","placementId","$viFrame","removeOverlay","$overlayEl","createOverlay","videoEl","fallbackOverlayText","play","onAdReady","onAdStarted","onAdClick","targetUrl","onAdImpression","onAdStopped","onAutoPlayFailed","fallbackOverlay","onAdError","startAd","pauseAd","resumeAd","stopAd","initAd","showMute","startMuted","placementType","videoSlot","showProgress","showBranding","age","gender","advertiserId","accuracy","storeId","ip","manufacturer","connectionType","connectionProvider","sdkReady","createAd","loadSdk","RouterTemplateLoaderModule","RouterComponentLoaderModule","DeviceModule","SupportModule","UtilsModule","ResizeModule","RequestModule","TouchModule","ClicksModule","RouterModule","HistoryModule","ComponentModule","ServiceWorkerModule","Tabs","Card","Form","f7Instance","noUndefinedProps","isTrueProp","isStringProp","flattenArray","uniqueClasses","bindMethods","Mixins","colorProps","colorTheme","rippleColor","themeDark","colorClasses","linkIconProps","iconMaterial","iconF7","iconColor","iconSize","linkRouterProps","external","routeTabId","routeProps","preventRouter","linkRouterAttrs","dataAnimate","dataReloadDetail","linkRouterClasses","linkBack","linkActionsProps","searchbarEnable","searchbarDisable","searchbarClear","searchbarToggle","panelOpen","panelClose","panelToggle","actionsOpen","actionsClose","loginScreenOpen","loginScreenClose","sortableEnable","sortableDisable","sortableToggle","cardOpen","cardPreventOpen","cardClose","menuClose","linkActionsAttrs","linkActionsClasses","propKey","__vueComponentProps","eventTargetEl","$f7ready","onBeforeOpen","onBeforeClose","__vueComponentDispatchEvent","accordionOpposite","mediaEl","f7Actions","actionsParams","f7Params","routers","modals","ModalComponent","routerData","setModals","setState","__vueComponentSetState","RoutableModals","noShadow","noHairline","innerClass","innerClassName","innerEl","large","medium","inset","xsmallInset","smallInset","mediumInset","largeInset","xlargeInset","strong","tabActive","accordionList","noHairlines","noHairlinesMd","noHairlinesIos","noHairlinesAurora","onTabShow","onTabHide","material","tooltipTrigger","_theme","fontSize","iconTextComputed","themeIcon","nestedPropsKeys","__html","dangerouslySetInnerHTML","newKey","tabLink","tabLinkActive","roundMd","roundIos","roundAurora","fillMd","fillIos","fillAurora","largeMd","largeIos","largeAurora","small","smallMd","smallIos","smallAurora","raised","raisedMd","raisedIos","raisedAurora","outline","outlineMd","outlineIos","outlineAurora","iconEl","F7Icon","__vueComponentTransformJSXProps","hrefComputed","padding","expandableAnimateWidth","expandableOpened","noBorder","headerEl","footerEl","F7CardHeader","F7CardContent","F7CardFooter","indeterminate","defaultChecked","deleteable","mediaBgColor","mediaTextColor","deleteEl","onDeleteClick","xsmall","xlarge","resizableFixed","resizableAbsolute","resizableHandler","fabClose","morphTo","initialHref","linkEl","linkChildren","rootChildren","linkSlots","defaultSlots","rootSlots","textSlots","labelClasses","inputId","buttonClick","keyboardOpen","onKeyboardOpen","keyboardClose","onKeyboardClose","onPopoverOpen","onPopoverClose","contenteditable","editor","inputmode","accept","autocorrect","autocapitalize","spellcheck","autofocus","autosave","minlength","inputStyle","validateOnBlur","onValidate","tabindex","clearButton","noFormStoreData","noStoreData","ignoreStoreData","errorMessageForce","dropdown","calendarParams","colorPickerParams","textEditorParams","inputFocused","inputInvalid","domValue","inputHasValue","createInput","InputTag","needsValue","needsType","inputClassName","valueProps","autoSave","slotsDefault","slotsInfo","F7Toggle","F7Range","rangeChange","F7TextEditor","textEditorFocus","textEditorBlur","textEditorInput","textEditorChange","wrapClasses","updateInputOnDidUpdate","onInputNotEmpty","onTextareaResize","onInputEmpty","calendarValue","colorPickerValue","validateInput","noLinkClass","tabbarLabel","iconOnly","badge","badgeColor","iconBadge","smartSelectParams","isTabbarLabel","badgeEl","iconBadgeEl","F7Badge","iconOnlyComputed","ssParams","mediaList","sortableOpposite","sortableTapHold","indexContent","inlineLabel","floatingLabel","isSortable","renderInput","hasErrorMessage","ItemContent","itemContentEl","mediaItem","radioIcon","afterWrapEl","afterEl","titleRowEl","subtitleEl","inputIconEl","slotsContentStart","slotsContent","slotsContentEnd","slotsInnerStart","slotsInner","slotsInnerEnd","slotsAfterStart","slotsAfter","slotsAfterEnd","slotsMedia","slotsBeforeTitle","slotsTitle","slotsAfterTitle","slotsSubtitle","slotsText","slotsHeader","slotsFooter","flattenSlots","mediaImgEl","passedSlotsContentStart","isMedia","groupTitle","swipeoutOpened","accordionItem","accordionItemOpened","noChevron","chevronCenter","virtualListIndex","isSortableOpposite","isSimple","F7ListItemContent","linkAttrs","linkClasses","liClasses","linkItemEl","onSwipeoutOpen","onSwipeoutOpened","onSwipeoutClosed","onSwipeoutDelete","onSwipeoutDeleted","onSwipeoutOverswipeEnter","onSwipeoutOverswipeExit","onSwipeout","onAccBeforeOpen","onAccOpen","onAccOpened","onAccBeforeClose","onAccClose","onAccClosed","sortableEnabled","contactsList","simpleList","linksList","noHairlinesBetween","noHairlinesBetweenMd","noHairlinesBetweenIos","noHairlinesBetweenAurora","formStoreData","inlineLabels","virtualListParams","slotsList","rootChildrenBeforeList","rootChildrenAfterList","ulChildren","wasUlChild","ListTag","onSortableEnable","onSortableDisable","onSortableSort","vlParams","itemBeforeInsert","beforeClear","itemsBeforeInsert","itemsAfterInsert","sortData","f7LoginScreen","Tag","positionComputed","isDropdown","sameName","sameHeader","sameFooter","sameAvatar","slotsStart","slotsEnd","slotsAvatar","slotsName","slotsImage","slotsTextHeader","slotsTextFooter","slotsBubbleStart","slotsBubbleEnd","backgroundImage","nameEl","avatarEl","bubbleEl","onNameClick","onTextClick","onAvatarClick","onHeaderClick","onFooterClick","onBubbleClick","deletable","sendLink","textareaId","messagebarAttachmentsEl","messagebarSheetEl","slotsBeforeInner","slotsAfterInner","slotsSendLink","slotsBeforeArea","slotsAfterArea","innerEndEls","F7Input","F7Link","updateSheetVisible","updateAttachmentsVisible","attachmentDelete","onAttachmentDelete","attachmentClick","onResizePage","setPlaceholder","attachmentsToggle","sheetToggle","area","attachmentEl","attachmentElIndex","beforeUpdate","removeMessages","showTyping","hideTyping","backLink","backLinkUrl","backLinkForce","backLinkShowText","needBackLinkText","onBackClick","largeTransparent","transparent","titleLarge","routerPositionClass","largeCollapsed","routerNavbarRole","routerNavbarRoleDetailRoot","routerNavbarMasterStack","transparentVisible","leftEl","rightEl","titleLargeEl","addLeftTitleClass","addCenterTitleClass","isTransparentVisible","F7NavLeft","backClick","F7NavTitle","F7NavRight","largeTitle","onShow","onHide","onCollapse","onExpand","onNavbarPosition","onNavbarRole","onNavbarMasterStack","onNavbarMasterUnstack","onNavbarTransparentShow","onNavbarTransparentHide","rolesData","sizeComputed","preloaderStyle","ptrDistance","ptrPreloader","ptrBottom","ptrMousewheel","infiniteTop","infiniteDistance","infinitePreloader","hideBarsOnScroll","hideNavbarOnScroll","hideToolbarOnScroll","messagesContent","ptrEl","infiniteEl","onPtrPullStart","onPtrPullMove","onPtrPullEnd","onPtrRefresh","onPtrDone","onInfinite","withSubnavbar","withNavbarLarge","navbarLarge","noNavbar","noToolbar","noSwipeback","hasSubnavbar","hasNavbarLarge","hasNavbarLargeCollapsed","hasCardExpandableOpened","routerForceUnstack","routerPageRole","routerPageRoleDetailRoot","routerPageMasterStack","fixedTags","hasMessages","fixedList","staticList","slotsStatic","slotsFixed","fixed","isFixedTag","forceSubnavbar","forceNavbarLarge","F7PageContent","ptrPullStart","ptrPullMove","ptrPullEnd","ptrRefresh","ptrDone","onPageMounted","onPageInit","onPageReinit","onPageAfterOut","onPageAfterIn","onPageBeforeRemove","onPageBeforeUnmount","onPageStack","onPageUnstack","onPagePosition","onPageRole","onPageMasterStack","onPageMasterUnstack","onPageNavbarLargeCollapsed","onPageNavbarLargeExpanded","onCardOpened","onCardClose","onPageTabShow","onPageTabHide","cover","reveal","disableResizable","backdropClick","onBackdropClick","onSwipe","swipeOpen","onSwipeOpen","onCollapsedBreakpoint","onBreakpoint","expositionEnable","expositionDisable","f7Popover","tabletFullscreen","f7Popup","swipeStart","onSwipeStart","swipeMove","onSwipeMove","swipeEnd","onSwipeEnd","swipeClose","onSwipeClose","transformStyle","noGap","disableButtonText","clearEl","SearchbarTag","onClearButtonClick","onDisableButtonClick","strongIos","strongMd","strongAurora","segmented","f7Sheet","onStepOpen","onStepClose","stepProgress","onStepProgress","styleAttribute","widthValue","heightValue","inputReadonly","buttonsOnly","inputWrapEl","minusEl","plusEl","sideComputed","confirmText","overswipe","deleteProp","paginationEl","scrollbarEl","buttonNextEl","buttonPrevEl","paginationComputed","scrollbarComputed","navigationComputed","initialUpdate","TabContent","setTabContent","routable","tabsClasses","wrapEl","scrollable","topMd","topIos","topAurora","bottomMd","bottomIos","bottomAurora","itemToggle","selectable","loadChildren","needToggle","TreeviewRootTag","itemRootClasses","itemRootAttrs","onLoadChildren","materialPageLoadDelay","pages","PageComponent","setPages","onViewInit","onSwipeBackMove","onSwipeBackBeforeChange","onSwipeBackAfterChange","onSwipeBackBeforeReset","onSwipeBackAfterReset","swipeBackData","routerComponentIdCounter","viewRouter","f7route","f7router","onDidUpdate","componentRouterData","pageComponentFound","tabRouter","tabData","tabContentEl","hasComponent","modalsRouter","modalData","modalDataToRemove","f7ready","f7Theme","installed","Events","Extend","f7AccordionContent","f7AccordionItem","f7AccordionToggle","f7Accordion","f7ActionsButton","f7ActionsGroup","f7ActionsLabel","f7App","f7Appbar","f7Badge","f7BlockFooter","f7BlockHeader","f7BlockTitle","f7Block","f7Button","f7CardContent","f7CardFooter","f7CardHeader","f7Card","f7Checkbox","f7Chip","f7Col","f7FabBackdrop","f7FabButton","f7FabButtons","f7Fab","f7Icon","f7Input","f7Link","f7ListButton","f7ListGroup","f7ListInput","f7ListItemCell","f7ListItemContent","f7ListItemRow","f7ListItem","f7List","f7LoginScreenTitle","f7MenuDropdownItem","f7MenuDropdown","f7MenuItem","f7Menu","f7Message","f7MessagebarAttachment","f7MessagebarAttachments","f7MessagebarSheetImage","f7MessagebarSheetItem","f7MessagebarSheet","f7MessagesTitle","f7NavLeft","f7NavRight","f7NavTitleLarge","f7NavTitle","f7Navbar","f7PageContent","f7Preloader","f7Progressbar","f7Radio","f7RoutableModals","f7Row","f7Segmented","f7SkeletonBlock","f7SkeletonText","f7Subnavbar","f7SwipeoutActions","f7SwipeoutButton","f7SwiperSlide","f7Swiper","f7Tab","f7Tabs","f7Toolbar","f7TreeviewItem","f7Treeview","f7Views","$device","$request","$utils","_f7route","_f7router","componentsRouter","cordovaApp","handleSplashscreen","splashscreen","handleAndroidBackButton","backButtonTimestamp","exitApp","handleKeyboard","shrinkView","disableScrollingInShrinkView","hideFormAccessoryBar","keyboardHeight","myAppVersion","sendBroadCast","logoutApp","gotoChat","frd_string","frd","initHome","app_db_version","user_payout","user_country","subscribe_affiliate","user_details","friends","friend_requests","message_count","total_message","latest_message","photo_url","userStatus","userType","birthDate","profileMessage","phonenumber","product","about","alert_message","quit_application","showToastBottom","quitAppDialogue","toastBottom","cnt1","time_left","app_agree","show_resend_email","myFunction","userConsent","user_agree","onCheckBoxChange","getOS","forgetPassword","timeleft","resendEmail","countDown","timer","gotoSignIn","lastseen","dateofbirth","tempPayload","image_url","files","signed_up","valid_inputs","launchFilePicker","file","onFilePicked","signUp","userToken","birthdate","lastSeen","photoUpload","myCountryData","msisdn","sex","mydata","group_image_url","display_name","user_location","profile_message","uploadFile","updateProfile","upload_button","signOut","confirmationResult","phoneNumber2","phoneNumber3","countriesIgnored","results2","results3","hasLoaderActive","hasErrorActive","phNo","appVerifier","otp","getCountryName","onUpdate","onUpdate2","onUpdate3","sendOtp","verifyOtp","initReCaptcha","recaptchaVerifier","resultsTable","resultsTable2","resultsTable3","image1","image2","contacts","addFrd","sender","recipient","contact","Rave","amount1","amount2","amount3","amount4","amount5","amount6","plan","fname","lname","payment_status","friend","friend_Details","payBronze","paySilver","payGold","old_payout","payout","pay4me_amount","user_pay4me_amount","newpayout","respmsg","img","user_uid","userID","oldPayout","pay4meAmount","userPay4meAmount","newPayout","senderName","senderID","receiverName","moderator","appState","pageSize","backPage","forwardPage","topPage","bottomPage","back_page","forward_page","top_page","bottom_page","db_reference","db_cursor","appUpdate","topward","downward","myradio","updatePreloader","searchResult","search_contacts","searchUsers","scores","checkInternet","league","teamhost","teamvisitor","matchtime","matchstatus","englishclubs","spainclubs","franceclubs","germanclubs","italyclubs","englishclub","SN","team","GD","PTS","P1","P2","P3","P4","P5","spainclub","franceclub","hold_message","friend_uid_chat","responseInProgress","friend_uid","onesignal_playerID","advert_default","advert_country","sent_by","subscribe_affiliate_friend","block_by_friend","friend_status","ban_status","user_status","chat_messages","typing_message","frd_key","activeUsers","pay4me","reportUser","unBlockUser","blockUser","addModerator","removeModerator","unBanUser","gotoKeyDown","gotoKeyUp","deleteAttachment","handleAttachment","resetTypingMessage","sendMessage","smalldate","banUser","advert","alternate","textMesage","posts","user_notifications","notifications","message_details","agreement","deactivateAffiliate","activateAffiliate","twitter","instagram","registerModerator","userCountry","text1","text2","everydayblogger","weekblogger","monthblogger","todayblogger","advertrouter","External","gotoJoinGroup","gotoGroup","chat_groups","openBraket","closeBraket","chatgroup","messagesData","total_group_messages","number_online","typing_message_group","app_state","chat_group_name","group_messages","liveScores","sportsUpdate","standing","placeAdvert","lockApp","openApp","leaveGroup","group_name","goto","club","post_chat_messages","messagesToSend","createGroup","member","group_members","HomePage","SignInPage","FirstPagePage","SignUpPage","EditProfilePage","EditProfilePicturePage","PhoneVerifyPage","MembersPage","SearchPage","NewVersion","AboutPage","FormPage","CatalogPage","Pay4mePage","SettingsPage","ContactsPage","RequestsPage","ChatPage","UserNotificationsPage","LiveScoresPage","SportsUpdatePage","StandingsPage","AffiliatePage","BeamoderatorPage","ChatGroups","ChatGroup","PostFriends","NewGroup","AddMembers","GroupInfo","DynamicRoutePage","routeTo","routeFrom","RequestAndLoad","firstName","lastName","links","NotFoundPage","databaseURL","storageBucket","f7params","products","overlay","user_pageSize","show_tabbar","signed_in","user_club","deleteAccount","editClub","editLocation","editProfileMessage","sendTokenToServer","alertLoginData","AuthModule","setUploadButton","setUserPageSize","setAppVersion","setAppDbVersion","setValidInputs","setSignedIn","setSignedUp","setShowResendEmail","setPhotoURL","setDisplayName","setUserLocation","setProfileMessage","setTotalMessage","checkConnection","networkState","ETHERNET","WIFI","CELL_2G","CELL_3G","CELL_4G","CELL","getAppDbVersion","getAppVersion","resetVerifyInputs","verifyInputs","oldUser","signInWithEmailAndPassword","onAuthStateChanged","payload2","userInfo","newUserId","myCountry","createUserWithEmailAndPassword","emailverified","dateCreated","serviceExpiration","signUpOldUser","countryExist","appStateValue","sendVerification","sendEmailVerification","FileModule","setUploadFile","setImageURL","setGroupImageURL","setFiles","setImages","readFileMessage","picReader","FileReader","picFile","readAsDataURL","readFile","action_name","fileReader","filepath","uploadTask","uuidv4","downloadURL","uploadChatImages","uniq_id","firerequest","firefriends","firechats","fireusers","firegroups","firemessagecount","firetyping","fireblockfriends","firereportfriends","firenotifications","fireposts","ChatModule","members","setAppUpdate","setSearchResult","setUpdatePreloader","setTopPage","setBottomPage","setBackPage","setForwardPage","setDbReference","setDbCursor","setOnesignalPlayerID","setSentBy","setSubscribeAffiliateFriend","setReference","setSearchContacts","setContacts","setFriends","setMembers","setFriendRequests","setMessageCount","setChatMessages","setTypingMessage","setFriendStatus","setBlockByFriend","setUserDetails","deleteOldAccount","checkUserExistsAmerica","myContacts","tempUser","sendLatestMessage","user_id","user_key","userkey","frd_id","messcount","getOnesignalPlayerID","frd_uid","playerID","getFriendAffiliate","updateReadMessage","resetMessageCount","getUserMessageCount","confirmFriendRequest","createFriendTables","userKey","sendDownTypingMessage","friend_name","friend_photo_url","sendUpTypingMessage","getTypingMessages","current_user","getUserKey","getUserMessageCount2","getChatMessages","messages1","messages2","dateObj","sentby","groupedmessages","getTotalMessage","current_user_uid","totalMessage","confirmRequest","deleteRequest","getMyRequests","frd_request_id","userdetails","getUserDetails","getMyFriends","getMyFriendsAI","frd_info","newUserKey","userUid","sendNotification","contents","include_player_ids","getMyFriendsList","checkUserExists2","checkUserExists","getAllUsers","mergeMessages","mergeMessagesFriend","getMessageCount","checkUserInFriendList","checkUserBlocked","checkBlockByFriend","getAllUsersMigration","cnt","userName","newDate","reportUserToAdmin","report_id","report_flag","editPageSize","getReference","getAllUsersNew","getAllUsersForward","dbReference","dbCursor","mypayload","getAllUsersBackward","gotoTopPage","ref2","userLocation","ChatGroupModule","friend_members","setAdvertDefault","setAdvertCountry","setUserPayout","setSubscribeAffiliate","setPostChatMessages","setFriendMembers","setNumberOnline","setTotalGroupMessages","setChatGroups","setGroupMembers","setGroupMessages","setChatGroupName","setUserStatus","setAppState","setBanStatus","setTypingMessageGroup","setUserNotifications","setUserCountry","sendLatestGroupMessage","getGroupMessages","sendGroupMessage","userClub","onlinegroup","totalMessages","member_ref","memberkey","getAdvertDefault","myAdverts","getAdvertCountry","removeMember","getGroupMembers","groupmembers","addMember","newmember","group_pic","msgboard","BanReasons","closeAppState","openAppState","getGroupImage","getStaticGroupImage","pic","getUserCountry","getUserEmail","getUserClub","getGroupName2","getBanUserStatus","getUserStatus","getAppState","getOnlineStatistics","getTotalGroupMessages","statisticsUsersOnline","statisticsUsersOnlineRemove","pushNotifications","newPostKey","getUserNotifications","groupedmessagesSorted","getFriendMembers","sendMessageToFriends","getPostChatMessages","getUserPayout","datasnapshot","getUserAffiliate","deleteAffiliate","processModerator","twitter_handle","instagram_IG","processAffiliate","bank_name","account_name","account_number","paypal","getMyGroups","mygroups","Vuex","chat","groupchat","setAlertMessage","setQuitApplication","setShowTabs","Framework7Vue","newapp","getInstanceId","instanceId","OneSignal","getIds","pushToken","alue","initApp","AdMob","createBanner","adId","admobid","banner","AD_POSITION","BOTTOM_CENTER","overlap","offsetTopBar","autoShow","startInit","handleNotificationOpened","jsonData","inFocusDisplaying","OSInFocusDisplayOption","endInit","getBadge","setBadge","onBackgroundMessage"],"mappings":"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AAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,GAAK,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,KAAK,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,CAAC,MAAM,IAAM,C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S,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,IAAK83S,QAAS,YACtB,CAAE93S,KAAM,IAAK83S,QAAS,oBACtB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,IAAK83S,QAAS,+CACtB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,MACvB,CAAE93S,KAAM,KAAM83S,QAAS,MACvB,CAAE93S,KAAM,IAAK83S,QAAS,cACtB,CAAE93S,KAAM,IAAK83S,QAAS,UACtB,CAAE93S,KAAM,IAAK83S,QAAS,qBACtB,CAAE93S,KAAM,IAAK83S,QAAS,qBACtB,CAAE93S,KAAM,IAAK83S,QAAS,mBACtB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,IAAK83S,QAAS,sCACtB,CAAE93S,KAAM,IAAK83S,QAAS,YACtB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,IAAK83S,QAAS,cACtB,CAAE93S,KAAM,IAAK83S,QAAS,SACtB,CAAE93S,KAAM,IAAK83S,QAAS,mBACtB,CAAE93S,KAAM,IAAK83S,QAAS,kBACtB,CAAE93S,KAAM,IAAK83S,QAAS,uCACtB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,OACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,KAAM83S,QAAS,MACvB,CAAE93S,KAAM,KAAM83S,QAAS,KACvB,CAAE93S,KAAM,IAAK83S,QAAS,aACtB,CAAE93S,KAAM,IAAK83S,QAAS,iBACtB,CAAE93S,KAAM,IAAK83S,QAAS,kBACtB,CAAE93S,KAAM,KAAM83S,QAAS,MACvB,CAAE93S,KAAM,IAAK83S,QAAS,mCACtB,CAAE93S,KAAM,IAAK83S,QAAS,UA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,4BAIA,OAcM,OAZ0C,IALhD,2CAKyBoO,QAAQuqB,GACzB20C,EAAK,UACb,IALA,yBAKA,WACQA,EAAK,OACb,IARA,oCAQA,WACQA,EAAK,UACb,kBACQA,EAAK,WACb,qBACQA,EAAK,SAGAA,GAGTknX,eAzBJ,SAyBA,GACM,IAAI9uR,EAAU,GACd,OAAQsB,GACN,IAAK,KACHtB,EAAU,cACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,sBACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,qBACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,kBACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,oBACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,uBACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,uBACV,MACF,IAAK,KACHA,EAAU,mBACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,8BACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,oBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,2BACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,2BACV,MACF,IAAK,KACHA,EAAU,2BACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,2BACV,MACF,IAAK,KACHA,EAAU,mBACV,MACF,IAAK,KACHA,EAAU,8BACV,MACF,IAAK,KACHA,EAAU,wBACV,MACF,IAAK,KACHA,EAAU,sBACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,4BACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,mBACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,oCACV,MACF,IAAK,KACHA,EAAU,gCACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,mBACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,qBACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,mBACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,wBACV,MACF,IAAK,KACHA,EAAU,kCACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,4BACV,MACF,IAAK,KACHA,EAAU,mCACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,wBACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,wBACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,qBACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,oBACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,cACV,MACF,IAAK,KACHA,EAAU,OACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,sBACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,eACV,MACF,IAAK,KACHA,EAAU,wBACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,uBACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,0BACV,MACF,IAAK,KACHA,EAAU,uCACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,gBACV,MACF,IAAK,KACHA,EAAU,aACV,MACF,IAAK,KACHA,EAAU,UACV,MACF,IAAK,KACHA,EAAU,YACV,MACF,IAAK,KACHA,EAAU,WACV,MACF,IAAK,KACHA,EAAU,yBACV,MACF,IAAK,KACHA,EAAU,iBACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,QACV,MACF,IAAK,KACHA,EAAU,SACV,MACF,IAAK,KACHA,EAAU,WACV,MAEF,QACEA,EAAU,UAEd,OAAOA,GAET+uR,SAxyBJ,SAwyBA,GACMt0b,KAAK4pL,QAAUtyD,GAEjBi9T,UA3yBJ,SA2yBA,GACMv0b,KAAK8zb,SAAWx8T,GAElBk9T,UA9yBJ,SA8yBA,GACMx0b,KAAK+zb,SAAWz8T,GAElBm9T,QAjzBJ,WAizBA,WAGM,GADAz0b,KAAKk0b,KAAOl0b,KAAK4pL,QAAQ3c,gBACrBjtK,KAAKk0b,KAAKjyb,OAAS,EACrBjC,KAAKi6H,OAAOrF,OACpB,kBACA,yCAEA,CAIQ,IAAR,YACQ,GAAoB,WAAhB50H,KAAKwxb,SAAwC,OAAhBxxb,KAAKwxb,QAEpCllX,QAAQoqD,QAAQj2H,SAASgyI,KACnC,uBACA,kBAEY,EAAZ,qBACY,EAAZ,cACA,kBACA,oCAGA,mBACY,QAAZ,wBACY,EAAZ,cACA,kBACA,gDAKA,CACU,IAAV,mBAEU,GAAV,EACA,OACA,2BACA,kBACY,OAAZ,qBAEY,EAAZ,cACA,kBACA,oCAGA,mBACY,EAAZ,cACA,kBACA,yCAOIiiT,UA32BJ,WA22BA,WACM,GAAI10b,KAAKk0b,KAAKjyb,OAAS,GAAwB,GAAnBjC,KAAKo0b,IAAInyb,OACnCjC,KAAKi6H,OAAOrF,OACpB,kBACA,yCAEA,CAEQ,IACR,WAC4B,WAAhB50H,KAAKwxb,SAAwC,OAAhBxxb,KAAKwxb,QAEpCllX,QAAQoqD,QAAQj2H,SAASgyI,KACnC,oDACA,iBAEY,IAAZ,KACY,EAAZ,gDACY,EAAZ,sCACY,IAAZ,oBAEY,EAAZ,kDACY,EAAZ,wDAEA,mBACY,EAAZ,cACA,kBACA,4CAKU9yI,OAAO+zb,mBACjB,WACA,kBACY,IAAZ,KACY,EAAZ,gDACY,EAAZ,sCACY,IAAZ,oBAEY,EAAZ,kDACY,EAAZ,wDAEA,mBACY,EAAZ,cACA,kBACA,8CAMIiB,cA/5BJ,WA+5BA,WACMr0b,YAAW,WAETX,OAAOi1b,kBAAoB,IAAI,GAAvC,yBACA,sBACA,CACU,KAAV,YACU,SAAV,cAIU,mBAAV,eAOQ,EAAR,uCACA,OAGEj1Z,SAAU,CACRk1Z,aADJ,WAGM,OAAO93b,OAAOgL,KAAK/H,KAAK4pL,UAE1BkrQ,cALJ,WAMM,OAAO/3b,OAAOgL,KAAK/H,KAAK8zb,WAE1BiB,cARJ,WASM,OAAOh4b,OAAOgL,KAAK/H,KAAK+zb,YAG5B14Y,QAv+BF,WAw+BIr7C,KAAK20b,mBCthCM,I,OAXC,GACd,ICTW,WAAa,IAAIt8T,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,oBAAoB,eAAe,GAAG,eAAe,KAAK,CAACyF,EAAG,wBAAwB,CAACusF,EAAIvtF,GAAG,8BAA8ButF,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,qBAAqB,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,WAAW,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,kBAAkB,KAAK,CAACyF,EAAG,MAAM,CAACuR,YAAY,kBAAkB,CAACvR,EAAG,sBAAsB,CAACuR,YAAY,OAAOhX,MAAM,CAAC,GAAK,eAAe,MAAQ,aAAa,KAAOgyF,EAAI+pD,KAAK,SAAW/pD,EAAI2rD,SAAS,oBAAoB3rD,EAAIw7T,iBAAiB,sBAAsBx7T,EAAIuuD,cAAc,OAASvuD,EAAI27T,gBAAgB,UAAY,GAAG,MAAQ37T,EAAI47T,gBAAgBvvZ,GAAG,CAAC,OAAS2zF,EAAIi8T,UAAUrza,MAAM,CAAC3jB,MAAO+6H,EAAe,YAAE7tH,SAAS,SAAU6hL,GAAMh0D,EAAIm4T,YAAYnkQ,GAAK73I,WAAW,iBAAiB6jF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,kBAAkButF,EAAIvtF,GAAG,iBAAiButF,EAAI7tF,GAAG6tF,EAAIuxD,QAAQ3c,iBAAiB,eAAe,GAAG50C,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIo8T,UAAU,CAACp8T,EAAIvtF,GAAG,aAAautF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACzF,MAAM,CAAC,GAAK,yBAAyBgyF,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAACzF,MAAM,CAAC,MAAQgyF,EAAI+7T,IAAI,MAAQ,qBAAqB,KAAO,OAAO,YAAc,YAAY,eAAe,IAAI1vZ,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAI+7T,IAAMnrZ,EAAOna,OAAOxxB,WAAW,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,GAAG,MAAQ,QAAQ3B,GAAG,CAAC,MAAQ2zF,EAAIq8T,YAAY,CAACr8T,EAAIvtF,GAAG,YAAYutF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,GAAG,MAAQ,QAAQ3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIo8T,aAAa,CAACp8T,EAAIvtF,GAAG,iBAAiB,IAAI,IAAI,KACjoD,IDWpB,EACA,KACA,WACA,M,SEGa,GAXC,GC8ChB,CACEtzB,KADF,WAEI,MAAO,CACLw9a,OAAQ,EAAd,KACMC,OAAQ,EAAd,OAGEt1Z,SAAU,CACRi1Q,YADJ,WAEM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,cAG/Bv5P,QAZF,WAcIr7C,KAAKi6H,OAAO5C,SAAS,oBCnEZ,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,qBAAqBgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACzF,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAAqB,WAAnBusF,EAAIu8K,YAA0B9oQ,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAACyF,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,iCAAiCutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,0DAA0DutF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,yEAAyE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QACxvB,0BACA,gCAAgC,MAAQ,MAAM,OAAS,YAAY,MAAM,GAAGwsD,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAAqB,OAAnBgyF,EAAIu8K,YAAsB9oQ,EAAG,MAAM,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,+BAA+ButF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,sEAAsE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QACpb,yBACA,8BAA8B,MAAQ,YAAY,GAAGwsD,EAAIttF,QAAQ,IAAI,IAAI,KACvE,IFMpB,EACA,KACA,KACA,M,2BGd4L,GCoC9L,CACEpL,SAAU,CACRu1Z,SADJ,WAEM,OAAOl1b,KAAKi6H,OAAOtE,QAAQu/T,WAG/Bz1Z,QAAS,CACP01Z,OADJ,SACA,GACM,IAAI5wW,EAAU,GACdA,EAAQ6wW,OAAS,GAAvB,yBACM7wW,EAAQ8wW,UAAY9F,EAAIv1Z,IACxBr5B,QAAQ6wE,IAAI,UAAW+S,GACvBvkF,KAAKi6H,OAAO5C,SAAS,cAAe9yC,KAIxClpC,QAhBF,WAiBIr7C,KAAKi6H,OAAO5C,SAAS,iBClCV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,UAAU,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,WAAW,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAY,UAAE,SAASi9T,EAAQ5sa,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQivZ,EAAQ14b,OAAO,CAAwB,UAAtB04b,EAAQlF,WAAwBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACgyF,EAAIvtF,GAAG,aAAa,GAAGgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,cAAc,GAAGutF,EAAIvtF,GAAG,KAA0B,GAApBwqZ,EAAQjF,UAAqC,GAApBiF,EAAQjF,SAAevkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,eAAeC,KAAK,eAAe,CAAC+xF,EAAIvtF,GAAG,eAAeutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA4B,WAAtBwqZ,EAAQlF,WAAyBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,IAAI,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAIsD,OAAO25T,EAAQ1C,UAAUnwb,OAAO,QAAQ,QAAQ,GAAG41H,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAMivZ,EAAQnF,WAAW7pZ,KAAK,eAAc,IAAI,KACxlC,IDWpB,EACA,KACA,WACA,M,mBEf0L,GC8L5L,CACE2Q,WAAY,CAEVs+Y,K,QAAJ,GAEE/9a,KALF,WAMI,MAAO,CACLm1K,QAAS,6CAETF,MAAO,GACP+oQ,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,QAAS,EACTC,QAAS,EACTC,QAAS,GACTC,KAAM,IACNC,MAAO,GACPC,MAAO,GACP1oQ,YAAa,GACb/nB,QAAS,KACTqnB,SAAU,MACVznH,KAAM,CACZ,CACQ,SAAR,QACQ,UAAR,mBAGM9qC,IAAK,CACX,CACQ,GAAR,QAEA,CACQ,GAAR,SAIM47Z,eAAgB,KAChBC,OAAQ,KACRC,eAAgB,OAGpBx2Z,SAAU,CACRyiF,UADJ,WAEM,OAAOpiH,KAAKi6H,OAAOtE,QAAQvT,WAE7BytU,aAJJ,WAKM,OAAO7vb,KAAKi6H,OAAOtE,QAAQk6T,cAE7BF,aAPJ,WAQM,OAAO3vb,KAAKi6H,OAAOtE,QAAQg6T,eAG/BlwZ,QAAS,CACP22Z,UADJ,aAEIC,UAFJ,aAGIC,QAHJ,aAII9rb,SAAU,SAAd,GAGM,GAFA7J,QAAQ6wE,IAAIukB,GAGlB,kBACA,mCACA,wCACA,CAEQ/1F,KAAKi2b,eAAiBlgW,EAASa,OAG/B,IAAI2/V,EAAav2b,KAAKk2b,OAAOM,OACzBC,EAAgB1gW,EAASv+E,KAAKA,KAAKk1K,OACnCgqQ,EAAqC,IAAhBD,EACrBE,EAAYJ,EAAaG,EAG7B12b,KAAKi6H,OAAO5C,SAAS,gBAErBr3H,KAAKi2b,eAAiBlgW,EAAS6gW,QAG/B,IAAIxvb,EAAM,kCAAoCsvb,EAC9C12b,KAAKi6H,OAAO5C,SAAS,cAAe,CAClC6+T,OAAQl2b,KAAKk2b,OACb9ub,IAAKA,EACLyvb,IAAK,OAIP,IAAIC,EAAW,GAAvB,yBACQ,GAAR,EACA,WACA,8BACA,QACU,OAAV,IAKYA,EAAW,GAAvB,yBACQ,GAAR,EACA,WACA,uBACA,MACU,WAAV,gBACU,aAAV,kBACU,UAAV,mBACU,aAAV,EACU,iBAAV,EACU,UAAV,EACU,WAAV,uBACU,aAAV,mBAIQ,IAAIxzH,EAAW,CACbyzH,OAAQ/2b,KAAKk2b,OAAOl8Z,IACpByyJ,MAAOzsL,KAAKk2b,OAAOzpQ,MACnBuqQ,UAAWh3b,KAAKk2b,OAAOM,OACvBS,aAAcR,EACdS,iBAAkBR,EAClBS,UAAWR,EACXS,WAAYp3b,KAAK6vb,aAAajzb,KAC9By6b,SAAU,GAApB,yBACUC,aAAct3b,KAAKk2b,OAAOt5b,MAG5BoD,KAAKwpV,IAAIjlQ,QAAQu/O,KACzB,qDACA,GACA,YACU,QAAV,iCAKIzrQ,MAAO,SAAX,MAOEhd,QA9IF,WA+II,IAAJ,2BACIr7C,KAAKk2b,OAAShia,KAAK4nC,MAAM2+P,GACzBz6T,KAAKm2b,eAAiBn2b,KAAKk2b,OAE3Bl2b,KAAKi6H,OAAO5C,SAAS,gBACrBr3H,KAAKi6H,OAAO5C,SAAS,kBACrBr3H,KAAK+1b,MAAQ/1b,KAAK6vb,aAAajzb,KAC/BoD,KAAKysL,MAAQzsL,KAAK6vb,aAAapjQ,MAC/BzsL,KAAKi6H,OAAO5C,SAAS,oBClUV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,UAAU,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,eAAe,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,qBAAqButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACzF,MAAM,CAAC,OAAS,KAAK,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,iCAAiCutF,EAAI7tF,GAAGxqC,KAAKk2b,OAAOt5b,SAASy7H,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,6DAA6DutF,EAAIvtF,GAAG,KAAyB,WAAnB9qC,KAAK2vb,aAAyB7jZ,EAAG,MAAM,CAACA,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIm9T,QAAQ,UAAYn9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,kCAAkC,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIo9T,QAAQ,UAAYp9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,kCAAkC,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIq9T,QAAQ,UAAYr9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,gCAAgC,IAAI,GAAGgB,EAAG,MAAM,CAACA,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIs9T,QAAQ,UAAYt9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,iCAAiC,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIu9T,QAAQ,UAAYv9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,iCAAiC,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQgyF,EAAIo0D,MAAM,OAASp0D,EAAIw9T,QAAQ,UAAYx9T,EAAIjW,UAAU,WAAWiW,EAAIs0D,QAAQ,SAAWt0D,EAAI7tH,SAAS,MAAQ6tH,EAAIhgE,MAAM,SAAWggE,EAAIlzD,KAAK,YAAckzD,EAAIi1D,YAAY,YAAcj1D,EAAIy9T,KAAK,kBAAoBz9T,EAAI09T,MAAM,iBAAmB19T,EAAI29T,MAAM,eAAiB,2BAA2B,aAAe,IAAI,YAAc,qBAAqB,SAAW,MAAM,QAAU,KAAK,cAAc,eAAe,CAAClqZ,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,gCAAgC,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAAEusF,EAAkB,eAAEvsF,EAAG,MAAM,CAACzF,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,OAAO,CAACusF,EAAIvtF,GAAG,aAAautF,EAAI7tF,GAAG6tF,EAAI49T,qBAAqB59T,EAAIttF,QAAQ,KAClsH,IDWpB,EACA,KACA,WACA,M,SEf2L,GC0I7L,CACEvzB,KADF,WAEI,MAAO,CACL+/a,WAAW,EACXC,SAAU,EACVtI,aAAc,EACdr0Y,IAAK,GACLyqC,OAAQ,KACRmyW,SAAU,EACVC,UAAU,EACVC,aAAa,EACbC,SAAS,EACTC,YAAY,IAGhB5+Z,MAAO,CACL6+Z,UADJ,SACA,GACmB,MAATx6b,IACF0C,KAAK03b,SAAWp6b,IAIpBy6b,aAPJ,SAOA,GACmB,MAATz6b,IACF0C,KAAK23b,YAAcr6b,IAIvB06b,SAbJ,SAaA,GACmB,MAAT16b,IACF0C,KAAK43b,QAAUt6b,IAInB26b,YAnBJ,SAmBA,GACmB,MAAT36b,IACF0C,KAAK63b,WAAav6b,IAItB46b,aAzBJ,SAyBA,GACmB,MAAT56b,IACF0C,KAAK66C,IAAMv9C,IAKf66b,UAhCJ,SAgCA,GACmB,MAAT76b,IACF0C,KAAKslF,OAAShoF,IAIlBmyb,eAtCJ,SAsCA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAMhCxqS,SAAU,CACRy4Z,UADJ,WAEM,OAAOp4b,KAAKi6H,OAAOtE,QAAQyiU,WAE7BJ,SAJJ,WAMM,OAAOh4b,KAAKi6H,OAAOtE,QAAQqiU,UAE7BC,YARJ,WASM,OAAOj4b,KAAKi6H,OAAOtE,QAAQsiU,aAG7BH,UAZJ,WAaM,OAAO93b,KAAKi6H,OAAOtE,QAAQmiU,WAE7BC,aAfJ,WAgBM,OAAO/3b,KAAKi6H,OAAOtE,QAAQoiU,cAE7BG,aAlBJ,WAoBM,OADAl4b,KAAK66C,IAAM76C,KAAKi6H,OAAOtE,QAAQuiU,aACxBl4b,KAAKi6H,OAAOtE,QAAQuiU,cAE7BC,UAtBJ,WAuBM,OAAOn4b,KAAKi6H,OAAOtE,QAAQwiU,WAE7B1I,eAzBJ,WA0BM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YA5BJ,WA6BM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7BsgJ,SA/BJ,WAgCM,OAAOl1b,KAAKi6H,OAAOtE,QAAQu/T,UAG7BpF,QAnCJ,WAoCM,OAAO9vb,KAAKi6H,OAAOtE,QAAQm6T,SAE7BC,gBAtCJ,WAuCM,OAAO/vb,KAAKi6H,OAAOtE,QAAQo6T,kBAI/BtwZ,QAAS,IAAX,CACI,YADJ,WACA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,UACA,kBACA,sBACA,kCAEA,yCATA,8CAWI,SAZJ,WAYA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,UACA,kBACA,sBACA,kCAEA,sCATA,8CAWI,QAvBJ,WAuBA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,UACA,kBACA,sBACA,kCAEA,mCATA,8CAYI,QAnCJ,WAmCA,2HACA,0CADA,SAEA,qCAFA,OAEA,WAFA,QAGA,MACA,kBACA,kBACA,sBACA,kCAEA,0CATA,+CAYI,SA/CJ,WA+CA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,kBACA,kBACA,sBACA,kCACA,4BACA,oCACA,2CAVA,+CAYI,cA3DJ,WA2DA,kHAEA,iCAFA,gCAGA,qCAHA,OAIA,WAJA,QAKA,gBACA,kBACA,6EAPA,8CAYI+vZ,SAvEJ,WAwEMxvb,KAAKi6H,OAAOrF,OAAO,eAAe,IAGpCugU,OA3EJ,SA2EA,GACM,IAAI5wW,EAAU,GACdA,EAAQ6wW,OAAS,GAAvB,yBACM7wW,EAAQ8wW,UAAY9F,EAAIv1Z,IACxBr5B,QAAQ6wE,IAAI,UAAW+S,GACvBvkF,KAAKi6H,OAAO5C,SAAS,cAAe9yC,IAEtC8qW,SAlFJ,SAkFA,GACM,IAAIC,EAAap7Z,KAAKC,UAAUo7Z,GAChCvvb,KAAK2lV,UAAUxb,SAAS,SAAWjtP,mBAAmBoyW,MApF5D,uBAuFI,KAAJ,mCAIE,QArMF,WAqMA,qHAOA,kBAPA,SAmBA,wCAnBA,wCAsBA,6CACA,gBACA,kBACA,6DAzBA,0BA8BA,kBACA,oCACA,qCACA,mCAjCA,gDC5Te,I,OAXC,GACd,ICTW,WAAa,IAAIj3T,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,SAAS3B,GAAG,CAAC,gBAAgB2zF,EAAIm3T,WAAW,CAAC1jZ,EAAG,YAAY,CAACuR,YAAY,4BAA4BhX,MAAM,CAAC,MAAQ,YAAY,CAACyF,EAAG,eAAe,CAACA,EAAG,UAAU,CAACuR,YAAY,mBAAmBhX,MAAM,CAAC,iBAAiB,kBAAkB,WAAW,YAAY,cAAc,YAAY,UAAU,kBAAkB,MAAQ,WAAW,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACuR,YAAY,iBAAiBhX,MAAM,CAAC,WAAa,GAAG,mBAAmB,eAAe,YAAY,cAAc,kBAAkBgyF,EAAIutN,OAAOC,WAAW,GAAGxtN,EAAIvtF,GAAG,KAAOutF,EAAI+/T,UAAk2DtsZ,EAAG,MAAM,CAACA,EAAG,WAAW,CAACA,EAAG,iBAAiB,CAACzF,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAyB,WAAnButF,EAAIu8K,YAA0B9oQ,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAACyF,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,iCAAiCutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,0DAA0DutF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,yEAAyE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QAC7iG,0BACA,gCAAgC,MAAQ,MAAM,OAAS,YAAY,MAAM,GAAGwsD,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAAqB,OAAnBgyF,EAAIu8K,YAAsB9oQ,EAAG,MAAM,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,+BAA+ButF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,sEAAsE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QACpb,yBACA,8BAA8B,MAAQ,YAAY,GAAGwsD,EAAIttF,QAAQ,IAAI,IAAI,GAJkkBe,EAAG,MAAM,CAACA,EAAG,UAAU,CAACuR,YAAY,uBAAuB,CAACvR,EAAG,eAAe,CAACzF,MAAM,CAAC,MAAQ,oBAAoB,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACuR,YAAY,8BAA8BhX,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAY,UAAE,SAASi9T,EAAQ5sa,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQivZ,EAAQ14b,MAAM8nC,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIg3T,SAASiG,MAAY,CAAwB,UAAtBA,EAAQlF,WAAwBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAe,GAAGgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,cAAc,GAAGutF,EAAIvtF,GAAG,KAAMwqZ,EAAgB,SAAExpZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAAC+xF,EAAIvtF,GAAGutF,EAAI7tF,GAAG8qZ,EAAQ91b,aAAa64H,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA0B,GAApBwqZ,EAAQjF,UAAqC,GAApBiF,EAAQjF,SAAevkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,eAAeC,KAAK,eAAe,CAAC+xF,EAAIvtF,GAAG,eAAeutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA4B,WAAtBwqZ,EAAQlF,WAAyBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,IAAI,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,KAAKutF,EAAI7tF,GAAG6tF,EAAIsD,OAAO25T,EAAQ1C,UAAUnwb,OAAO,QAAQ,QAAQ,GAAG41H,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAMivZ,EAAQnF,WAAW7pZ,KAAK,eAAc,GAAG+xF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,IAAM,KAAK,CAAEgyF,EAAY,SAAEvsF,EAAG,SAAS,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIipN,WAAW,CAACjpN,EAAIvtF,GAAG,WAAW,GAAGutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMutF,EAAW,QAAEvsF,EAAG,SAAS,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIggU,UAAU,CAAChgU,EAAIvtF,GAAG,UAAU,GAAGutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMutF,EAAc,WAAEvsF,EAAG,SAAS,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIigU,WAAW,CAACjgU,EAAIvtF,GAAG,WAAW,GAAGutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMutF,EAAe,YAAEvsF,EAAG,SAAS,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIwhN,UAAU,CAACxhN,EAAIvtF,GAAG,YAAY,GAAGutF,EAAIttF,MAAM,IAAI,IAAI,GAIn5EstF,EAAIvtF,GAAG,KAAKutF,EAAIvtF,GAAG,YAAY,KAC3G,IDOpB,EACA,KACA,WACA,M,SEf0L,GC6N5L,CACEtzB,KADF,WAEI,MAAO,CACL+/a,WAAW,EACXC,SAAU,EACVtI,aAAc,EACdr0Y,IAAK,GACLi+M,OAAQ,KACRy/L,QAAS,SACT37b,KAAM,KACN4C,SAAU,KACV+lK,QAAS,OAGbtsI,MAAO,CACL6+Z,UADJ,SACA,GACmB,MAATx6b,IACF0C,KAAK03b,SAAWp6b,IAIpBk7b,gBAPJ,SAOA,GACmB,GAATl7b,IACFqD,QAAQ6wE,IAAI,eAAgBl0E,GAC5B,GAAR,eACQ,GAAR,iBACA,yEAIIm7b,aAhBJ,SAgBA,GACmB,MAATn7b,GAEF,GAAR,gBAIIy6b,aAvBJ,SAuBA,GACmB,MAATz6b,IACF0C,KAAK23b,YAAcr6b,IAIvB06b,SA7BJ,SA6BA,GACmB,MAAT16b,IACF0C,KAAK43b,QAAUt6b,IAInB26b,YAnCJ,SAmCA,GACmB,MAAT36b,IACF0C,KAAK63b,WAAav6b,IAItB46b,aAzCJ,SAyCA,GACmB,MAAT56b,IACF0C,KAAK66C,IAAMv9C,IAKf66b,UAhDJ,SAgDA,GACmB,MAAT76b,IACF0C,KAAKslF,OAAShoF,IAIlBmyb,eAtDJ,SAsDA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAMhCxqS,SAAU,CACRy4Z,UADJ,WAEM,OAAOp4b,KAAKi6H,OAAOtE,QAAQyiU,WAE7BI,gBAJJ,WAKM,OAAOx4b,KAAKi6H,OAAOtE,QAAQ6iU,iBAE7BC,aAPJ,WASM,OAAOz4b,KAAKi6H,OAAOtE,QAAQ8iU,cAG7BT,SAZJ,WAcM,OAAOh4b,KAAKi6H,OAAOtE,QAAQqiU,UAE7BC,YAhBJ,WAiBM,OAAOj4b,KAAKi6H,OAAOtE,QAAQsiU,aAG7BH,UApBJ,WAqBM,OAAO93b,KAAKi6H,OAAOtE,QAAQmiU,WAE7BC,aAvBJ,WAwBM,OAAO/3b,KAAKi6H,OAAOtE,QAAQoiU,cAE7BG,aA1BJ,WA4BM,OADAl4b,KAAK66C,IAAM76C,KAAKi6H,OAAOtE,QAAQuiU,aACxBl4b,KAAKi6H,OAAOtE,QAAQuiU,cAE7BC,UA9BJ,WA+BM,OAAOn4b,KAAKi6H,OAAOtE,QAAQwiU,WAE7B1I,eAjCJ,WAkCM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YApCJ,WAqCM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7B8jJ,gBAvCJ,WAwCM,OAAO14b,KAAKi6H,OAAOtE,QAAQ+iU,iBAG7B5I,QA3CJ,WA4CM,OAAO9vb,KAAKi6H,OAAOtE,QAAQm6T,SAE7BC,gBA9CJ,WA+CM,OAAO/vb,KAAKi6H,OAAOtE,QAAQo6T,kBAI/BtwZ,QAAS,CACP,YADJ,WACA,2HACA,oCACA,uBACA,uBACA,qCAJA,SAKA,qCALA,UAKA,WALA,QAMA,MACA,UACA,kBACA,sBACA,kCAEA,oBAZA,wBAaA,8FAbA,UAgBA,yCAhBA,0BAmBA,kBAnBA,oBAoBA,aApBA,wBAqBA,cACA,4CACA,OADA,iDAtBA,UAyBA,uCAzBA,uCA2BA,gEA3BA,WA+BA,sBA/BA,oBAgCA,iBAhCA,wBAiCA,sBACA,4CACA,WADA,iDAlCA,UAqCA,kBACA,sBACA,GAvCA,uCA0CA,gBACA,kBACA,kCA5CA,WAiDA,qBAjDA,oBAkDA,mBACA,gBAnDA,wBAoDA,oBACA,4CACA,UADA,iDArDA,UAwDA,kBACA,qBACA,GA1DA,uCA6DA,gBACA,kBACA,iCA/DA,+CAoEI,SArEJ,WAqEA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,UACA,kBACA,sBACA,kCAEA,sCATA,8CAWI,QAhFJ,WAgFA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,UACA,kBACA,sBACA,kCAEA,mCATA,8CAYI,QA5FJ,WA4FA,2HACA,0CADA,SAEA,qCAFA,OAEA,WAFA,QAGA,MACA,kBACA,kBACA,sBACA,kCAEA,0CATA,+CAYI,SAxGJ,WAwGA,oIAEA,qCAFA,OAEA,WAFA,QAGA,MACA,kBACA,kBACA,sBACA,kCACA,4BACA,oCACA,2CAVA,+CAYI,cApHJ,WAoHA,kHAEA,iCAFA,gCAGA,qCAHA,OAIA,WAJA,QAKA,gBACA,kBACA,6EAPA,8CAYI+vZ,SAhIJ,WAiIMxvb,KAAKi6H,OAAOrF,OAAO,eAAe,IAGpCugU,OApIJ,SAoIA,GACM,IAAI5wW,EAAU,GACdA,EAAQ6wW,OAAS,GAAvB,yBACM7wW,EAAQ8wW,UAAY9F,EAAIv1Z,IACxBr5B,QAAQ6wE,IAAI,UAAW+S,GACvBvkF,KAAKi6H,OAAO5C,SAAS,cAAe9yC,IAEtC8qW,SA3IJ,SA2IA,GACM,IAAIC,EAAap7Z,KAAKC,UAAUo7Z,GAChCvvb,KAAK2lV,UAAUxb,SAAS,SAAWjtP,mBAAmBoyW,MAQ1D,QAtRF,WAsRA,qHACA,sCAQA,kBATA,SAqBA,wCArBA,wCAwBA,6CACA,gBACA,kBACA,6DA3BA,0BAgCA,kBAhCA,gDChee,I,OAXC,GACd,ICTW,WAAa,IAAIj3T,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,SAAS3B,GAAG,CAAC,gBAAgB2zF,EAAIm3T,WAAW,CAAC1jZ,EAAG,YAAY,CAACuR,YAAY,4BAA4BhX,MAAM,CAAC,MAAQ,mBAAmB,CAACyF,EAAG,eAAe,CAACA,EAAG,UAAU,CAACuR,YAAY,mBAAmBhX,MAAM,CAAC,iBAAiB,kBAAkB,WAAW,YAAY,cAAc,YAAY,UAAU,kBAAkB,MAAQ,WAAW,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACuR,YAAY,iBAAiBhX,MAAM,CAAC,WAAa,GAAG,mBAAmB,eAAe,YAAY,cAAc,kBAAkBgyF,EAAIutN,OAAOC,WAAW,GAAGxtN,EAAIvtF,GAAG,KAAOutF,EAAI+/T,UAAupHtsZ,EAAG,MAAM,CAACA,EAAG,WAAW,CAACA,EAAG,iBAAiB,CAACzF,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAyB,WAAnButF,EAAIu8K,YAA0B9oQ,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAACyF,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,iCAAiCutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,0DAA0DutF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,yEAAyE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QACz2J,0BACA,gCAAgC,MAAQ,MAAM,OAAS,YAAY,MAAM,GAAGwsD,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAO,CAAqB,OAAnBgyF,EAAIu8K,YAAsB9oQ,EAAG,MAAM,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,+BAA+ButF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,sEAAsE,SAAW,KAAK,CAACyF,EAAG,MAAM,CAACzF,MAAM,CAAC,IAAMgyF,EAAI41T,QAAQpiX,QACpb,yBACA,8BAA8B,MAAQ,YAAY,GAAGwsD,EAAIttF,QAAQ,IAAI,IAAI,GAJykBe,EAAG,MAAM,CAAsB,GAApBusF,EAAIogU,aAAmB3sZ,EAAG,MAAM,CAACA,EAAG,UAAU,CAACuR,YAAY,uBAAuB,CAACvR,EAAG,eAAe,CAACzF,MAAM,CAAC,MAAQ,oBAAoB,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACuR,YAAY,8BAA8BhX,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAmB,iBAAE,SAASi9T,EAAQ5sa,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQivZ,EAAQ14b,MAAM8nC,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIg3T,SAASiG,MAAY,CAAwB,UAAtBA,EAAQlF,WAAwBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAe,GAAGgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,cAAc,GAAGutF,EAAIvtF,GAAG,KAAMwqZ,EAAgB,SAAExpZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAAC+xF,EAAIvtF,GAAGutF,EAAI7tF,GAAG8qZ,EAAQ91b,aAAa64H,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA0B,GAApBwqZ,EAAQjF,UAAqC,GAApBiF,EAAQjF,SAAevkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,eAAeC,KAAK,eAAe,CAAC+xF,EAAIvtF,GAAG,eAAeutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA4B,WAAtBwqZ,EAAQlF,WAAyBtkZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,IAAI,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,KAAKutF,EAAI7tF,GAAG6tF,EAAIsD,OAAO25T,EAAQ1C,UAAUnwb,OAAO,QAAQ,QAAQ,GAAG41H,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAMivZ,EAAQnF,WAAW7pZ,KAAK,eAAc,IAAI,GAAG+xF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAA0B,GAApButF,EAAIogU,aAAmB3sZ,EAAG,MAAM,CAACzF,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,IAAI,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,QAAQ,CAACgyF,EAAIvtF,GAAG,iCAAiC,KAAKutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACuR,YAAY,aAAahX,MAAM,CAAC,MAAQ,WAAW,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,4DAA4DutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACA,EAAG,QAAQ,CAACuR,YAAY,2BAA2B,CAACvR,EAAG,QAAQ,CAACzF,MAAM,CAAC,KAAO,QAAQ,KAAOgyF,EAAIkgU,QAAQ,MAAQ,SAAS,QAAU,IAAI7zZ,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIkgU,QAAUtvZ,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACuR,YAAY,wBAAwBg7E,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,SAAS,CAACgyF,EAAIvtF,GAAG,0BAA0B,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACA,EAAG,QAAQ,CAACuR,YAAY,2BAA2B,CAACvR,EAAG,QAAQ,CAACzF,MAAM,CAAC,KAAO,QAAQ,KAAOgyF,EAAIkgU,QAAQ,MAAQ,QAAQ7zZ,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIkgU,QAAUtvZ,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACuR,YAAY,wBAAwBg7E,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQgyF,EAAIz7H,KAAK,KAAO,OAAO,YAAc,wBAAwB,eAAe,IAAI8nC,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIz7H,KAAOqsC,EAAOna,OAAOxxB,WAAW,IAAI,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACA,EAAG,QAAQ,CAACuR,YAAY,2BAA2B,CAACvR,EAAG,QAAQ,CAACzF,MAAM,CAAC,KAAO,QAAQ,KAAOgyF,EAAIkgU,QAAQ,MAAQ,YAAY7zZ,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIkgU,QAAUtvZ,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACuR,YAAY,wBAAwBg7E,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQgyF,EAAI74H,SAAS,KAAO,OAAO,YAAc,qBAAqB,eAAe,IAAIklC,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAI74H,SAAWypC,EAAOna,OAAOxxB,WAAW,IAAI,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACA,EAAG,QAAQ,CAACuR,YAAY,2BAA2B,CAACvR,EAAG,QAAQ,CAACzF,MAAM,CAAC,KAAO,QAAQ,KAAOgyF,EAAIkgU,QAAQ,MAAQ,WAAW7zZ,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIkgU,QAAUtvZ,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACuR,YAAY,wBAAwBg7E,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQgyF,EAAIktC,QAAQ,KAAO,OAAO,YAAc,oBAAoB,eAAe,IAAI7gI,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIktC,QAAUt8H,EAAOna,OAAOxxB,WAAW,IAAI,IAAI,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIsgU,cAAc,CAACtgU,EAAIvtF,GAAG,mBAAmB,IAAI,IAI9sI,KAC7E,IDOpB,EACA,KACA,WACA,M,SEf8L,GC6DhM,CACEtzB,KADF,WAEI,MAAO,CACL+/a,WAAW,EACXC,SAAU,EACVtI,aAAc,EACd0J,OAAQ,KAGZ3/Z,MAAO,CACLw2Z,eADJ,SACA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAMhCxqS,SAAU,CACR8vZ,eADJ,WAEM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YAJJ,WAKM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7BsgJ,SAPJ,WAQM,OAAOl1b,KAAKi6H,OAAOtE,QAAQu/T,UAG7BpF,QAXJ,WAYM,OAAO9vb,KAAKi6H,OAAOtE,QAAQm6T,SAE7BC,gBAdJ,WAeM,OAAO/vb,KAAKi6H,OAAOtE,QAAQo6T,kBAI/BtwZ,QAAS,IAAX,CACI,cADJ,WACA,kHAEA,iCAFA,gCAGA,qCAHA,OAIA,WAJA,QAKA,gBACA,kBACA,6EAPA,8CAYI+vZ,SAbJ,WAcMxvb,KAAKi6H,OAAOrF,OAAO,eAAe,IAEpCugU,OAhBJ,SAgBA,GACM,IAAI5wW,EAAU,GACdA,EAAQ6wW,OAAS,GAAvB,yBACM7wW,EAAQ8wW,UAAY9F,EAAIv1Z,IACxBr5B,QAAQ6wE,IAAI,UAAW+S,GACvBvkF,KAAKi6H,OAAO5C,SAAS,cAAe9yC,IAEtC8qW,SAvBJ,SAuBA,GACM,IAAIC,EAAap7Z,KAAKC,UAAUo7Z,GAChCvvb,KAAK2lV,UAAUxb,SAAS,SAAWjtP,mBAAmBoyW,MAzB5D,uBA4BI,KAAJ,mCAIE/zY,QAvEF,WAuEA,WACIv7C,KAAKqna,UAAS,SAAlB,GACM,IAAN,IACA,MACU9iV,QAAQrnF,IAClB,6DACA,YACQ,IAAR,gBAEQ,EAAR,gBAMEm+C,QAtFF,WAuFIr7C,KAAK64b,gBACL74b,KAAKi6H,OAAO5C,SAAS,eACrBr3H,KAAKi6H,OAAO5C,SAAS,mBACrBr3H,KAAKi6H,OAAO5C,SAAS,mBCpIV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,SAAS3B,GAAG,CAAC,gBAAgB2zF,EAAIm3T,WAAW,CAAC1jZ,EAAG,YAAY,CAACuR,YAAY,4BAA4BhX,MAAM,CAAC,MAAQ,cAAc,YAAY,SAAS,CAACyF,EAAG,eAAe,CAACA,EAAG,UAAU,CAACuR,YAAY,mBAAmBhX,MAAM,CAAC,iBAAiB,kBAAkB,WAAW,YAAY,cAAc,YAAY,UAAU,kBAAkB,MAAQ,WAAW,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACuR,YAAY,iBAAiBhX,MAAM,CAAC,WAAa,GAAG,mBAAmB,eAAe,YAAY,cAAc,kBAAkBgyF,EAAIutN,OAAOC,WAAW,GAAGxtN,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACuR,YAAY,uBAAuB,CAACvR,EAAG,eAAe,CAACzF,MAAM,CAAC,MAAQ,oBAAoB,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACuR,YAAY,8BAA8BhX,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAU,QAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQtoB,EAAM+6a,SAAS,CAAChtZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,SAASC,KAAK,SAAS,CAACwF,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAI9yH,GAAG,aAAP8yH,CAAqBt6G,EAAMg7a,cAAc1gU,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,SAASC,KAAK,SAAS,CAAC+xF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,SAASC,KAAK,SAAS,CAAC+xF,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAI9yH,GAAG,aAAP8yH,CAAqBt6G,EAAMi7a,eAAeltZ,EAAG,QAAQusF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAACwF,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMA,WAAW,GAAGs6G,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,YAAYC,KAAK,YAAY,CAACwF,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQ,QAAQ,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMA,WAAW,GAAGs6G,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAyB,IAAnB/sB,EAAMk7a,UAAiBntZ,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,QAAQC,KAAK,QAAQ,CAAC+xF,EAAIvtF,GAAG,aAAautF,EAAI7tF,GAAGzsB,EAAMk7a,WAAW,eAAe5gU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,UAAUC,KAAK,UAAU,CAAC+xF,EAAIvtF,GAAG,aAAautF,EAAI7tF,GAAGzsB,EAAMm7a,aAAa,mBAAkB,IAAI,KAC13D,IDWpB,EACA,KACA,WACA,M,SEf6L,GCmQ/L,CACE1hb,KADF,WAEI,MAAO,CACL+/a,WAAW,EACXC,SAAU,EACVtI,aAAc,EACdiK,aAAc,GACdC,WAAY,GACZC,YAAa,GACbC,YAAa,GACbC,WAAY,KAGhBtga,MAAO,CACLw2Z,eADJ,SACA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAMhCxqS,SAAU,CACR8vZ,eADJ,WAEM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YAJJ,WAKM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7BsgJ,SAPJ,WAQM,OAAOl1b,KAAKi6H,OAAOtE,QAAQu/T,UAG7BpF,QAXJ,WAYM,OAAO9vb,KAAKi6H,OAAOtE,QAAQm6T,SAE7BC,gBAdJ,WAeM,OAAO/vb,KAAKi6H,OAAOtE,QAAQo6T,kBAI/BtwZ,QAAS,IAAX,CACI,cADJ,WACA,kHAEA,iCAFA,gCAGA,qCAHA,OAIA,WAJA,QAKA,gBACA,kBACA,6EAPA,8CAYI+vZ,SAbJ,WAcMxvb,KAAKi6H,OAAOrF,OAAO,eAAe,IAEpCugU,OAhBJ,SAgBA,GACM,IAAI5wW,EAAU,GACdA,EAAQ6wW,OAAS,GAAvB,yBACM7wW,EAAQ8wW,UAAY9F,EAAIv1Z,IACxBr5B,QAAQ6wE,IAAI,UAAW+S,GACvBvkF,KAAKi6H,OAAO5C,SAAS,cAAe9yC,IAEtC8qW,SAvBJ,SAuBA,GACM,IAAIC,EAAap7Z,KAAKC,UAAUo7Z,GAChCvvb,KAAK2lV,UAAUxb,SAAS,SAAWjtP,mBAAmBoyW,MAzB5D,uBA4BI,KAAJ,mCAIE/zY,QA3EF,WA2EA,WACIv7C,KAAKqna,UAAS,SAAlB,GACM,IAAN,IACA,QACMr1V,EAAIuS,QAAQrnF,IAClB,mEACA,YACQ,IAAR,gBACQ,EAAR,eACQ,QAAR,UAIM80E,EAAIuS,QAAQrnF,IAClB,mEACA,YACQ,IAAR,gBACQ,EAAR,gBAKM80E,EAAIuS,QAAQrnF,IAClB,sEACA,YACQ,IAAR,gBACQ,EAAR,qBAMEm+C,QA3GF,WA4GIr7C,KAAK64b,gBACL74b,KAAKi6H,OAAO5C,SAAS,eACrBr3H,KAAKi6H,OAAO5C,SAAS,mBACrBr3H,KAAKi6H,OAAO5C,SAAS,mBC/VV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,SAAS3B,GAAG,CAAC,gBAAgB2zF,EAAIm3T,WAAW,CAAC1jZ,EAAG,YAAY,CAACuR,YAAY,4BAA4BhX,MAAM,CAAC,MAAQ,iBAAiB,YAAY,SAAS,CAACyF,EAAG,eAAe,CAACA,EAAG,UAAU,CAACuR,YAAY,mBAAmBhX,MAAM,CAAC,iBAAiB,kBAAkB,WAAW,YAAY,cAAc,YAAY,UAAU,kBAAkB,MAAQ,WAAW,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACuR,YAAY,iBAAiBhX,MAAM,CAAC,WAAa,GAAG,mBAAmB,eAAe,YAAY,cAAc,kBAAkBgyF,EAAIutN,OAAOC,WAAW,GAAGxtN,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACuR,YAAY,uBAAuB,CAACvR,EAAG,eAAe,CAACzF,MAAM,CAAC,MAAQ,oBAAoB,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,mBAAmButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,aAAautF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,WAAWutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAe,GAAGutF,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASmhU,EAAY9wa,GAAO,OAAOojB,EAAG,SAAS,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYC,OAAOphU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYE,SAASrhU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAY3pa,MAAMwoG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAY//a,MAAM4+G,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYxta,MAAMqsG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYxjb,MAAMqiH,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYG,OAAOthU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAGgvZ,EAAYI,QAAQvhU,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYK,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYK,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYK,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYM,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYM,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYM,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYO,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYO,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYO,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYQ,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYQ,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYQ,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYS,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYS,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAwB,KAAlB0uZ,EAAYS,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,MAAM,OAAM,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAeutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,aAAautF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,WAAWutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAe,GAAGutF,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAI6yH,EAAc,YAAE,SAAS6hU,EAAUxxa,GAAO,OAAOojB,EAAG,SAAS,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUT,OAAOphU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUR,SAASrhU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUrqa,MAAMwoG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUzgb,MAAM4+G,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUlua,MAAMqsG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUlkb,MAAMqiH,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUP,OAAOthU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG0vZ,EAAUN,QAAQvhU,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUL,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUL,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUL,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUJ,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUJ,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUJ,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUH,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUH,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUH,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUF,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUF,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUF,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUD,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUD,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAsB,KAAhBovZ,EAAUD,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,MAAM,OAAM,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,sBAAsButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,aAAautF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,WAAWutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAe,GAAGutF,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAAS8hU,EAAWzxa,GAAO,OAAOojB,EAAG,SAAS,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWV,OAAOphU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,OAAO,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWT,SAASrhU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWtqa,MAAMwoG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAW1gb,MAAM4+G,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWnua,MAAMqsG,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWnkb,MAAMqiH,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWR,OAAOthU,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACgyF,EAAIvtF,GAAGutF,EAAI7tF,GAAG2vZ,EAAWP,QAAQvhU,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWN,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWN,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWN,GAAW/tZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWL,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWL,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWL,GAAWhuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWJ,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWJ,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWJ,GAAWjuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWH,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWH,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWH,GAAWluZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWF,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,eAAe,MAAQ,YAAY,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWF,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,gBAAgB,MAAQ,WAAW,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAuB,KAAjBqvZ,EAAWF,GAAWnuZ,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,UAAU,GAAGgyF,EAAIttF,MAAM,OAAM,IAAI,KACnpX,IDWpB,EACA,KACA,WACA,M,SEf4L,GCkB9L,CACE,QAAF,CACI,QADJ,SACA,GACM,KAAN,qCAEI,OAJJ,SAIA,GACM,KAAN,qCAGE,SAAF,CACI,gBADJ,WAEM,OAAN,sCAGE,QAdF,WAeI,KAAJ,mCCde,I,OAXC,GACd,ICTW,WAAa,IAAIstF,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,UAAU,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,WAAW,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAG,qBAAqButF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAmB,iBAAE,SAAS9zC,EAAQ77D,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQk+C,EAAQ3nF,OAAO,CAACkvC,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAMk+C,EAAQ4rW,WAAW7pZ,KAAK,UAAU+xF,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsB,CAACzF,MAAM,CAAC,MAAQ,KAAK,CAACyF,EAAG,qBAAqB,CAACzF,MAAM,CAAC,MAAQ,SAAS3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI8vF,QAAQ5jI,MAAY,CAAC8zC,EAAIvtF,GAAG,SAASutF,EAAIvtF,GAAG,KAAKgB,EAAG,qBAAqB,CAACzF,MAAM,CAAC,MAAQ,OAAO3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI1jG,OAAO4vD,MAAY,CAAC8zC,EAAIvtF,GAAG,aAAa,IAAI,MAAK,IAAI,KAC31B,IDWpB,EACA,KACA,WACA,M,6BEfwL,GCmY1L,CACEtzB,KADF,WAEI,MAAO,CACL4ib,aAAc,KACdC,gBAAiB,KACjBnE,OAAQ,KACRC,eAAgB,KAChB10D,YAAa,GACbmB,cAAc,EACdlC,cAAe,GACf45D,oBAAoB,EACpBC,WAAY,OAGhB56Z,SAAU,CACR66Z,mBADJ,WAEM,OAAOx6b,KAAKi6H,OAAOtE,QAAQ6kU,oBAG7BC,eALJ,WAOM,OAAOz6b,KAAKi6H,OAAOtE,QAAQ8kU,gBAE7BC,eATJ,WAUM,OAAO16b,KAAKi6H,OAAOtE,QAAQ+kU,gBAE7BC,QAZJ,WAaM,OAAO36b,KAAKi6H,OAAOtE,QAAQglU,SAE7BC,2BAfJ,WAgBM,OAAO56b,KAAKi6H,OAAOtE,QAAQilU,4BAE7BC,gBAlBJ,WAmBM,OAAO76b,KAAKi6H,OAAOtE,QAAQklU,iBAE7BC,cArBJ,WAsBM,OAAO96b,KAAKi6H,OAAOtE,QAAQmlU,eAE7BC,WAxBJ,WAyBM,OAAO/6b,KAAKi6H,OAAOtE,QAAQolU,YAE7BC,YA3BJ,WA4BM,OAAOh7b,KAAKi6H,OAAOtE,QAAQqlU,aAE7B9mD,OA9BJ,WA+BM,OAAOl0Y,KAAKi6H,OAAOtE,QAAQu+Q,QAE7B+mD,cAjCJ,WAoCM,OAAIj7b,KAAK26b,SAAW36b,KAAKq6b,iBACvBr6b,KAAKo6b,aAAep6b,KAAKi6H,OAAOtE,QAAQslU,cACjCj7b,KAAKi6H,OAAOtE,QAAQslU,eAEpBj7b,KAAKo6b,cAIhBc,eA5CJ,WA8CM,OAAIl7b,KAAK26b,SAAW36b,KAAKq6b,gBAChBr6b,KAAKi6H,OAAOtE,QAAQulU,eAEpB,MAIXx4D,mBArDJ,WAuDM,OADN,KACkBjB,YAAYx/X,OAAS,GAEnCgzD,YAzDJ,WA2DM,OADN,KACkBwsU,YAAYx/X,OAAS,EAAI,sBAAwB,YAGjE2+I,cA5EF,WA8EI5gJ,KAAKi6H,OAAO5C,SAAS,oBAAqBr3H,KAAKk2b,OAAOiF,UAExD5/Y,QAhFF,WAiFI,IAAJ,OACIx6C,EAAKsma,UAAS,WACZtma,EAAKugY,WAAavgY,EAAK+3C,MAAMwoV,WAAWO,aACxC9gY,EAAKy8X,SAAWz8X,EAAK+3C,MAAM0kV,SAASa,eAMxCplW,MAAO,GASPwG,QAAS,CACP27Z,YAAa,SAAjB,GAQM,OANeH,cAEc9iZ,QACnC,YAAQ,MAAR,6CAYIkjZ,OAlBJ,SAkBA,GACM,IAAI/L,EAAap7Z,KAAKC,UAAUo7Z,GAEhCvvb,KAAK2lV,UAAUxb,SAAS,WAAajtP,mBAAmBoyW,KAG1DgM,WAxBJ,WAwBA,WACMt7b,KAAKwpV,IAAImR,QAAQtiS,QACJr4D,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,uBACQ,KAAR,2FACQ,QACR,yPAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,OACQ,QAAR,cAGU,IAAV,2CACU,GACV,QACA,QACA,QACA,OACA,CACY,IAAZ,KACY,EAAZ,iBACY,EAAZ,YACY,EAAZ,yBAGY,EAAZ,uCACY,EAAZ,wBAGA,MACc,EAAd,cACA,kBACA,yCAKQ,GAAR,CACU,KAAV,gBAKA,QAEIglG,YAtEJ,SAsEA,GAEMv7b,KAAKi6H,OAAO5C,SAAS,cAAer3H,KAAKk2b,QACzCl2b,KAAKi6H,OAAO5C,SAAS,mBAAoBr3H,KAAKk2b,QAC9Cl2b,KAAKi6H,OAAO5C,SAAS,qBAAsBr3H,KAAKk2b,QAEhDl2b,KAAKwpV,IAAImR,QAAQtiS,SAGnBmjY,UA/EJ,SA+EA,GAEMx7b,KAAKi6H,OAAO5C,SAAS,YAAar3H,KAAKk2b,QACvCl2b,KAAKi6H,OAAO5C,SAAS,mBAAoBr3H,KAAKk2b,QAC9Cl2b,KAAKi6H,OAAO5C,SAAS,qBAAsBr3H,KAAKk2b,QAChDl2b,KAAKwpV,IAAImR,QAAQtiS,SAGnBojY,aAvFJ,SAuFA,GAEMz7b,KAAKi6H,OAAO5C,SAAS,eAAgBr3H,KAAKk2b,OAAOl8Z,KAGjDh6B,KAAKwpV,IAAImR,QAAQtiS,SAGnBqjY,gBA/FJ,SA+FA,GAEM17b,KAAKi6H,OAAO5C,SAAS,kBAAmBr3H,KAAKk2b,OAAOl8Z,KAGpDh6B,KAAKwpV,IAAImR,QAAQtiS,SAEnBsjY,UAtGJ,SAsGA,GAEM37b,KAAKi6H,OAAO5C,SAAS,YAAar3H,KAAKk2b,OAAOl8Z,KAC9Ch6B,KAAKi6H,OAAO5C,SAAS,mBAAoBr3H,KAAKk2b,OAAOl8Z,KAErDh6B,KAAKwpV,IAAImR,QAAQtiS,SAEnB,QA7GJ,SA6GA,iHACA,sBAEA,aACA,QACA,gCACA,QACA,QACA,0MAEA,mDACA,sBAGA,+CACA,gBACA,eAKA,YAJA,gBACA,kBACA,gCAKA,SACA,mBACA,aAEA,+BACA,mDACA,0DAIA,OACA,iBACA,YAGA,mBACA,8CACA,GACA,qBAMA,MACA,gBACA,kBACA,wCAKA,IACA,qBAKA,OA9DA,8CAiEIujY,YA9KJ,SA8KA,GAEM57b,KAAKi6H,OAAO5C,SAAS,wBAAyBr3H,KAAKm2b,gBACnDn2b,KAAKi6H,OAAO5C,SAAS,oBAAqBr3H,KAAKk2b,SAEjD2F,UAnLJ,SAmLA,cAGMv7b,YAAW,WACT,EAAR,wDACQ,EAAR,gDAEA,MAGIgyb,iBA7LJ,WA8LMtyb,KAAK84C,MAAMy5Y,KAAKnkQ,SAElBokQ,aAhMJ,WAiMMxyb,KAAKi6H,OAAO5C,SAAS,oBAEvB+nQ,eAnMJ,SAmMA,KACM,IACN,EADA,KACA,mBACM,OAAItpT,EAAQo4P,WAElB,GACA,iBACA,kBAKImxD,cA/MJ,SA+MA,KACM,IACN,EADA,KACA,mBACM,OAAIvpT,EAAQo4P,WAElB,GACA,iBACA,kBAKIoxD,cA3NJ,SA2NA,KACM,IACN,EADA,KACA,mBACM,OAAIxpT,EAAQo4P,WAElB,GACA,iBACA,kBAKI4tH,iBAvOJ,SAuOA,GACM,IACN,EADA,KACA,uBADA,KAEWr6D,YAAY5sW,OAAOnM,EAAO,GAAG,IAEpCqza,iBA5OJ,SA4OA,GACM,IACN,EADA,KACA,+CACA,EAFA,KAEA,UACUzkb,EAAEwX,OAAO29D,QAHnB,KAKag1S,YAAYzlV,QAAQojU,GALjC,KAQaqiB,YAAY5sW,OARzB,KAQqC4sW,YAAYxzX,QAAQmxW,GAAQ,IAI7D,YAzPJ,WAyPA,2HACA,2BADA,gCAGA,2DAHA,WAMA,iCANA,iCAOA,qCAPA,UAQA,WARA,+BASA,gBACA,kBACA,6EAXA,4CAgBA,+CAhBA,WAkBA,qBAlBA,wBAmBA,gBACA,kBACA,gFArBA,4CA2BA,iDA3BA,WA6BA,uBA7BA,wBA8BA,gBACA,kBACA,sCAhCA,4CAsCA,mCAtCA,WAuCA,mBAvCA,wBAwCA,gBACA,kBACA,gDA1CA,8BAiDA,GADA,KACA,mDACA,KACA,mCACA,QACA,aAGA,iBACA,QACA,SAGA,aA7DA,mDAgEA,uBACA,wCACA,0DACA,iCACA,gBACA,MACA,cAKA,iCACA,gBACA,MACA,WAIA,iBAEA,kBAEA,qBAGA,iCAzFA,+CA4FI48E,mBArVJ,WAuVM,IAAIj7b,EAAOf,KACXM,YAAW,WACTS,EAAKk5H,OAAO5C,SAAS,sBAAuBt2H,EAAKo1b,kBAEzD,OAKE96Y,QAncF,WAocI,IAAJ,2BACIr7C,KAAKk2b,OAAShia,KAAK4nC,MAAM2+P,GACzBz6T,KAAKm2b,eAAiBn2b,KAAKk2b,OAC3Bl2b,KAAKq6b,gBAAkBr6b,KAAKk2b,OAAOl8Z,IAEnCh6B,KAAKi6H,OAAOrF,OAAO,eAAe,GAClC50H,KAAKi6H,OAAO5C,SAAS,kBAAmBr3H,KAAKk2b,QAG7Cl2b,KAAKi6H,OAAO5C,SAAS,oBAAqBr3H,KAAKk2b,QAE/Cl2b,KAAKi6H,OAAO5C,SAAS,oBAAqBr3H,KAAKk2b,OAAOiF,SACtDn7b,KAAKi6H,OAAO5C,SAAS,oBAAqBr3H,KAAKk2b,QAC/Cl2b,KAAKi6H,OAAO5C,SAAS,iBAErBr3H,KAAKi6H,OAAO5C,SAAS,mBAAoBr3H,KAAKk2b,OAAOl8Z,KACrDh6B,KAAKi6H,OAAO5C,SAAS,qBAAsBr3H,KAAKk2b,QAChDl2b,KAAKi6H,OAAO5C,SAAS,mBAAoBr3H,KAAKk2b,QAC9Cl2b,KAAKi6H,OAAO5C,SAAS,qBAAsBr3H,KAAKk2b,OAAOl8Z,KACvDh6B,KAAKi6H,OAAO5C,SAAS,uBAAwBr3H,KAAKk2b,OAAOl8Z,KACzDh6B,KAAKu6b,WAAav6b,KAAKk2b,OAAOl8Z,IAC9Bh6B,KAAKi6H,OAAO5C,SAAS,oBACrBr3H,KAAKi6H,OAAO5C,SAAS,sBC10BV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAQxmB,EAAIkiU,YAAcliU,EAAI69T,OAAOl8Z,IAAK8R,EAAG,MAAM,CAACA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQrmC,KAAKk2b,OAAOt5b,KAAK,SAAWoD,KAAKk2b,OAAO9F,WAAW,YAAY,SAAS,CAACtkZ,EAAG,MAAM,CAACzF,MAAM,CAAC,KAAO,QAAQC,KAAK,QAAQ,CAACwF,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,GAAG,aAAa,gBAAgB,CAACyF,EAAG,MAAM,CAACuR,YAAY,gBAAgBhX,MAAM,CAAC,KAAO,QAAQ,IAAMrmC,KAAKk2b,OAAO/F,WAAW7pZ,KAAK,aAAa,GAAG+xF,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAAE9rC,KAA+B,2BAAE8rC,EAAG,MAAM,CAACA,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIgjU,OAAOhjU,EAAI69T,WAAW,CAAC79T,EAAIvtF,GAAG,WAAW,GAAGutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMutF,EAAc,WAAEvsF,EAAG,OAAO,CAACA,EAAG,WAAW,CAACzF,MAAM,CAAC,MAAQ,QAAQ,CAACgyF,EAAIvtF,GAAG,aAAa,GAAGutF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,eAAe,kBAAkB,CAACyF,EAAG,IAAI,CAACuR,YAAY,YAAY,CAACg7E,EAAIvtF,GAAG,0BAA0B,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAAC+O,IAAI,aAAaxU,MAAM,CAAC,YAAcgyF,EAAIpjE,YAAY,sBAAsBojE,EAAIqqQ,mBAAmB,gBAAgBrqQ,EAAIuqQ,cAAc/xV,SAAS,CAAC,QAAU,SAAS5H,GAAQ,OAAOovF,EAAIujU,YAAYvjU,EAAI69T,SAAS,MAAQ,SAASjtZ,GAAQ,OAAOovF,EAAIwjU,UAAUxjU,EAAI69T,WAAW,CAACpqZ,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,YAAY,cAAc,YAAY,UAAU,mBAAmB3B,GAAG,CAAC,MAAQ2zF,EAAIi6T,kBAAkBhsZ,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,iBAAiB,cAAc,iBAAiB,UAAU,uBAAuB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIuqQ,cAAgBvqQ,EAAIuqQ,eAAet8V,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,YAAY,WAAW,mBAAmB,cAAc,mBAAmB,UAAU,iBAAiB3B,GAAG,CAAC,MAAQ2zF,EAAI4jU,aAAa31Z,KAAK,cAAc+xF,EAAIvtF,GAAG,KAAKgB,EAAG,4BAA4BusF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,2BAA2B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,GAAO16U,GAAG,CAAC,oBAAoB,SAASuE,GAAQ,OAAOovF,EAAIyjU,iBAAiB18E,UAAa,GAAG/mP,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsBusF,EAAI7yH,GAAI6yH,EAAU,QAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,4BAA4B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,EAAM,QAAU/mP,EAAIopQ,YAAYxzX,QAAQmxW,IAAU,GAAG16U,GAAG,CAAC,OAAS2zF,EAAI0jU,uBAAsB,IAAI,GAAG1jU,EAAIvtF,GAAG,KAAKgB,EAAG,cAAc,CAAC+O,IAAI,YAAYw9E,EAAI7yH,GAAI6yH,EAAiB,eAAE,SAASmlQ,EAAS90W,GAAO,OAAOojB,EAAG,MAAM,CAACluC,IAAI8qB,EAAM20B,YAAY,YAAY,CAACvR,EAAG,oBAAoB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG9hB,QAAY2vG,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAG,GAAW,SAASswE,EAAQz5E,GAAG,OAAOyvC,EAAG,aAAa,CAACluC,IAAIvB,EAAEgqC,MAAM,CAAC,KAAOyvC,EAAQx2C,KAAK,MAAQw2C,EAAQspS,MAAM,KAAOtpS,EAAQl5E,KAAK,OAASk5E,EAAQ8oT,OAAO,MAAQvmQ,EAAI+mQ,eAAetpT,EAASptD,GAAO,KAAO2vG,EAAIgnQ,cAAcvpT,EAASptD,GAAO,KAAO2vG,EAAIinQ,cAAcxpT,EAASptD,KAAS,CAAEotD,EAAY,KAAEhqC,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,QAAQyC,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAGsrC,EAAQ96C,OAAOsL,KAAK,SAAS+xF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACzF,MAAM,CAAC,KAAO,OAAO,MAAQ,SAASC,KAAK,QAAQ,CAAkB,KAAhBwvC,EAAQkY,KAAaliD,EAAG,OAAO,CAACuR,YAAY,aAAa,CAAoB,KAAlBy4B,EAAQ8gB,OAAe9qD,EAAG,MAAM,CAACusF,EAAIvtF,GAAG,qBAAqButF,EAAI7tF,GAAGsrC,EAAQomX,WAAW,sBAAsBpwZ,EAAG,IAAI,CAACuR,YAAY,oCAAoC,CAACg7E,EAAIvtF,GAAG,gBAAgBgB,EAAG,MAAM,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGsrC,EAAQomX,gBAAgBpwZ,EAAG,OAAO,CAACuR,YAAY,aAAa,CAAoB,KAAlBy4B,EAAQ8gB,OAAe9qD,EAAG,MAAM,CAACusF,EAAIvtF,GAAG,qBAAqButF,EAAI7tF,GAAGsrC,EAAQomX,WAAW,sBAAsBpwZ,EAAG,IAAI,CAACuR,YAAY,sCAAsC,CAACg7E,EAAIvtF,GAAG,YAAYgB,EAAG,MAAM,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGsrC,EAAQomX,uBAAsB7jU,EAAIvtF,GAAG,KAA4B,KAAtButF,EAAI6iU,gBAAyB7iU,EAAIsiU,SAAWtiU,EAAIgiU,gBAAiBvuZ,EAAG,aAAa,CAACzF,MAAM,CAAC,KAAO,WAAW,QAAS,EAAK,OAAQ,EAAK,MAAO,EAAK,MAAO,EAAK,OAAWgyF,EAAI89T,eAAmB,KAAI,aAAc,OAAS99T,EAAI89T,eAAehG,aAAa93T,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,QAAQ,CAAC+O,IAAI,OAAOwN,YAAY,CAAC,QAAU,QAAQhiB,MAAM,CAAC,KAAO,OAAO,SAAW,IAAI3B,GAAG,CAAC,OAAS2zF,EAAIm6T,gBAAgBn6T,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,aAAa,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,cAAc3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImjU,UAAW,GAAKnjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,gBAAgB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkjU,YAAa,GAAKljU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIijU,WAAY,GAAKjjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,YAAY3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI8jU,QAAS,GAAK9jU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIsjU,UAAW,GAAKtjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIojU,aAAc,GAAKpjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,oBAAoB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIqjU,gBAAiB,GAAKrjU,EAAI69T,aAAc,IAAI,GAAG79T,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,aAAa,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,cAAc3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImjU,UAAW,GAAKnjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,gBAAgB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkjU,YAAa,GAAKljU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIijU,WAAY,GAAKjjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,YAAY3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI8jU,QAAS,GAAK9jU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIsjU,UAAW,GAAKtjU,EAAI69T,aAAc,IAAI,GAAG79T,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,aAAa,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,cAAc3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImjU,UAAW,GAAKnjU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,gBAAgB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkjU,YAAa,GAAKljU,EAAI69T,YAAa79T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIijU,WAAY,GAAKjjU,EAAI69T,aAAc,IAAI,GAAG79T,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACuR,YAAY,cAAc,CAACvR,EAAG,UAAU,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQrmC,KAAKk2b,OAAOt5b,KAAK,SAAWoD,KAAKk2b,OAAO12b,WAAW,CAACssC,EAAG,MAAM,CAACzF,MAAM,CAAC,KAAO,WAAWC,KAAK,WAAW,CAACwF,EAAG,OAAO,CAACzF,MAAM,CAAC,OAAOrmC,KAAKk2b,OAAO5F,YAAY,CAACj4T,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAIsD,OAAO37H,KAAKk2b,OAAO5F,UAAW,YAAY/qa,SAAQ,SAAY8yG,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,cAAc,KAAK,CAACgyF,EAAIvtF,GAAG,YAAY,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,MAAM,CAACuR,YAAY,gBAAgBhX,MAAM,CAAC,IAAMrmC,KAAKk2b,OAAO/F,eAAe93T,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACA,EAAG,IAAI,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,aAAautF,EAAIvtF,GAAG,uBAAuButF,EAAI7tF,GAAGxqC,KAAKk2b,OAAO9F,YAAY,wBAAwB/3T,EAAIvtF,GAAG,KAAgC,WAA1B9qC,KAAKk2b,OAAO9F,WAAyBtkZ,EAAG,OAAO,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,eAAeutF,EAAIvtF,GAAG,uBAAuButF,EAAI7tF,GAAG6tF,EAAIsD,OAAO37H,KAAKk2b,OAAOtD,UAAUrta,WAAW,wBAAwB8yG,EAAIttF,QAAQ,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAACA,EAAG,IAAI,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,qBAAqButF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,uBAAuButF,EAAI7tF,GAAGxqC,KAAKk2b,OAAO3F,gBAAgB,0BAA0Bl4T,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,IAAI,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,cAAcutF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAG,uBAAuButF,EAAI7tF,GAAGxqC,KAAKk2b,OAAO12b,UAAU,2BAA2B,IAAI,GAAG64H,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAAS,CAA0B,KAAxB9rC,KAAK66b,gBAAwB/uZ,EAAG,OAAO,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,gBAAgButF,EAAIvtF,GAAG,+BAA+ButF,EAAIttF,OAAOstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAAwB,KAAtB9rC,KAAK86b,cAAsBhvZ,EAAG,OAAO,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,gBAAgButF,EAAIvtF,GAAG,4BAA4ButF,EAAIttF,QAAQ,IAAI,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,KAAK,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,oBAAoButF,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACusF,EAAIvtF,GAAG,oGAAoGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,GAAK,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,EAAI,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,EAAI,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,IAAI,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,GAAK,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,EAAI,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,EAAI,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,IAAI,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,oGAAoG,IAAI,IAAI,IAAI,GAAGutF,EAAIttF,OACtmU,IDWpB,EACA,KACA,WACA,M,SEfqM,GCuBvM,CACEvzB,KADF,WAEI,MAAO,CACL+kb,MAAO,KAGX58Z,SAAU,CACR68Z,mBADJ,WAEM,OAAOx8b,KAAKi6H,OAAOtE,QAAQ6mU,qBAG/B/8Z,QAAS,GACT4b,QAZF,WAaIr7C,KAAKi6H,OAAO5C,SAAS,0BCjBV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,kBAAkB,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,gBAAgB,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAWusF,EAAI7yH,GAAI6yH,EAAsB,oBAAE,SAASokU,EAAc/za,GAAO,OAAOojB,EAAG,MAAM,CAACluC,IAAI8qB,GAAO2vG,EAAI7yH,GAAG,GAAgB,SAAS2zR,EAAa98R,GAAG,OAAOyvC,EAAG,UAAU,CAACluC,IAAIvB,GAAG,CAACyvC,EAAG,KAAK,CAAChD,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAG2uP,EAAax1M,UAAU00C,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAAChD,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAG2uP,EAAaujK,oBAAoBrkU,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACuR,YAAY,aAAavU,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAG6tF,EAAIsD,OAAOw9J,EAAa7kC,WAAW7xP,OAAO,iCAAgC,MAAK,IAAI,KAC3vB,IDWpB,EACA,KACA,WACA,M,SEGa,GAXC,GCmChB,CACE+U,KADF,WAEI,MAAO,CACLmlb,WAAW,IAGfh9Z,SAAU,CACRgwZ,aADJ,WAEM,OAAO3vb,KAAKi6H,OAAOtE,QAAQg6T,cAE7BC,oBAJJ,WAKM,OAAO5vb,KAAKi6H,OAAOtE,QAAQi6T,sBAG/BnwZ,QAAS,CACP8xZ,iBAAkB,SAAtB,GAEkBj6a,EAAEwX,OAAOxxB,MACjBga,EAAEwX,OAAO29D,QAFFzsF,KAGJ28b,WAAY,EAHR38b,KAKJ28b,WAAY,GAGrBC,oBAVJ,WAUA,WACmB58b,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,uBACQ,KACR,mIACQ,QAAR,GAEQ,QAAR,EAAU,KAAV,KAAU,OAAV,IAAU,KAAV,QACQ,QAAR,cACU,GAAV,MACY,IAAZ,QAGY,EAAZ,mCACY,EAAZ,mBACY,EAAZ,cACY,EAAZ,sCAIQ,GAAR,CACU,KAAV,gBAKA,QAEIsmG,kBAvCJ,WAuCA,WACM,GAAI78b,KAAK28b,UACP,GAAyB,WAArB38b,KAAK2vb,aAA2B,CAElC3vb,KAAKwpV,IAAImR,QAAQtiS,QACJr4D,KAAKwpV,IAAI+M,OAChC,QACY,MAAZ,eACY,KAAZ,GACY,QACZ,sgBAgBY,QAAZ,EAAc,KAAd,SAAc,OAAd,IAAc,KAAd,WACY,QAAZ,cAGc,IAAd,2CACA,QACA,wBACA,MACA,OACA,QACA,sBACA,MACA,OAIc,GAAd,YACgB,GAAhB,aACkB,GAAlB,aAEoB,IAApB,KACoB,EAApB,YACoB,EAApB,iBACoB,EAApB,eACoB,EAApB,UAEoB,EAApB,sCACoB,EAApB,mBACoB,EAApB,yCAEoB,EAApB,cACA,kBACA,+BAIkB,EAAlB,cACA,kBACA,gDAKA,MACkB,EAAlB,cACA,kBACA,wBAKY,GAAZ,CACc,KAAd,gBAKA,WAEA,CAKUv2V,KAAKwpV,IAAImR,QAAQtiS,QACJr4D,KAAKwpV,IAAI+M,OAChC,QACY,MAAZ,iBACY,KAAZ,GACY,QACZ,uKAKY,QAAZ,EAAc,KAAd,SAAc,OAAd,IAAc,KAAd,WACY,QAAZ,cAGc,IAAd,2CACc,GAAd,aACgB,IAAhB,GACgB,UAAhB,GACgB,eAAhB,GACgB,aAAhB,IACgB,EAAhB,SACgB,EAAhB,sCACgB,EAAhB,mBACgB,EAAhB,yCAGA,MACkB,EAAlB,cACA,kBACA,sCAKY,GAAZ,CACc,KAAd,gBAKA,YAGQv2V,KAAKi6H,OAAOrF,OACpB,kBACA,yCAKEv5E,QAlMF,WAmMIr7C,KAAKi6H,OAAO5C,SAAS,kBACrBr3H,KAAKi6H,OAAO5C,SAAS,uBC9OZ,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,UAAU,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,eAAe,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,6BAA6ButF,EAAIvtF,GAAG,KAAwB,WAAlButF,EAAIs3T,aAAyB7jZ,EAAG,WAAW,CAACzF,MAAM,CAAC,OAAS,KAAK,CAACyF,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,mNAAmNutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,2NAA2NgB,EAAG,WAAW,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,8MAA8MutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,0NAA0NutF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAAE9rC,KAAwB,oBAAE8rC,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,OAAO,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACgyF,EAAIvtF,GAAG,uCAAuC,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,GAAG,MAAQ,OAAO3B,GAAG,CAAC,MAAQ2zF,EAAIukU,sBAAsB,CAACvkU,EAAIvtF,GAAG,yBAAyB,GAAGgB,EAAG,WAAW,CAACA,EAAG,MAAM,CAACuR,YAAY,mBAAmB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,SAAW,GAAG,MAAQ,qCAAqC,KAAO,qBAAqB,MAAQ,SAAS3B,GAAG,CAAC,OAAS2zF,EAAIk5T,qBAAqB,IAAI,GAAGl5T,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIwkU,oBAAoB,CAACxkU,EAAIvtF,GAAG,uBAAuB,IAAI,IAAI,KAC75D,IFUpB,EACA,KACA,KACA,M,QGdgM,GCwDlM,CACEmM,WAAY,CACV84R,OAAJ,GACI67G,mBAAJ,GACID,OAAJ,GACID,WAAJ,GACIN,aAAJ,GACInB,cAAJ,GACIqB,YAAJ,IAEE9za,KAVF,WAWI,MAAO,CACLslb,QAAS,KACTC,UAAW,OAIft9Z,QAAS,CACPu9Z,kBADJ,WAEM,IAAI1lU,EAAU,GACM,MAAhBt3H,KAAK88b,SAAqC,MAAlB98b,KAAK+8b,WAC/BzlU,EAAQwlU,QAAU98b,KAAK88b,QACvBxlU,EAAQylU,UAAY/8b,KAAK+8b,UAEzB/8b,KAAKi6H,OAAO5C,SAAS,mBAAoBC,GACzCt3H,KAAKi6H,OAAOrF,OACpB,kBACA,sEAEQ50H,KAAK88b,QAAU,KACf98b,KAAK+8b,UAAY,MAEjB/8b,KAAKi6H,OAAOrF,OACpB,kBACA,sDAIIv5E,QArBJ,eCtDe,I,OAXC,GACd,ICTW,WAAa,IAAIg9E,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,QAAQ,eAAe,GAAG,eAAe,KAAK,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,iBAAiB,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,IAAI,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,2BAA2ButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,+EAA+EgB,EAAG,MAAMusF,EAAIvtF,GAAG,6FAA6FutF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,UAAU,CAACzF,MAAM,CAAC,kBAAkB,KAAK,CAACyF,EAAG,gBAAgB,CAACzF,MAAM,CAAC,MAAQgyF,EAAIykU,QAAQ,MAAQ,sBAAsB,KAAO,OAAO,YAAc,sBAAsB,eAAe,GAAG,SAAW,IAAIp4Z,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIykU,QAAU7zZ,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAACzF,MAAM,CAAC,MAAQgyF,EAAI0kU,UAAU,MAAQ,oBAAoB,KAAO,OAAO,YAAc,oBAAoB,eAAe,GAAG,SAAW,IAAIr4Z,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAI0kU,UAAY9zZ,EAAOna,OAAOxxB,WAAW,IAAI,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACA,EAAG,WAAW,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAI2kU,oBAAoB,CAAC3kU,EAAIvtF,GAAG,aAAa,IAAI,IAAI,KAChtC,IDWpB,EACA,KACA,WACA,M,SEfgM,GCyDlM,CACEtzB,KADF,WAEI,MAAO,CACLylb,YAAa,KACb/N,aAAc,EACdgO,MAAO,oCACPC,MAAO,0CACPC,gBAAiB,GACjBC,YAAa,GACbC,aAAc,CACZh+Z,KAAM/9B,MACNqxB,QAAS,WAAjB,aAEM2qa,aAAc,KAGlBtka,MAAO,CACL02Z,aADJ,SACA,KAKIF,eANJ,SAMA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAKhC1qS,QAAS,CACP+9Z,aADJ,SACA,GACMx9b,KAAK2lV,UAAUxb,SAAS,qBAAsBszH,WAEhDC,cAJJ,SAIA,GACM19b,KAAKi6H,OAAO5C,SAAS,kBACrBr3H,KAAKi6H,OAAOrF,OAAO,kBAAmB,qCAExC+oU,UARJ,SAQA,GACM39b,KAAK2lV,UAAUxb,SAAS,gBAE1Bh+R,KAXJ,WAWA,WACMnsC,KAAKi6H,OAAOrF,OAAO,eAAe,GAQlC50H,KAAKqna,UAAS,SAApB,GAEQ,GAAR,EACA,WACA,aACA,mCACA,0BAIU,IAAV,GACY,QAJZ,iBAOA,IACA,QACU,EAAV,aACA,2DACA,GACA,YACY,IAAZ,gBAEY,EAAZ,qBAKU,EAAV,aACA,4DACA,GACA,YACY,IAAZ,gBAEY,EAAZ,kBAKU,EAAV,aACA,0DACA,GACA,YACY,IAAZ,gBAEY,EAAZ,iBAKU,EAAV,aACA,4DACA,GACA,YACY,IAAZ,gBAEY,EAAZ,0BAQE1nY,SAAU,CACR86Z,eADJ,WAGM,OAAOz6b,KAAKi6H,OAAOtE,QAAQ8kU,gBAE7BC,eALJ,WAMM,OAAO16b,KAAKi6H,OAAOtE,QAAQ+kU,gBAE7BjL,eARJ,WASM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YAXJ,WAYM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7BgpJ,YAdJ,WAeM,OAAO59b,KAAKi6H,OAAOtE,QAAQioU,aAE7BjO,aAjBJ,WAkBM,OAAO3vb,KAAKi6H,OAAOtE,QAAQg6T,eAI/Bp0Y,QAxIF,aAyIEF,QAzIF,WA0IIr7C,KAAKmsC,OACLnsC,KAAKi6H,OAAO5C,SAAS,mBACrBr3H,KAAKi6H,OAAO5C,SAAS,iBACrBr3H,KAAKi6H,OAAO5C,SAAS,oBACrBr3H,KAAKi6H,OAAO5C,SAAS,sBCpLV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc3B,GAAG,CAAC,gBAAgB2zF,EAAIlsF,OAAO,CAACL,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,gBAAgB,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,WAAW,CAACA,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,6BAA6ButF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAACojB,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAM4lE,UAAU00C,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMkhE,SAAS,oBAAoBnzC,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAOtoB,EAAMy7Q,KAAK,SAAW,KAAK,CAACnhK,EAAIvtF,GAAG,yBAAsB,MAAK,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,kCAAkCutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAACojB,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAM4lE,UAAU00C,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMkhE,SAAS,oBAAoBnzC,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAOtoB,EAAMy7Q,KAAK,SAAW,KAAK,CAACnhK,EAAIvtF,GAAG,yBAAsB,MAAK,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,yCAAyCutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAACojB,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAM4lE,UAAU00C,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMkhE,SAAS,oBAAoBnzC,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAOtoB,EAAMy7Q,KAAK,SAAW,KAAK,CAACnhK,EAAIvtF,GAAG,yBAAsB,MAAK,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,oCAAoCutF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,MAAM,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAmB,iBAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAACojB,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAM4lE,UAAU00C,EAAIvtF,GAAG,KAAKgB,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAGzsB,EAAMkhE,SAAS,oBAAoBnzC,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAOtoB,EAAMy7Q,KAAK,SAAW,KAAK,CAACnhK,EAAIvtF,GAAG,yBAAsB,MAAK,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,2BAA2B,IAAI,IAAI,KACt/D,IDWpB,EACA,KACA,WACA,M,SEf8L,GC6HhM,CACEtzB,KADF,WAEI,MAAO,CACLylb,YAAa,KACb/N,aAAc,EACdgO,MAAO,oCACPC,MAAO,0CACPE,YAAa,GACbC,aAAc,GACdC,aAAc,KAGlBtka,MAAO,CACL02Z,aADJ,SACA,KAKIF,eANJ,SAMA,GAE8B,WAApBzvb,KAAK40S,aAAgD,OAApB50S,KAAK40S,aACpC50S,KAAKkvb,aAAe5xb,GACtB0C,KAAK2lV,UAAUxb,SAAS,kBAKhC1qS,QAAS,CACP+9Z,aADJ,SACA,GACMx9b,KAAK2lV,UAAUxb,SAAS,qBAAsBszH,WAEhDC,cAJJ,SAIA,GACM19b,KAAKi6H,OAAO5C,SAAS,kBACrBr3H,KAAKi6H,OAAOrF,OAAO,kBAAmB,qCAExC+oU,UARJ,SAQA,GACM39b,KAAK2lV,UAAUxb,SAAS,gBAE1Bh+R,KAXJ,WAWA,WACMnsC,KAAKi6H,OAAOrF,OAAO,eAAe,GAQlC50H,KAAKqna,UAAS,SAApB,GAEQ,GAAR,EACA,WACA,aACA,mCACA,0BAIU,IAAV,GACY,QAJZ,iBAOA,IACA,QACU,EAAV,aACA,qDACA,GACA,YACY,IAAZ,gBAEY,EAAZ,kBAKU,EAAV,aACA,oDACA,GACA,YACY,IAAZ,gBAEY,EAAZ,iBAKU,EAAV,aACA,qDACA,GACA,YACY,IAAZ,gBAEY,EAAZ,0BAQE1nY,SAAU,CACR86Z,eADJ,WAGM,OAAOz6b,KAAKi6H,OAAOtE,QAAQ8kU,gBAE7BC,eALJ,WAMM,OAAO16b,KAAKi6H,OAAOtE,QAAQ+kU,gBAE7BjL,eARJ,WASM,OAAOzvb,KAAKi6H,OAAOtE,QAAQ85T,gBAE7B76I,YAXJ,WAYM,OAAO50S,KAAKi6H,OAAOtE,QAAQi/K,aAE7BgpJ,YAdJ,WAeM,OAAO59b,KAAKi6H,OAAOtE,QAAQioU,aAE7BjO,aAjBJ,WAkBM,OAAO3vb,KAAKi6H,OAAOtE,QAAQg6T,eAI/Bp0Y,QAzHF,aA0HEF,QA1HF,WA2HIr7C,KAAKmsC,OACLnsC,KAAKi6H,OAAO5C,SAAS,mBACrBr3H,KAAKi6H,OAAO5C,SAAS,iBACrBr3H,KAAKi6H,OAAO5C,SAAS,oBACrBr3H,KAAKi6H,OAAO5C,SAAS,sBCzOV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc3B,GAAG,CAAC,gBAAgB2zF,EAAIlsF,OAAO,CAACL,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,uBAAuBgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ2zF,EAAIslU,YAAY,CAACtlU,EAAIvtF,GAAG,oCAAoCutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,6BAA6ButF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAMnhB,MAAM,uBAAsB,GAAGy7H,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAM66a,QAAQ,uBAAsB,IAAI,GAAGvgU,EAAIvtF,GAAG,KAAKgB,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,4BAA4ButF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAMnhB,MAAM,uBAAsB,GAAGy7H,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAM66a,QAAQ,uBAAsB,IAAI,GAAGvgU,EAAIvtF,GAAG,KAAKgB,EAAG,KAAK,CAACusF,EAAIvtF,GAAG,0BAA0ButF,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAMnhB,MAAM,uBAAsB,GAAGy7H,EAAIvtF,GAAG,KAAKgB,EAAG,SAAS,CAACzF,MAAM,CAAC,MAAQ,KAAK,OAAS,OAAOgyF,EAAI7yH,GAAI6yH,EAAgB,cAAE,SAASt6G,EAAM2K,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAC2vG,EAAIvtF,GAAG,mBAAmButF,EAAI7tF,GAAGzsB,EAAM66a,QAAQ,uBAAsB,IAAI,IAAI,IAAI,IAAI,GAAGvgU,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,KAAK,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,oBAAoButF,EAAIvtF,GAAG,KAAKgB,EAAG,OAAO,CAACusF,EAAIvtF,GAAG,0FAA0FutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,GAAK,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,EAAI,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,EAAI,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,IAAI,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,SAAS,CAACzF,MAAM,CAAC,SAAS,KAAK,CAACyF,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,GAAK,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,GAAK,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,SAASusF,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAAS+jU,EAAO1za,GAAO,OAAOojB,EAAG,IAAI,CAACluC,IAAI8qB,GAAO,CAAEA,EAAQ,EAAI,EAAGojB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO+1Z,EAAOh5T,IAAI,SAAW,KAAK,CAACt3F,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAM+1Z,EAAOh9E,MAAM,IAAMg9E,EAAOC,eAAehkU,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMpiB,EAAQ,EAAI,EAAGojB,EAAG,OAAO,CAACA,EAAG,MAAMusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG4xZ,EAAOE,eAAejkU,EAAIttF,MAAM,MAAK,IAAI,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,4EAA4E,KAC7tH,IDWpB,EACA,KACA,WACA,M,SEf6L,GCuO/L,CACEtzB,KADF,WAEI,MAAO,CACLs/a,SAAU,KACV+G,WAAY,KACZC,YAAa,IACbC,UAAW,KACXt8D,YAAa,GACbmB,cAAc,EACdlC,cAAe,KACfs9D,aAAc,GACd1D,oBAAoB,EACpB9C,SAAU,EACVD,WAAW,IAIf53Z,SAAU,CACRs+Z,qBADJ,WAEM,OAAOj+b,KAAKi6H,OAAOtE,QAAQsoU,sBAE7BC,cAJJ,WAKM,OAAOl+b,KAAKi6H,OAAOtE,QAAQuoU,eAE7BC,qBAPJ,WAQM,OAAOn+b,KAAKi6H,OAAOtE,QAAQwoU,sBAG7BC,UAXJ,WAYM,OAAOp+b,KAAKi6H,OAAOtE,QAAQyoU,WAE7BpD,YAdJ,WAeM,OAAOh7b,KAAKi6H,OAAOtE,QAAQqlU,aAE7BqD,gBAjBJ,WAkBM,OAAOr+b,KAAKi6H,OAAOtE,QAAQ0oU,iBAE7BC,eApBJ,WAqBM,OAAOt+b,KAAKi6H,OAAOtE,QAAQ2oU,gBAE7BpqD,OAvBJ,WAwBM,OAAOl0Y,KAAKi6H,OAAOtE,QAAQu+Q,QAE7BxR,mBA1BJ,WA4BM,OADN,KACkBjB,YAAYx/X,OAAS,GAEnCgzD,YA9BJ,WAgCM,OADN,KACkBwsU,YAAYx/X,OAAS,EAAI,sBAAwB,YAGjEg3B,MAAO,CACLkla,qBADJ,SACA,MAOEv9S,cA5DF,WA8DI5gJ,KAAKi6H,OAAO5C,SAAS,gCAEvB97E,QAhEF,WAiEI,IAAJ,OACIx6C,EAAKsma,UAAS,WACZtma,EAAKugY,WAAavgY,EAAK+3C,MAAMwoV,WAAWO,aACxC9gY,EAAKy8X,SAAWz8X,EAAK+3C,MAAM0kV,SAASa,cAGtCr+X,KAAKi6H,OAAO5C,SAAS,kBAEvB53F,QAAS,CACP0vZ,cADJ,WACA,WAGMnvb,KAAKwpV,IAAImR,QAAQtiS,QACJr4D,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,yBACQ,KAAR,GACQ,QACR,uUAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,SACQ,QAAR,cAGU,IAAV,2CAEA,mCACU,GAAV,cACY,IAAZ,KACY,EAAZ,QACY,EAAZ,kBACY,EAAZ,uCAEY,IAAZ,GACc,WAAd,kBACc,QACd,qBACA,EACA,aACA,EACc,IAAd,MAEY,EAAZ,sCACY,EAAZ,wBAGA,MACc,EAAd,2DAIQ,GAAR,CACU,KAAV,gBAKA,QAEIgoG,WAnDJ,WAoDMv+b,KAAK2lV,UAAUxb,SAAS,gBACxBnqU,KAAKwpV,IAAImR,QAAQtiS,SAEnBmmY,aAvDJ,WAwDMx+b,KAAK2lV,UAAUxb,SAAS,kBACxBnqU,KAAKwpV,IAAImR,QAAQtiS,SAGnBomY,SA5DJ,WA6DMz+b,KAAK2lV,UAAUxb,SAAS,eACxBnqU,KAAKwpV,IAAImR,QAAQtiS,SAEnBqmY,YAhEJ,WAgEA,WACM1+b,KAAKwpV,IAAImR,QAAQtiS,QAEJr4D,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,yBACQ,KAAR,GACQ,QACR,yvBACQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,WACQ,QAAR,cAGU,IAAV,+CACA,QACA,4BACA,MACA,OACA,QACA,gCACA,MACA,OACA,QACA,kCACA,MACA,OACA,QACA,8BACA,MACA,OAEU,GAAV,YAKU,GAAV,YAIU,GAAV,YAOU,GAAV,YAIU,GAAV,YAAU,CAaA,IAOV,EAPA,CACY,IAAZ,EACY,MAAZ,EACY,UAAZ,EACY,WAAZ,EACY,QAAZ,GAGU,EAAV,iCACU,EAAV,mEArBY,EAAZ,gEAJY,EAAZ,6DAPY,EAAZ,cACA,kBACA,kCANY,EAAZ,8DALY,EAAZ,wDA6CQ,GAAR,CACU,KAAV,gBAKA,OAEMv2V,KAAKwpV,IAAImR,QAAQtiS,SAEnBsmY,QAvJJ,WAwJM3+b,KAAKi6H,OAAO5C,SAAS,iBACrBr3H,KAAKi6H,OAAO5C,SAAS,eAErBr3H,KAAKwpV,IAAImR,QAAQtiS,SAGnBumY,QA9JJ,WA+JM5+b,KAAKi6H,OAAO5C,SAAS,gBACrBr3H,KAAKi6H,OAAO5C,SAAS,eAErBr3H,KAAKwpV,IAAImR,QAAQtiS,SAEnBi6X,iBApKJ,WAqKMtyb,KAAK84C,MAAMy5Y,KAAKnkQ,SAElBokQ,aAvKJ,WAwKMxyb,KAAKi6H,OAAO5C,SAAS,oBAGvBwnU,WA3KJ,WA4KM,IAAIvnU,EAAU,GACdA,EAAQwnU,WAAa9+b,KAAKq+b,gBAC1Br+b,KAAKi6H,OAAO5C,SAAS,aAAcC,IAErCynU,KAhLJ,SAgLA,GACM/+b,KAAK2lV,UAAUxb,SAASmN,IAE1B8nD,eAnLJ,SAmLA,KACM,IACN,EADA,KACA,kBACM,OAAItpT,EAAQo4P,WAElB,GACA,iBACA,kBAKImxD,cA/LJ,SA+LA,KACM,IACN,EADA,KACA,kBACM,OAAIvpT,EAAQo4P,WAElB,GACA,iBACA,kBAKIoxD,cA3MJ,SA2MA,KACM,IACN,EADA,KACA,kBACM,OAAIxpT,EAAQo4P,WAElB,GACA,iBACA,kBAKI4tH,iBAvNJ,SAuNA,GACM,IACN,EADA,KACA,uBADA,KAEWr6D,YAAY5sW,OAAOnM,EAAO,GAAG,IAEpCqza,iBA5NJ,SA4NA,GACM,IACN,EADA,KACA,+CACA,EAFA,KAEA,UACUzkb,EAAEwX,OAAO29D,QAHnB,KAKag1S,YAAYzlV,QAAQojU,GALjC,KAQaqiB,YAAY5sW,OARzB,KAQqC4sW,YAAYxzX,QAAQmxW,GAAQ,IAG7D,YAxOJ,WAwOA,oIACA,iCADA,gCAEA,qCAFA,UAGA,WAHA,8BAIA,gBACA,kBACA,6EANA,0CAWA,mCAXA,wBAYA,iCAZA,WAeA,gCAfA,wBAgBA,gBACA,kBACA,yCAlBA,8BAwBA,mBAxBA,wBAyBA,gBACA,kBACA,gDA3BA,8BAiCA,GADA,KACA,mDACA,KACA,mCACA,QACA,aAGA,iBACA,QACA,SAGA,aA7CA,wDAiDA,wBAjDA,iBAkDA,qCACA,0DACA,OACA,6BACA,UACA,OAEA,8CAzDA,+BA8DA,GACA,6BACA,UACA,UAEA,wCAnEA,UAwEA,oCAxEA,eAwEA,EAxEA,iBAyEA,kCAzEA,QAyEA,EAzEA,OA0EA,GACA,gCACA,UACA,QACA,0CAGA,mBACA,iDACA,GACA,gBApFA,QA2FA,iBAEA,kBAEA,qBAEA,+BAEA,qBAnGA,gDAwGE/jU,QAzZF,WA0ZIr7C,KAAK82b,SAAW,GAApB,yBAGI92b,KAAKi6H,OAAOrF,OAAO,eAAe,GAClC50H,KAAKi6H,OAAO5C,SAAS,oBACrBr3H,KAAKi6H,OAAO5C,SAAS,eACrBr3H,KAAKi6H,OAAO5C,SAAS,iBAGrBr3H,KAAKi6H,OAAO5C,SAAS,yBACrBr3H,KAAKi6H,OAAO5C,SAAS,2BCxnBV,I,OAXC,GACd,ICTW,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAS,WAAagyF,EAAI6lU,cAAe,SAAY,kBAAoB7lU,EAAI4lU,qBAAsB,YAAY,SAAS,CAACnyZ,EAAG,eAAe,CAAEusF,EAAa,UAAEvsF,EAAG,OAAO,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,iBAAiB,CAACgyF,EAAIvtF,GAAG,UAAUutF,EAAIvtF,GAAG,OAAO,GAAGgB,EAAG,OAAO,CAACusF,EAAIvtF,GAAG,gBAAgButF,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,UAAU,CAACzF,MAAM,CAAC,eAAe,kBAAkB,CAACyF,EAAG,IAAI,CAACuR,YAAY,YAAY,CAACg7E,EAAIvtF,GAAG,yBAAyButF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,UAAU,CAACzF,MAAM,CAAC,eAAe,2BAA2B,CAACyF,EAAG,IAAI,CAACuR,YAAY,YAAY,CAACg7E,EAAIvtF,GAAG,yBAAyButF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAyB,KAAnButF,EAAI2iU,YAAoBlvZ,EAAG,UAAU,CAACzF,MAAM,CAAC,eAAe,sBAAsB,CAACyF,EAAG,IAAI,CAACuR,YAAY,YAAY,CAACg7E,EAAIvtF,GAAG,yBAAyButF,EAAIttF,MAAM,IAAI,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAAC+O,IAAI,aAAaxU,MAAM,CAAC,YAAcgyF,EAAIpjE,YAAY,sBAAsBojE,EAAIqqQ,mBAAmB,gBAAgBrqQ,EAAIuqQ,eAAe,CAAC92V,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,YAAY,cAAc,YAAY,UAAU,mBAAmB3B,GAAG,CAAC,MAAQ2zF,EAAIi6T,kBAAkBhsZ,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,iBAAiB,cAAc,iBAAiB,UAAU,uBAAuB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIuqQ,cAAgBvqQ,EAAIuqQ,eAAet8V,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,YAAY,WAAW,mBAAmB,cAAc,mBAAmB,UAAU,iBAAiB3B,GAAG,CAAC,MAAQ2zF,EAAI4jU,aAAa31Z,KAAK,cAAc+xF,EAAIvtF,GAAG,KAAKgB,EAAG,4BAA4BusF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,2BAA2B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,GAAO16U,GAAG,CAAC,oBAAoB,SAASuE,GAAQ,OAAOovF,EAAIyjU,iBAAiB18E,UAAa,GAAG/mP,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsBusF,EAAI7yH,GAAI6yH,EAAU,QAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,4BAA4B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,EAAM,QAAU/mP,EAAIopQ,YAAYxzX,QAAQmxW,IAAU,GAAG16U,GAAG,CAAC,OAAS2zF,EAAI0jU,uBAAsB,IAAI,GAAG1jU,EAAIvtF,GAAG,KAAKgB,EAAG,cAAc,CAAC+O,IAAI,YAAYw9E,EAAI7yH,GAAI6yH,EAAkB,gBAAE,SAASmlQ,EAAS90W,GAAO,OAAOojB,EAAG,MAAM,CAACluC,IAAI8qB,EAAM20B,YAAY,YAAY,CAACvR,EAAG,oBAAoB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG9hB,QAAY2vG,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAG,GAAW,SAASswE,EAAQz5E,GAAG,OAAOyvC,EAAG,aAAa,CAACluC,IAAIvB,EAAEgqC,MAAM,CAAC,KAAOyvC,EAAQx2C,KAAK,MAAQw2C,EAAQspS,MAAM,KAAOtpS,EAAQ8+E,YAAcv8B,EAAIwlU,WAAa/nX,EAAQkpX,KAAO3mU,EAAIylU,YAAY,KAAOhoX,EAAQkpX,KAAK,OAASlpX,EAAQ8oT,OAAO,MAAQvmQ,EAAI+mQ,eAAetpT,EAASptD,GAAO,KAAO2vG,EAAIgnQ,cAAcvpT,EAASptD,GAAO,KAAO2vG,EAAIinQ,cAAcxpT,EAASptD,KAAS,CAAEotD,EAAY,KAAEhqC,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,QAAQyC,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAGsrC,EAAQ96C,OAAOsL,KAAK,SAAS+xF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMgrC,EAAY,KAAEhqC,EAAG,OAAO,CAACuR,YAAY,YAAYhX,MAAM,CAAC,KAAO,QAAQyC,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAGsrC,EAAQomX,YAAY51Z,KAAK,SAAS+xF,EAAIttF,UAASstF,EAAIvtF,GAAG,KAAMutF,EAAI8lU,qBAAuB,EAAGryZ,EAAG,aAAa,CAACzF,MAAM,CAAC,KAAO,WAAW,QAAS,EAAK,OAAQ,EAAK,MAAO,EAAK,MAAO,EAAK,OAAUgyF,EAAI8lU,qBAAuB,uBAAwB9lU,EAAIttF,MAAM,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,QAAQ,CAAC+O,IAAI,OAAOwN,YAAY,CAAC,QAAU,QAAQhiB,MAAM,CAAC,KAAO,OAAO,SAAW,IAAI3B,GAAG,CAAC,OAAS2zF,EAAIm6T,gBAAgBn6T,EAAIvtF,GAAG,KAAKgB,EAAG,aAAa,CAACuR,YAAY,gBAAgB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIsmU,cAActmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,aAAa3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIumU,cAAcvmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,0BAA0B3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI82T,oBAAoB92T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkmU,iBAAiBlmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImmU,mBAAmBnmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,aAAa3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIomU,eAAepmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,gBAAgB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIqmU,mBAAmB,IAAI,GAAGrmU,EAAIvtF,GAAG,KAAKgB,EAAG,aAAa,CAACuR,YAAY,yBAAyB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIsmU,cAActmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,aAAa3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIumU,cAAcvmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,0BAA0B3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI82T,oBAAoB92T,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkmU,iBAAiBlmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImmU,mBAAmBnmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,aAAa3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIomU,gBAAgB,IAAI,GAAGpmU,EAAIvtF,GAAG,KAAKgB,EAAG,aAAa,CAACuR,YAAY,oBAAoB,CAACvR,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,eAAe3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkmU,iBAAiBlmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,iBAAiB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImmU,mBAAmBnmU,EAAIvtF,GAAG,KAAKgB,EAAG,eAAe,CAACzF,MAAM,CAAC,gBAAgB,GAAG,MAAQ,aAAa3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIomU,gBAAgB,IAAI,IAAI,KAC7qL,IDWpB,EACA,KACA,WACA,M,SEGa,GAXC,GCmFhB,CACEjnb,KADF,WAEI,MAAO,CACL0+a,OAAQ,KACRC,eAAgB,KAChB10D,YAAa,GACbmB,cAAc,EACd03D,oBAAoB,IAGxB36Z,SAAU,CACRu0W,OADJ,WAEM,OAAOl0Y,KAAKi6H,OAAOtE,QAAQu+Q,QAG7B+qD,mBALJ,WAOM,OAAOj/b,KAAKi6H,OAAOtE,QAAQspU,oBAE7Bv8D,mBATJ,WAWM,OADN,KACkBjB,YAAYx/X,OAAS,GAEnCgzD,YAbJ,WAeM,OADN,KACkBwsU,YAAYx/X,OAAS,EAAI,sBAAwB,YAGjEs5C,QA5BF,WA6BI,IAAJ,OACIx6C,EAAKsma,UAAS,WACZtma,EAAKugY,WAAavgY,EAAK+3C,MAAMwoV,WAAWO,aACxC9gY,EAAKy8X,SAAWz8X,EAAK+3C,MAAM0kV,SAASa,eAGxC5+V,QAAS,CACP6yZ,iBADJ,WAEMtyb,KAAK84C,MAAMy5Y,KAAKnkQ,SAElBokQ,aAJJ,WAKMxyb,KAAKi6H,OAAO5C,SAAS,oBAEvB+nQ,eAPJ,SAOA,KACM,IACN,EADA,KACA,kBACM,OAAItpT,EAAQo4P,WAElB,GACA,iBACA,kBAKImxD,cAnBJ,SAmBA,KACM,IACN,EADA,KACA,kBACM,OAAIvpT,EAAQo4P,WAElB,GACA,iBACA,kBAKIoxD,cA/BJ,SA+BA,KACM,IACN,EADA,KACA,kBACM,OAAIxpT,EAAQo4P,WAElB,GACA,iBACA,kBAKI4tH,iBA3CJ,SA2CA,GACM,IACN,EADA,KACA,uBADA,KAEWr6D,YAAY5sW,OAAOnM,EAAO,GAAG,IAEpCqza,iBAhDJ,SAgDA,GACM,IACN,EADA,KACA,+CACA,EAFA,KAEA,UACUzkb,EAAEwX,OAAO29D,QAHnB,KAKag1S,YAAYzlV,QAAQojU,GALjC,KAQaqiB,YAAY5sW,OARzB,KAQqC4sW,YAAYxzX,QAAQmxW,GAAQ,IAI7D68E,YA7DJ,WA+DM,IAAN,OACA,uDACA,KACMl7b,EAAK0gY,YAAY3pX,SAAQ,SAA/B,GACQonb,EAAeh9b,KAAK,CAClBk9W,MAAOkkB,OAGPtoW,EAAKwoB,OAAOvhD,QACdi9b,EAAeh9b,KAAK,CAClB84B,KAAV,IAGoC,IAA1Bkka,EAAej9b,SAGflB,EAAK0gY,YAAYx/X,OAAS,EAC5ByuB,EAAE5Y,QAAQ/W,EAAK0gY,aAAa,SAApC,GACU1gY,EAAKk5H,OAAO5C,SAAS,mBAAoBisQ,GAAYhzW,MAAK,SAApE,GACYvvB,EAAKk5H,OAAO5C,SAAS,uBAAwB,CAC3C6+T,OAAQn1b,EAAKm1b,OACb9ub,IAAK4zB,EACL67Z,IAAKzzT,UAKXriI,EAAKk5H,OAAO5C,SAAS,uBAAwB,CAC3C6+T,OAAQn1b,EAAKm1b,OACb9ub,IAAK4zB,EACL67Z,IAAK,OAIT91b,EAAK0gY,YAAc,GAEnB1gY,EAAK6hY,cAAe,EAEpB7hY,EAAKugY,WAAWvnW,QAGZiB,EAAK/4B,OAAS,GAAGlB,EAAKugY,WAAW38M,WAGzCtpI,QA9IF,WA+IIr7C,KAAKi6H,OAAOrF,OAAO,eAAe,GAClC50H,KAAKi6H,OAAO5C,SAAS,0BC1OZ,WAAa,IAAIgB,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,gCAAgC,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAAC+O,IAAI,aAAaxU,MAAM,CAAC,YAAcgyF,EAAIpjE,YAAY,sBAAsBojE,EAAIqqQ,mBAAmB,gBAAgBrqQ,EAAIuqQ,eAAe,CAAC92V,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,YAAY,cAAc,YAAY,UAAU,mBAAmB3B,GAAG,CAAC,MAAQ2zF,EAAIi6T,kBAAkBhsZ,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,WAAW,iBAAiB,cAAc,iBAAiB,UAAU,uBAAuB3B,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIuqQ,cAAgBvqQ,EAAIuqQ,eAAet8V,KAAK,gBAAgB+xF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,YAAY,WAAW,mBAAmB,cAAc,mBAAmB,UAAU,iBAAiB3B,GAAG,CAAC,MAAQ2zF,EAAI4jU,aAAa31Z,KAAK,cAAc+xF,EAAIvtF,GAAG,KAAKgB,EAAG,4BAA4BusF,EAAI7yH,GAAI6yH,EAAe,aAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,2BAA2B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,GAAO16U,GAAG,CAAC,oBAAoB,SAASuE,GAAQ,OAAOovF,EAAIyjU,iBAAiB18E,UAAa,GAAG/mP,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsBusF,EAAI7yH,GAAI6yH,EAAU,QAAE,SAAS+mP,EAAM12V,GAAO,OAAOojB,EAAG,4BAA4B,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,MAAQ+4U,EAAM,QAAU/mP,EAAIopQ,YAAYxzX,QAAQmxW,IAAU,GAAG16U,GAAG,CAAC,OAAS2zF,EAAI0jU,uBAAsB,IAAI,GAAG1jU,EAAIvtF,GAAG,KAAKgB,EAAG,cAAc,CAAC+O,IAAI,YAAYw9E,EAAI7yH,GAAI6yH,EAAsB,oBAAE,SAASmlQ,EAAS90W,GAAO,OAAOojB,EAAG,MAAM,CAACluC,IAAI8qB,EAAM20B,YAAY,YAAY,CAACvR,EAAG,oBAAoB,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG9hB,QAAY2vG,EAAIvtF,GAAG,KAAKutF,EAAI7yH,GAAG,GAAW,SAASswE,EAAQz5E,GAAG,OAAOyvC,EAAG,aAAa,CAACluC,IAAIvB,EAAEgqC,MAAM,CAAC,KAAOyvC,EAAQx2C,KAAK,MAAQw2C,EAAQspS,MAAM,KAAOtpS,EAAQl5E,KAAK,OAASk5E,EAAQ8oT,SAAS,CAAE9oT,EAAY,KAAEhqC,EAAG,OAAO,CAACzF,MAAM,CAAC,KAAO,QAAQyC,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAGsrC,EAAQ96C,OAAOsL,KAAK,SAAS+xF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAMgrC,EAAY,KAAEhqC,EAAG,OAAO,CAACuR,YAAY,YAAYhX,MAAM,CAAC,KAAO,QAAQyC,SAAS,CAAC,UAAYuvF,EAAI7tF,GAAGsrC,EAAQomX,YAAY51Z,KAAK,SAAS+xF,EAAIttF,WAAU,MAAK,GAAGstF,EAAIvtF,GAAG,KAAKgB,EAAG,QAAQ,CAAC+O,IAAI,OAAOwN,YAAY,CAAC,QAAU,QAAQhiB,MAAM,CAAC,KAAO,OAAO,SAAW,IAAI3B,GAAG,CAAC,OAAS2zF,EAAIm6T,iBAAiB,KAC5rE,IFUpB,EACA,KACA,KACA,M,QGd4L,GCoB9L,CACE,KADF,WAEI,MAAJ,CACM,WAAN,cAGE,SAAF,CACI,gBADJ,WAEM,OAAN,qCAEI,MAJJ,WAKM,OAAN,4BAGE,QAAF,CACI,YADJ,WACM,IAAN,OAAM,OAAN,2BAAQ,IAAR,EAAQ,OAAR,8DACA,MACA,kBACA,wBACA,gBAEA,QANA,gCAMA,iDANA,OAMA,MANA,cAOA,mCAPA,8CASI,iBAVJ,WAWM,KAAN,oBAEI,aAbJ,WAcM,KAAN,iDAGE,QA/BF,WAiCI,KAAJ,iCADA,oKCjCe,I,OAXC,GACd,ICTW,WAAa,IAAIn6T,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,aAAa,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,YAAY,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAG,eAAeutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAMgyF,EAAI66T,gBAAgB,IAAM,IAAIxuZ,GAAG,CAAC,MAAQ2zF,EAAIi6T,sBAAsBj6T,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,kBAAkB,KAAK,CAACyF,EAAG,gBAAgB,CAACzF,MAAM,CAAC,MAAQgyF,EAAIymU,WAAW,MAAQ,aAAa,KAAO,OAAO,YAAc,kBAAkB,eAAe,IAAIp6Z,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIymU,WAAW71Z,EAAOna,OAAOxxB,WAAW,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,YAAY,CAACzF,MAAM,CAAC,KAAO,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAI8mU,cAAc,CAAC9mU,EAAIvtF,GAAG,sBAAsButF,EAAIvtF,GAAG,KAAKgB,EAAG,QAAQ,CAAC+O,IAAI,OAAOwN,YAAY,CAAC,QAAU,QAAQhiB,MAAM,CAAC,KAAO,QAAQ3B,GAAG,CAAC,OAAS2zF,EAAIm6T,iBAAiB,IAAI,KACh5B,IDWpB,EACA,KACA,WACA,M,SEf8L,GCmBhM,CACE,KADF,WAEI,MAAJ,CACM,WAAN,OAGE,SAAF,CACI,UADJ,WAEM,IACN,mCAKM,OAJA,EAAN,QAFA,KAEA,2BACQ,IAAR,mBACQ,EAAR,eAEA,GAEI,cAVJ,WAWM,OAAN,oCAGE,QAAF,CACI,IADJ,SACA,GACM,IAAN,KACM,EAAN,YACM,EAAN,2BACM,KAAN,iCAIE,QA7BF,WA6BI,IAAJ,OAAI,OAAJ,4FACA,0CACA,kDAFA,+CC7Be,I,OAXC,GACd,ICTW,WAAa,IAAIn6T,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,eAAe,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,cAAc,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAKgB,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAG,iBAAiButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAa,WAAE,SAAS+mU,EAAO12a,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQ+4Z,EAAOxic,OAAO,CAACkvC,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAM+4Z,EAAOjP,WAAW7pZ,KAAK,UAAU+xF,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsB,CAACzF,MAAM,CAAC,MAAQ,KAAK,CAACyF,EAAG,qBAAqB,CAACzF,MAAM,CAAC,MAAQ,SAAS3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIz5G,IAAIwgb,MAAW,CAAC/mU,EAAIvtF,GAAG,UAAU,IAAI,MAAK,IAAI,IAAI,KAC1tB,IDWpB,EACA,KACA,WACA,M,SEf6L,GCkB/L,CACE,KADF,WAEI,MAAJ,CACM,WAAN,OAGE,SAAF,CACI,cADJ,WAEM,OAAN,oCAGE,QAXF,WAYI,KAAJ,2CACI,KAAJ,qDCZe,I,OAXC,GACd,ICTW,WAAa,IAAIutF,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,cAAc,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,YAAY,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAMutF,EAAIgnU,cAAcp9b,OAAO,EAAG6pC,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAIgnU,cAAcp9b,QAAQ,UAAUo2H,EAAI7tF,GAAG6tF,EAAIgnU,cAAcp9b,OAAO,EAAE,IAAI,OAAO6pC,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAG,oBAAoButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAiB,eAAE,SAAS+mU,EAAO12a,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQ+4Z,EAAOxic,OAAO,CAACkvC,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAM+4Z,EAAOjP,WAAW7pZ,KAAK,eAAc,IAAI,IAAI,KACrrB,IDWpB,EACA,KACA,WACA,M,SEfgM,GCqBlM,CACE,KADF,WAEI,MAAJ,CACM,WAAN,OAGE,QAAF,CACI,OADJ,SACA,GACM,IAAN,KACM,EAAN,SACM,EAAN,2BACM,KAAN,oCAGE,SAAF,CACI,cADJ,WAEM,OAAN,oCAGE,QAnBF,WAoBI,KAAJ,2CACI,KAAJ,qDCqMeu6R,I,OAnMF,CAEX,CACEpsR,KAAM,IACNvE,UAAWovZ,IAEb,CACE7qZ,KAAM,WACNvE,UAAWqvZ,IAGb,CACE9qZ,KAAM,cACNvE,UAAWsvZ,IAEb,CACE/qZ,KAAM,iBACNvE,UAAWuvZ,IAEb,CACEhrZ,KAAM,gBACNvE,UAAWwvZ,IAEb,CACEjrZ,KAAM,uBACNvE,UAAWyvZ,IAEb,CACElrZ,KAAM,gBACNvE,UAAW0vZ,IAEb,CACEnrZ,KAAM,YACNvE,UAAW2vZ,IAGb,CACEprZ,KAAM,WACNvE,UAAW4vZ,IAEb,CACErrZ,KAAM,eACNvE,UAAW6vZ,IAGb,CAEEtrZ,KAAM,UACN73C,KAAM,YACNszC,UAAW8vZ,IAGb,CACEvrZ,KAAM,SACNvE,UAAW+vZ,IAEb,CACExrZ,KAAM,YACNvE,UAAWgwZ,IAEb,CACEzrZ,KAAM,eACNvE,UAAWiwZ,IAEb,CACE1rZ,KAAM,aACNvE,UAAWkwZ,IAEb,CACE3rZ,KAAM,aACNvE,UAAWmwZ,IAEb,CACE5rZ,KAAM,aACNvE,UAAWowZ,IAEb,CACE7rZ,KAAM,aACNvE,UAAWqwZ,IAEb,CACE9rZ,KAAM,sBACNvE,UAAWswZ,IAEb,CACE/rZ,KAAM,eACNvE,UAAWuwZ,IAEb,CACEhsZ,KAAM,iBACNvE,UAAWwwZ,IAEb,CACEjsZ,KAAM,cACNvE,UAAWywZ,IAEb,CACElsZ,KAAM,cACNvE,UAAW0wZ,IAEb,CACEnsZ,KAAM,iBACNvE,UAAW2wZ,IAEb,CACEpsZ,KAAM,eACNvE,UAAW4wZ,IAEb,CAEErsZ,KAAM,cACNvE,UAAW6wZ,IAEb,CAEEtsZ,KAAM,gBACNvE,UAAW8wZ,IAEb,CACEvsZ,KAAM,aACNvE,UAAW+wZ,IAEb,CACExsZ,KAAM,0BACNvE,UAAWgxZ,IAEb,CACEzsZ,KAAM,4BACNvE,UCpKY,GACd,ICTW,WAAa,IAAImoF,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,iBAAiB,CAACyF,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,eAAe,YAAY,UAAUgyF,EAAIvtF,GAAG,KAAMutF,EAAIgnU,cAAcp9b,OAAO,EAAG6pC,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAGutF,EAAI7tF,GAAG6tF,EAAIgnU,cAAcp9b,QAAQ,UAAUo2H,EAAI7tF,GAAG6tF,EAAIgnU,cAAcp9b,OAAO,EAAE,IAAI,OAAO6pC,EAAG,iBAAiB,CAACusF,EAAIvtF,GAAG,oBAAoButF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,aAAa,KAAKgyF,EAAI7yH,GAAI6yH,EAAiB,eAAE,SAAS+mU,EAAO12a,GAAO,OAAOojB,EAAG,eAAe,CAACluC,IAAI8qB,EAAM2d,MAAM,CAAC,SAAW,GAAG,MAAQ+4Z,EAAOxic,OAAO,CAACkvC,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,KAAO,QAAQ,IAAM+4Z,EAAOjP,WAAW7pZ,KAAK,UAAU+xF,EAAIvtF,GAAG,KAAKgB,EAAG,sBAAsB,CAACzF,MAAM,CAAC,MAAQ,KAAK,CAACyF,EAAG,qBAAqB,CAACzF,MAAM,CAAC,MAAQ,OAAO3B,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAI1jG,OAAOyqa,MAAW,CAAC/mU,EAAIvtF,GAAG,aAAa,IAAI,MAAK,IAAI,IAAI,KACz3B,IDWpB,EACA,KACA,WACA,M,SD+JA,CACE2J,KAAM,yBACNvE,UAAWixZ,IAGb,CACE1sZ,KAAM,4CACNvE,UAAWkxZ,IAEb,CACE3sZ,KAAM,kCACN/c,MAAO,SAAU2pa,EAASC,EAAWtxa,EAASC,GAE5C,IAGI+hD,EAHShyE,KAGIgyE,IAGjBA,EAAI4mR,UAAUpqS,OAGD6yY,EAAQr8Z,OAAO+zO,OAG5Bz4Q,YAAW,WAkBT0xE,EAAI4mR,UAAU5+M,OAGdhqH,EACE,CACEkgB,UAAWqxZ,IAEb,CACErma,QAAS,CACP8Y,KAzBK,CACTwtZ,UAAW,WACXC,SAAU,cACV/Q,MAAO,uDACPgR,MAAO,CACL,CACE/9W,MAAO,qBACPy/C,IAAK,wBAEP,CACEz/C,MAAO,mBACPy/C,IAAK,qCAkBV,OAGP,CACE3uF,KAAM,OACNvE,UAAWyxZ,MGnEf,mBAXqB,CACnB7qW,OAAQ,0CACR2yH,WAAY,gCACZm4O,YAAa,uCACb/rW,UAAW,gBACXgsW,cAAe,4BACfjnK,kBAAmB,eACnB9iM,MAAO,8CAgDT,ICpNmL,GDoNnL,CACEtgF,KADF,WAEI,MAAO,CAELsqb,SAAU,CACR5na,GAAI,2BACJt9B,KAAM,iBACNgxE,MAAO,OAEPp2D,KAAM,WACJ,MAAO,CACLw8B,KAAM,CACJwtZ,UAAW,OACXC,SAAU,OAGZM,SAAU,CACtB,CACc,GAAd,IACc,MAAd,iBACc,YACd,0OAEA,CACc,GAAd,IACc,MAAd,sBACc,YACd,iNAEA,CACc,GAAd,IACc,MAAd,iBACc,YACd,+PAOQlhI,OAAQ,GAGRv/T,MAAO,CACLg0W,sBAAuBt1W,KAAKiub,QAAQ3hX,UAAYtsE,KAAKiub,QAAQzhX,SAC7DgpS,uBACV,8CAGQh1K,UAAW,CACTwhQ,QAAS,KAAnB,0CACUv1G,oBAAoB,EACpBE,wBAAwB,IAK5BgM,SAAU,GACVxsJ,SAAU,KAGd1rK,OAAQ,CAAC,IACTd,SAAU,CACRsia,cADJ,WAEM,OAAOjic,KAAKi6H,OAAOtE,QAAQssU,eAE7BC,YAJJ,WAKM,OAAOlic,KAAKi6H,OAAOtE,QAAQusU,aAE7BC,UAPJ,WAQM,OAAOnic,KAAKi6H,OAAOtE,QAAQwsU,WAE7BhS,UAVJ,WAWM,OAAOnwb,KAAKi6H,OAAOtE,QAAQw6T,WAE7BgD,aAbJ,WAcM,OAAOnzb,KAAKi6H,OAAOtE,QAAQw9T,cAG7BC,cAjBJ,WAkBM,OAAOpzb,KAAKi6H,OAAOtE,QAAQy9T,eAE7BgP,UApBJ,WAqBM,OAAOpic,KAAKi6H,OAAOtE,QAAQysU,WAE7B/O,gBAvBJ,WAwBM,OAAOrzb,KAAKi6H,OAAOtE,QAAQ09T,kBAG/B5zZ,QAAS,CACP4ia,cADJ,WACA,WAEmBric,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,kBACQ,KAAR,kHACQ,QAAR,GAEQ,QAAR,EAAU,KAAV,KAAU,OAAV,IAAU,KAAV,QACQ,QAAR,cACU,GAAV,MACY,IAAZ,QAGY,EAAZ,iCACY,EAAZ,mBACY,EAAZ,gBAIQ,GAAR,CACU,KAAV,gBAKA,QAEI+rG,SA7BJ,WA6BA,WACmBtic,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,2BACQ,KAAR,GACQ,QACR,gLAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,OACQ,QAAR,cAGU,IAAV,2CACU,GAAV,YACY,IAAZ,KACY,EAAZ,OACY,EAAZ,8BACY,EAAZ,wBAGA,MACc,EAAd,cACA,kBACA,iCAKQ,GAAR,CACU,KAAV,WACY,QAAZ,gBAIA,QAGIgsG,aAlEJ,WAkEA,WACmBvic,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,qBACQ,KAAR,GACQ,QACR,oLAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,OACQ,QAAR,cAGU,IAAV,2CACU,GAAV,YACY,IAAZ,KACY,EAAZ,WACY,EAAZ,kCACY,EAAZ,wBAGA,MACc,EAAd,cACA,kBACA,iCAKQ,GAAR,CACU,KAAV,WACY,QAAZ,gBAIA,QAGIkhG,SAvGJ,WAuGA,WACmBz3b,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,0BACQ,KAAR,GACQ,QACR,kPAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,OACQ,QAAR,cAGU,IAAV,2CACU,GAAV,YACY,IAAZ,KACY,EAAZ,WACY,EAAZ,kCACY,EAAZ,wBAGA,MACc,EAAd,cACA,kBACA,iCAKQ,GAAR,CACU,KAAV,gBAKA,QAGIisG,mBA5IJ,WA4IA,WACmBxic,KAAKwpV,IAAI+M,OAC5B,QACQ,MAAR,4BACQ,KAAR,GACQ,QACR,uLAEQ,QAAR,EAAU,KAAV,SAAU,OAAV,IAAU,KAAV,OACQ,QAAR,cAGU,IAAV,2CACU,GAAV,YACY,IAAZ,KACY,EAAZ,iBACY,EAAZ,wCACY,EAAZ,wBAGA,MACc,EAAd,cACA,kBACA,iCAKQ,GAAR,CACU,KAAV,WACY,QAAZ,gBAIA,QAEIksG,kBAhLJ,SAgLA,GACM9hc,QAAQ6wE,IAAInnE,IAEdq4b,eAnLJ,WAoLM1ic,KAAKwpV,IAAI+M,OAAOgC,MACtB,4DAGIk7F,QAxLJ,WAyLM,IAAN,WACMzzb,KAAKi6H,OAAO5C,SAAS,WACrBrlD,EAAI8wQ,MAAMzqR,UAGd9c,QAvRF,WAwRIv7C,KAAKqna,UAAS,SAAlB,GAEUhmG,EAAG51P,OAAOa,SACZ,GAAR,aE5de,I,OAXC,GACd,ICTW,WAAa,IAAI+rD,EAAIr4H,KAAS6+I,EAAGxmB,EAAItwF,eAAmB+D,EAAGusF,EAAIz/E,MAAM9M,IAAI+yG,EAAG,OAAO/yG,EAAG,SAAS,CAACzF,MAAM,CAAC,OAASgyF,EAAIypU,WAAW,CAACh2Z,EAAG,WAAW,CAACzF,MAAM,CAAC,KAAO,GAAG,MAAQ,GAAG,aAAa,KAAK,CAACyF,EAAG,UAAU,CAACA,EAAG,UAAU,CAACA,EAAG,WAAW,CAACA,EAAG,WAAW,CAACusF,EAAIvtF,GAAG,kBAAkButF,EAAI7tF,GAAG6tF,EAAI86T,kBAAkB,GAAG96T,EAAIvtF,GAAG,KAAKgB,EAAG,MAAM,CAACuR,YAAY,WAAW,CAACvR,EAAG,MAAM,CAACuR,YAAY,eAAehX,MAAM,CAAC,IAAMgyF,EAAI83T,UAAU,IAAM,QAAQ93T,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACusF,EAAIvtF,GAAG,0BAA0ButF,EAAI7tF,GAAG6tF,EAAI+6T,eAAe,gBAAgBtnZ,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIkqU,kBAAkB,CAACz2Z,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,OAAO,MAAQ,WAAW,IAAI,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACusF,EAAIvtF,GAAG,iCAAiCutF,EAAI7tF,GAAG6tF,EAAIg7T,iBAAiB,gBAAgBvnZ,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAImqU,wBAAwB,CAAC12Z,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,OAAO,MAAQ,WAAW,IAAI,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACusF,EAAIvtF,GAAG,2BAA2ButF,EAAI7tF,GAAG6tF,EAAI4pU,eAAe,gBAAgBn2Z,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIo/T,cAAc,CAAC3rZ,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,OAAO,MAAQ,WAAW,IAAI,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACusF,EAAIvtF,GAAG,0CAA0CgB,EAAG,UAAU,CAACpH,GAAG,CAAC,MAAQ,SAASuE,GAAQ,OAAOovF,EAAIgqU,mBAAmB,CAACv2Z,EAAG,UAAU,CAACzF,MAAM,CAAC,SAAW,SAAS,MAAQ,WAAW,IAAI,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACA,EAAG,eAAe,CAACzF,MAAM,CAAC,KAAO,aAAa,cAAc,GAAG,MAAQ,YAAY3B,GAAG,CAAC,MAAQ2zF,EAAIo7T,YAAY,IAAI,IAAI,IAAI,GAAGp7T,EAAIvtF,GAAG,KAAMutF,EAAa,UAAEvsF,EAAG,WAAW,CAACuR,YAAY,aAAahX,MAAM,CAAC,KAAO,KAAK,CAACyF,EAAG,aAAa,CAAC1L,WAAW,CAAC,CAACxjC,KAAK,OAAOskD,QAAQ,SAAS5jD,MAAO+6H,EAAe,YAAE7jF,WAAW,gBAAgBnO,MAAM,CAAC,OAAS,GAAG,OAAS,GAAG,OAAS,KAAK,CAACyF,EAAG,UAAU,CAACzF,MAAM,CAAC,WAAW,aAAa,kBAAkB,GAAG,WAAW,cAAc,cAAc,cAAc,UAAU,gBAAgB,KAAO,aAAagyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,WAAW,gBAAgB,WAAW,wBAAwB,cAAc,wBAAwB,UAAU,kBAAkB,KAAO,aAAagyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,WAAW,eAAe,WAAW,wBAAwB,cAAc,wBAAwB,UAAU,kBAAkB,KAAO,aAAa,GAAGgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,GAAK,YAAY,KAAO,GAAG,IAAM,GAAG,aAAa,GAAG,IAAM,OAAOgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,GAAK,eAAe,KAAO,UAAU,IAAM,GAAG,IAAM,eAAegyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,GAAK,cAAc,KAAO,SAAS,IAAM,GAAG,IAAM,cAAcgyF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,GAAK,kBAAkB,KAAO,aAAa,IAAM,GAAG,IAAM,mBAAmB,GAAGgyF,EAAIttF,KAAKstF,EAAIvtF,GAAG,KAAOutF,EAAI8pU,UAAmE9pU,EAAIttF,KAA5De,EAAG,UAAU,CAACzF,MAAM,CAAC,IAAM,cAAc,MAAO,KAAiBgyF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACzF,MAAM,CAAC,GAAK,aAAa,CAACyF,EAAG,UAAU,CAACA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACzF,MAAM,CAAC,MAAQ,UAAU,CAACyF,EAAG,eAAe,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,cAAc,KAAK,CAACgyF,EAAIvtF,GAAG,YAAY,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,WAAW,CAACA,EAAG,IAAI,CAACusF,EAAIvtF,GAAG,iCAAiC,IAAI,IAAI,GAAGutF,EAAIvtF,GAAG,KAAKgB,EAAG,kBAAkB,CAACzF,MAAM,CAAC,GAAK,oBAAoB,CAACyF,EAAG,UAAU,CAACA,EAAG,UAAU,CAACzF,MAAM,CAAC,eAAe,KAAK,CAACyF,EAAG,wBAAwB,CAACusF,EAAIvtF,GAAG,WAAWutF,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACzF,MAAM,CAAC,KAAO,KAAK,CAACyF,EAAG,gBAAgB,CAACzF,MAAM,CAAC,KAAO,OAAO,KAAO,WAAW,YAAc,gBAAgB,MAAQgyF,EAAIsgO,UAAUj0T,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAIsgO,SAAW1vT,EAAOna,OAAOxxB,UAAU+6H,EAAIvtF,GAAG,KAAKgB,EAAG,gBAAgB,CAACzF,MAAM,CAAC,KAAO,WAAW,KAAO,WAAW,YAAc,gBAAgB,MAAQgyF,EAAI8zE,UAAUznK,GAAG,CAAC,MAAQ,SAASuE,GAAQovF,EAAI8zE,SAAWljK,EAAOna,OAAOxxB,WAAW,GAAG+6H,EAAIvtF,GAAG,KAAKgB,EAAG,UAAU,CAACA,EAAG,iBAAiB,CAACzF,MAAM,CAAC,MAAQ,UAAU,qBAAqB,IAAI3B,GAAG,CAAC,MAAQ2zF,EAAIqqU,kBAAkBrqU,EAAIvtF,GAAG,KAAKgB,EAAG,kBAAkB,CAACusF,EAAIvtF,GAAG,kEAAkEgB,EAAG,MAAMusF,EAAIvtF,GAAG,wDAA0D,IAAI,IAAI,IAAI,IAAI,KACr7H,IDWpB,EACA,KACA,WACA,M,sCE8dF,SAAS0mZ,KAEP,IAAI3xb,EAAYF,OAAOC,UAAUC,UAC/B24B,EAAW74B,OAAOC,UAAU44B,SAI5B20C,EAAK,KAcP,OAZ0C,IALvB,CAAC,YAAa,WAAY,SAAU,UAKpCl/D,QAAQuqB,GACzB20C,EAAK,UACwC,IAL9B,CAAC,SAAU,OAAQ,QAKZl/D,QAAQuqB,GAC9B20C,EAAK,OAC4C,IAR9B,CAAC,QAAS,QAAS,UAAW,SAQvBl/D,QAAQuqB,GAClC20C,EAAK,UACI,UAAU5hE,KAAK1L,GACxBstE,EAAK,WACKA,GAAM,QAAQ5hE,KAAKitB,KAC7B20C,EAAK,SAGAA,EAGMw1X,I,GAAAA,GAjgBI,CACjB97X,MAAO,CACL2sX,eAAe,EACf/D,eAAgB,KAChB76I,YAAa,KACbutJ,WAAW,EACX/P,WAAW,EACXC,cAAc,EACdlB,mBAAmB,EACnBhB,UAAW,KACXgD,aAAc,KACdC,cAAe,KACf6O,cAAe,KACf5O,gBAAiB,KACjBpD,cAAe,MAEjBt6T,QAAS,CACP69T,cAAe,SAAA3sX,GAAK,OAAIA,EAAM2sX,eAC9ByO,cAAe,SAAAp7X,GAAK,OAAIA,EAAMo7X,eAC9BrtJ,YAAa,SAAA/tO,GAAK,OAAIA,EAAM+tO,aAC5B66I,eAAgB,SAAA5oX,GAAK,OAAIA,EAAM4oX,gBAC/B4C,aAAc,SAAAxrX,GAAK,OAAIA,EAAMwrX,cAC7B8P,UAAW,SAAAt7X,GAAK,OAAIA,EAAMs7X,WAC1B/P,UAAW,SAAAvrX,GAAK,OAAIA,EAAMurX,WAC1BjB,kBAAmB,SAAAtqX,GAAK,OAAIA,EAAMsqX,mBAClChB,UAAW,SAAAtpX,GAAK,OAAIA,EAAMspX,WAC1BgD,aAAc,SAAAtsX,GAAK,OAAIA,EAAMssX,cAC7BC,cAAe,SAAAvsX,GAAK,OAAIA,EAAMusX,eAC9BC,gBAAiB,SAAAxsX,GAAK,OAAIA,EAAMwsX,iBAChCpD,cAAe,SAAAppX,GAAK,OAAIA,EAAMopX,gBAEhCv6T,UAAW,CACTktU,gBADS,SACO/7X,EAAOywD,GACrBzwD,EAAM2sX,cAAgBl8T,GAExBurU,gBAJS,SAIOh8X,EAAOywD,GACrBzwD,EAAMo7X,cAAgB3qU,GAExBwrU,cAPS,SAOKj8X,EAAOywD,GACnBzwD,EAAM+tO,YAAct9K,GAEtByrU,gBAVS,SAUOl8X,EAAOywD,GACrBzwD,EAAM4oX,eAAiBn4T,GAEzB0rU,eAbS,SAaMn8X,EAAOywD,GACpBzwD,EAAMwrX,aAAe/6T,GAGvB2rU,YAjBS,SAiBGp8X,EAAOywD,GACjBzwD,EAAMs7X,UAAY7qU,GAEpB4rU,YApBS,SAoBGr8X,EAAOywD,GACjBzwD,EAAMurX,UAAY96T,GAEpB6rU,mBAvBS,SAuBUt8X,EAAOywD,GACxBzwD,EAAMsqX,kBAAoB75T,GAE5B8rU,YA1BS,SA0BGv8X,EAAOywD,GACjBzwD,EAAMspX,UAAY74T,GAEpB+rU,eA7BS,SA6BMx8X,EAAOywD,GACpBzwD,EAAMssX,aAAe77T,GAEvBgsU,gBAhCS,SAgCOz8X,EAAOywD,GACrBzwD,EAAMusX,cAAgB97T,GAExBisU,kBAnCS,SAmCS18X,EAAOywD,GACvBzwD,EAAMwsX,gBAAkB/7T,GAE1BksU,gBAtCS,SAsCO38X,EAAOywD,GACrBzwD,EAAMopX,cAAgB34T,IAG1Bzc,QAAS,CAGP4oV,gBAHO,YA0BL,OAvBmB,QAEL,IAAI1za,SAAQ,SAACC,EAASC,GAClC,IAAIyza,EAAe9jc,UAAUwjM,WAAW9jK,KAEpCs7F,EAAS,GACbA,EAAO02H,WAAW+W,SAAW,qBAC7BztI,EAAO02H,WAAWqyM,UAAY,sBAC9B/oU,EAAO02H,WAAWsyM,MAAQ,kBAC1BhpU,EAAO02H,WAAWuyM,SAAW,qBAC7BjpU,EAAO02H,WAAWwyM,SAAW,qBAC7BlpU,EAAO02H,WAAWyyM,SAAW,qBAC7BnpU,EAAO02H,WAAW0yM,MAAQ,0BAC1BppU,EAAO02H,WAAWzuC,MAAQ,wBACE,yBAAxBjoF,EAAO8oU,GACT1za,EAAQ,WAERA,EAAQ,aAETiE,OAAM,SAAAgO,GAEPhS,OAAOgS,OAMXgia,gBA9BO,YA8BsB,IAAXrvU,EAAW,EAAXA,OAEhBn0H,KAAS8gQ,WAAW1mN,IAAI,cAAc3e,MAAM,WAAW3F,KAAK,SAAS,SAAAsmM,GAG7C,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,MAErCwvH,EAAO,kBAAmBioG,EAASz3N,OAGnCwvH,EAAO,kBAAmB,OAShCsvU,cAjDO,YAiDoB,IAAXtvU,EAAW,EAAXA,OAIC,WAAX48T,MACF58T,EAAO,gBAAiB,WAGX,OAAX48T,MACF58T,EAAO,gBAAiB,QAS5BuvU,kBAnEO,aAoELvvU,EAD6B,EAAXA,QACX,kBAAkB,IAG3BwvU,aAvEO,WAuEkB9sU,GAAS,IAAnB1C,EAAmB,EAAnBA,OACbA,EAAO,kBAAkB,GACzBA,EAAO,kBAAmB0C,IAItB6uE,OA7EC,WA6E4B7uE,GAAS,8HAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAKjB+4T,EAAa,IACbiU,EAAU,IACVztP,EAAe,GAPuB,SAQpCn2M,KACHgyI,OACA6xT,2BAA2BhtU,EAAQm1D,MAAOn1D,EAAQ60E,UAClD77K,MAAK,SAAA0jB,GACJrzC,QAAQ6wE,IAAI,eAIZ/wE,KAASgyI,OAAO8xT,oBAAmB,SAAUvwZ,GAC3C,GAAY,MAARA,EAEF,GAAIA,EAAKu2K,cAAe,CAGtB82G,GAAGk1B,OAAOl+R,QACVu8D,EAAO,kBAAD,kBAA+B5gF,EAAK4gH,cAE1ChgC,EAAO,eAAe,GACtBA,EAAO,sBAAsB,GAG7B,IAAImkJ,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,IAEzCv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,GAAQr+O,OAAO,CAChD01Z,WAAY,gBAQd/uH,GAAGk1B,OAAOl+R,QACVu8D,EAAO,eAAe,GACtBA,EAAO,kBAAmB,iCAC1BA,EAAO,sBAAsB,QAI/BysM,GAAGk1B,OAAOl+R,cAMfpkC,OAAM,SAAUxC,GACf4ya,EAAU,IAEVztP,EAAenlL,EAAMqkD,QACrBn1E,QAAQ6wE,IAAI,WAAYolI,MAzDc,UA4D1Cj2M,QAAQ6wE,IAAI,WAAY6yX,GAET,KAAXA,EA9DsC,wBAgEpCG,EAAW,IACN/3Q,MAAQn1D,EAAQm1D,MACzB+3Q,EAASr4P,SAAW70E,EAAQ60E,SAlEY,UAuEnB90E,EAAS,yBAA0BmtU,GAvEhB,aA0ExB,OAHZC,EAvEoC,SA0EhBA,EAASxic,OAAS,GA1EF,wBA2EtCmub,EAAa,IA3EyB,UA8EhB/4T,EAAS,gBAAiBotU,GA9EV,eA8ElCC,EA9EkC,iBAgFhCrtU,EAAS,mBAAoBqtU,GAhFG,gCAsFtC9vU,EAAO,kBAAmBgiF,GAtFY,iCA8FnCw5O,GA9FmC,+CAkG5CqC,OA/KO,WA+KsBn7T,GAAS,IAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAGXstU,EAAYrtU,EAAQiuC,QAMxBo/R,GADAA,GADAA,GADAA,GADAA,EAAYA,EAAU55b,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,IAGd,MAAjBusH,EAAQm1D,OAAqC,MAApBn1D,EAAQ60E,UAEnC1rM,KACGgyI,OACAmyT,+BAA+BttU,EAAQm1D,MAAOn1D,EAAQ60E,UACtD77K,MAAK,SAAA9Y,GACJ/W,KACG8gQ,WACA1mN,IAAI,SACJ3e,MAAM1kB,EAAKw8B,KAAKha,KAChBxxB,IAAI,CACHwxB,IAAKxiB,EAAKw8B,KAAKha,IACfurI,QAASo/R,EACT/nc,KAAM06H,EAAQ16H,KACd6vL,MAAOn1D,EAAQm1D,MACf61O,OAAQhrS,EAAQgrS,OAChBkuB,YAAal5T,EAAQk5T,YACrBhxb,SAAU83H,EAAQ93H,SAClB+wb,eAAgBj5T,EAAQi5T,eACxBD,UAAWh5T,EAAQ06T,YACnB6S,eAAe,EACf1U,UAAW74T,EAAQkyF,SACnB6mO,SAAU/4T,EAAQ+4T,SAClBD,WAAY94T,EAAQ84T,WACpBwC,SAAUt7T,EAAQs7T,SAClBF,UAAWp7T,EAAQo7T,UACnBoS,YAAaxtU,EAAQs7T,SACrB4D,OAAQ,IACR3D,YAAav7T,EAAQu7T,YACrB4E,SAAU,EACVsN,kBAAmBztU,EAAQs7T,WAGjBp7a,EAAKw8B,KAEhBu/Y,cAAc,CACb3+R,YAAat9B,EAAQ16H,KACrB4sN,SAAUlyF,EAAQkyF,WAEnBl5L,MAAK,WACJ+mG,EAAS,oBACTzC,EAAO,eAAe,MAGvB3gG,OAAM,SAAAgO,GAEL2yF,EAAO,kBAAmB3yF,EAAI6zC,eAGnC7hD,OAAM,SAAAgO,GAEL2yF,EAAO,kBAAmB3yF,EAAI6zC,aAQtCkvX,cAtPO,WAsP6B1tU,GAAS,IAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAoBtB,GAAwB,MAApBC,EAAQ,GAAGm1D,OAAwC,MAAvBn1D,EAAQ,GAAG60E,SAuDzC,OApDA1rM,KACGgyI,OACAmyT,+BAA+BttU,EAAQ,GAAGm1D,MAAOn1D,EAAQ,GAAG60E,UAC5D77K,MAAK,SAAA9Y,GAEJ/W,KACG8gQ,WACA1mN,IAAI,SACJ3e,MAAM1kB,EAAKw8B,KAAKha,KAChBxxB,IAAI,CACHwxB,IAAKxiB,EAAKw8B,KAAKha,IACf64Z,YAAav7T,EAAQ,GAAGu7T,YACxBttR,QAASjuC,EAAQ,GAAGiuC,QACpB3oK,KAAM06H,EAAQ,GAAG16H,KACjB6vL,MAAOn1D,EAAQ,GAAGm1D,MAClB61O,OAAQhrS,EAAQ,GAAGgrS,OACnBkuB,YAAal5T,EAAQ,GAAGk5T,YACxBhxb,SAAU83H,EAAQ,GAAG93H,SACrB+wb,eAAgBj5T,EAAQ,GAAGi5T,eAC3BD,UAAWh5T,EAAQ,GAAGg5T,UACtBuU,cAAevtU,EAAQ,GAAGutU,cAC1B1U,UAAW74T,EAAQ,GAAG64T,UACtBE,SAAU/4T,EAAQ,GAAG+4T,SACrBD,WAAY94T,EAAQ,GAAG84T,WACvBwC,SAAUt7T,EAAQ,GAAGs7T,SACrBF,UAAWp7T,EAAQ,GAAGo7T,UACtBoS,YAAaxtU,EAAQ,GAAGs7T,SACxB4D,OAAQl/T,EAAQ,GAAGk/T,OACnBiB,SAAUngU,EAAQ,GAAGmgU,SACrBsN,kBAAmBztU,EAAQ,GAAGytU,oBAGpBvtb,EAAKw8B,KAEhBu/Y,cAAc,CACb3+R,YAAat9B,EAAQ,GAAG16H,KACxB4sN,SAAUlyF,EAAQ,GAAGkyF,WAEtBl5L,MAAK,WACJ+mG,EAAS,oBACTzC,EAAO,eAAe,GACtBj0H,QAAQ6wE,IAAI,kBAAmB8lD,EAAQ,GAAGm1D,UAE3Cx4J,OAAM,SAAAgO,GACLthC,QAAQ6wE,IAAIvvC,EAAI6zC,SAChB8+C,EAAO,kBAAmB3yF,EAAI6zC,eAGnC7hD,OAAM,SAAAgO,GACLthC,QAAQ6wE,IAAIvvC,EAAI6zC,SAChB8+C,EAAO,kBAAmB3yF,EAAI6zC,YAE3BwhD,EAAQ,GAAGt9F,IAElBr5B,QAAQ6wE,IAAI,wBAOhBiiX,QA1UO,YA0Ua,IAAV7+T,EAAU,EAAVA,OAERj0H,QAAQ6wE,IAAI,YACZ,IAAIunM,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,IAEzCv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,GAAQr+O,OAAO,CAChD01Z,WAAY,YAEd3vb,KACGgyI,OACAghT,UACAnja,MAAK,WACJskG,EAAO,eAAe,OAOtBqwU,aA7VC,WA6V0B3tU,GAAS,kHAArBD,EAAqB,EAArBA,SACnB12H,QAAQ6wE,IAAI,yBASZmzX,GADAA,GADAA,GADAA,GADAA,GAFIA,EAAYrtU,GAEMvsH,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,IAVK,UAchBssH,EAAS,mBAAoBstU,GAdb,QAiBrB,KAjBqB,QAqBtClkc,KAAS8gQ,WAAW1mN,IAAI,aACrB3e,MAAMyoa,GACNn8b,IAAI,CAEH08b,cAAe,MACdjxa,OAAM,SAAAgO,OA1B2B,+CA6C1Ckja,iBA1YO,YA0YsB,IAAVvwU,EAAU,EAAVA,OACb5gF,EAAOvzC,KAASgyI,OAAOs8E,YAE3B/6K,EACGoxZ,wBACA90a,MAAK,WAEJskG,EACE,kBADI,gDAEqC5gF,EAAKy4I,WAGjDx4J,OAAM,SAAUxC,U,UC9VV4za,GAnII,CACfx+X,MAAO,CACHqrX,UAAW,sDACXC,MAAO,KACPj+C,OAAQ,GACRg/C,gBAAiB,sDACjBI,WAAY,GAEhB39T,QAAS,CACLu8T,UAAW,SAAArrX,GAAK,OAAIA,EAAMqrX,WAC1BC,MAAO,SAAAtrX,GAAK,OAAIA,EAAMsrX,OACtBj+C,OAAQ,SAAArtU,GAAK,OAAIA,EAAMqtU,QACvBg/C,gBAAiB,SAAArsX,GAAK,OAAIA,EAAMqsX,iBAChCI,WAAY,SAAAzsX,GAAK,OAAIA,EAAMysX,aAE/B59T,UAAW,CACP4vU,cADO,SACOz+X,EAAOywD,GACjBzwD,EAAMysX,WAAah8T,GAGvBiuU,YALO,SAKK1+X,EAAOywD,GACfzwD,EAAMqrX,UAAY56T,GAEtBkuU,iBARO,SAQU3+X,EAAOywD,GACpBzwD,EAAMqsX,gBAAkB57T,GAE5BmuU,SAXO,SAWE5+X,EAAOywD,GACZzwD,EAAMsrX,MAAQ76T,GAElBouU,UAdO,SAcG7+X,EAAOywD,GACbzwD,EAAMqtU,OAAS58Q,IAIvBzc,QAAS,CACL8qV,gBADK,YAGD,IAFwB,IAAV/wU,EAAU,EAAVA,OACRu9T,EAAQptZ,MAAMjW,OAAOqja,MAClB91b,EAAI,EAAGA,EAAI81b,EAAMlwb,OAAQ5F,IAAK,CACnC,IAAIk2b,EAAOJ,EAAM91b,GACjB,GAAKk2b,EAAKjzZ,KAAKx0B,MAAM,SAArB,CAGA,IAAI86b,EAAY,IAAIC,WAChB3xD,EAAS,GACb0xD,EAAUpnc,iBAAiB,QAAQ,SAAAumC,GAC/B,IAAI+ga,EAAU/ga,EAAMjW,OACpBolX,EAAOhyY,KAAK4jc,EAAQxpb,WAExBs4G,EAAO,YAAas/Q,GACpB0xD,EAAUG,cAAcxT,MAIhCyT,SAnBK,WAmBgBC,GAAa,IAAvBrxU,EAAuB,EAAvBA,OACDu9T,EAAQptZ,MAAMjW,OAAOqja,MAE3Bv9T,EAAO,WAAYu9T,GACnB,IAAM+T,EAAa,IAAIL,WACnBtT,EAAOJ,EAAM,GACbI,EAAI,MAAY,SAChB2T,EAAWH,cAAcxT,GACzB2T,EAAW1nc,iBAAiB,QAAQ,WAChC,IAAIgga,EAAW0nC,EAAW5pb,OAC1Bs4G,EAAOqxU,EAAaznC,OAGxB5pS,EAAO,kBAAmB,uCAKlC0+T,WArCK,WAqCyB6S,GAAU,IAA3BvxU,EAA2B,EAA3BA,OAAQ/tD,EAAmB,EAAnBA,MAEjB,OAAO,IAAI92C,SAAQ,SAACC,EAASC,GACzB,IAAIsia,EAAO1rX,EAAMsrX,MAAM,GAInBiU,EAFa3lc,KAASmkR,UAAU/pO,IAAIsrZ,EAAW,IAAME,gBAAW,QAExCvsW,IAAIy4V,GAEhC6T,EAAW1ha,GAAG,iBAAiB,SAAUm4L,GAGrC,IAAIu6F,EAAYv6F,EAAS0oE,iBAAmB1oE,EAAS2oE,WAAc,IAEnE5wK,EAAO,gBAAiBwiM,MAEzB,SAAU3lS,GAGTxB,EAAOwB,MACR,WAGC20a,EAAWvpO,SAAShiL,IAAI6wP,iBAAiBp7Q,MAAK,SAAUg2a,GACpDt2a,EAAQs2a,aAKxBC,iBAlEK,WAkEwBjvU,GAAS,EAAnB1C,OACf,OAAO,IAAI7kG,SAAQ,SAACC,EAASC,GACzB,IACIu2a,EADSngc,KAAKskG,SACGnpG,SAAS,IAAIuI,OAAO,EAAG,GAExCq8b,EADa3lc,KAASmkR,UAAU/pO,IAAI,eAAiB,GAAjB,OAAoB2rZ,EAApB,SACZn7J,UAAU/zK,EAAS,WAAY,CACvD6gE,YAAa,cAGjBiuQ,EAAW1ha,GAAG,iBAAiB,SAAUm4L,GAGrC,IAAIu6F,EAAYv6F,EAAS0oE,iBAAmB1oE,EAAS2oE,WAAc,IACnE7kS,QAAQ6wE,IAAI,aAAe4lP,EAAW,aAEvC,SAAU3lS,GAETxB,EAAOwB,MACR,WAGC20a,EAAWvpO,SAAShiL,IAAI6wP,iBAAiBp7Q,MAAK,SAAUg2a,GACpDt2a,EAAQs2a,eC3HrBG,GAAchmc,KAAS8gQ,WAAW1mN,IAAI,aACtC6rZ,GAAcjmc,KAAS8gQ,WAAW1mN,IAAI,YACtC8rZ,GAAYlmc,KAAS8gQ,WAAW1mN,IAAI,UACpC+rZ,GAAYnmc,KAAS8gQ,WAAW1mN,IAAI,UACpCgsZ,GAAapmc,KAAS8gQ,WAAW1mN,IAAI,WACrCisZ,GAAmBrmc,KAAS8gQ,WAAW1mN,IAAI,iBAC3CksZ,GAAatmc,KAAS8gQ,WAAW1mN,IAAI,kBACrCmsZ,GAAmBvmc,KAAS8gQ,WAAW1mN,IAAI,iBAC3CosZ,GAAoBxmc,KAAS8gQ,WAAW1mN,IAAI,kBAC5CqsZ,GAAoBzmc,KAAS8gQ,WAAW1mN,IAAI,sBAC5CssZ,GAAY1mc,KAAS8gQ,WAAW1mN,IAAI,iBC41DhCusZ,I,OAh2DI,CAEjBvgY,MAAO,CACLuxX,WAAW,EACXI,gBAAiB,EACjBC,aAAc,EACdT,UAAU,EACVC,aAAa,EACbH,WAAW,EACXC,cAAc,EACdG,aAAc,KACdC,UAAW,KACXqC,mBAAoB,KACpBG,QAAS,KACTC,4BAA4B,EAC5Bx4U,UAAW,KACX8yU,SAAU,GACVwD,gBAAiB,GACjB5I,QAAS,GACTC,gBAAiB,GACjBC,cAAe,GACfiL,cAAe,GACfC,eAAgB,EAChBJ,cAAe,EACfD,gBAAiB,EACjBwM,QAAS,GACTxX,aAAc,IAEhBl6T,QAAS,CACP6iU,gBAAiB,SAAA3xX,GAAK,OAAIA,EAAM2xX,iBAChCJ,UAAW,SAAAvxX,GAAK,OAAIA,EAAMuxX,WAC1BK,aAAc,SAAA5xX,GAAK,OAAIA,EAAM4xX,cAC7BT,SAAU,SAAAnxX,GAAK,OAAIA,EAAMmxX,UACzBC,YAAa,SAAApxX,GAAK,OAAIA,EAAMoxX,aAC5BH,UAAW,SAAAjxX,GAAK,OAAIA,EAAMixX,WAC1BC,aAAc,SAAAlxX,GAAK,OAAIA,EAAMkxX,cAC7BG,aAAc,SAAArxX,GAAK,OAAIA,EAAMqxX,cAC7BC,UAAW,SAAAtxX,GAAK,OAAIA,EAAMsxX,WAC1BqC,mBAAoB,SAAA3zX,GAAK,OAAIA,EAAM2zX,oBACnCG,QAAS,SAAA9zX,GAAK,OAAIA,EAAM8zX,SACxBC,2BAA4B,SAAA/zX,GAAK,OAAIA,EAAM+zX,4BAC3Cx4U,UAAW,SAAAv7C,GAAK,OAAIA,EAAMu7C,WAC1B8yU,SAAU,SAAAruX,GAAK,OAAIA,EAAMquX,UACzBwD,gBAAiB,SAAA7xX,GAAK,OAAIA,EAAM6xX,iBAChC5I,QAAS,SAAAjpX,GAAK,OAAIA,EAAMipX,SACxBuX,QAAS,SAAAxgY,GAAK,OAAIA,EAAMwgY,SACxBtX,gBAAiB,SAAAlpX,GAAK,OAAIA,EAAMkpX,iBAChCC,cAAe,SAAAnpX,GAAK,OAAIA,EAAMmpX,eAC9BiL,cAAe,SAAAp0X,GAAK,OAAIA,EAAMo0X,eAC9BC,eAAgB,SAAAr0X,GAAK,OAAIA,EAAMq0X,gBAC/BJ,cAAe,SAAAj0X,GAAK,OAAIA,EAAMi0X,eAC9BD,gBAAiB,SAAAh0X,GAAK,OAAIA,EAAMg0X,iBAChChL,aAAc,SAAAhpX,GAAK,OAAIA,EAAMgpX,eAI/Bn6T,UAAW,CAET4xU,aAFS,SAEIzgY,EAAOywD,GAClBzwD,EAAMuxX,UAAY9gU,GAGpBiwU,gBANS,SAMO1gY,EAAOywD,GACrBzwD,EAAM4xX,aAAenhU,GAGvBkwU,mBAVS,SAUU3gY,EAAOywD,GACxBzwD,EAAM2xX,gBAAkBlhU,GAG1BmwU,WAdS,SAcE5gY,EAAOywD,GAChBzwD,EAAMmxX,SAAW1gU,GAEnBowU,cAjBS,SAiBK7gY,EAAOywD,GACnBzwD,EAAMoxX,YAAc3gU,GAEtBqwU,YApBS,SAoBG9gY,EAAOywD,GACjBzwD,EAAMixX,UAAYxgU,GAEpBswU,eAvBS,SAuBM/gY,EAAOywD,GACpBzwD,EAAMkxX,aAAezgU,GAEvBuwU,eA1BS,SA0BMhhY,EAAOywD,GACpBzwD,EAAMqxX,aAAe5gU,GAEvBwwU,YA7BS,SA6BGjhY,EAAOywD,GAEjBzwD,EAAMsxX,UAAY7gU,GAEpBywU,qBAjCS,SAiCYlhY,EAAOywD,GAE1BzwD,EAAM2zX,mBAAqBljU,GAE7B0wU,UArCS,SAqCCnhY,EAAOywD,GACfzwD,EAAM8zX,QAAUrjU,GAElB2wU,4BAxCS,SAwCmBphY,EAAOywD,GACjCzwD,EAAM+zX,2BAA6BtjU,GAErC4wU,aA3CS,SA2CIrhY,EAAOywD,GAClBzwD,EAAMu7C,UAAYkV,GAGpB6wU,kBA/CS,SA+CSthY,EAAOywD,GACvBzwD,EAAM6xX,gBAAkBphU,GAE1B8wU,YAlDS,SAkDGvhY,EAAOywD,GACjBzwD,EAAMquX,SAAW59T,GAEnB+wU,WArDS,SAqDExhY,EAAOywD,GAChBzwD,EAAMipX,QAAUx4T,GAElBgxU,WAxDS,SAwDEzhY,EAAOywD,GAChBzwD,EAAMwgY,QAAU/vU,GAElBixU,kBA3DS,SA2DS1hY,EAAOywD,GACvBzwD,EAAMkpX,gBAAkBz4T,GAE1BkxU,gBA9DS,SA8DO3hY,EAAOywD,GACrBzwD,EAAMmpX,cAAgB14T,GAExBmxU,gBAjES,SAiEO5hY,EAAOywD,GACrBzwD,EAAMo0X,cAAgB3jU,GAExBoxU,iBApES,SAoEQ7hY,EAAOywD,GAEtBzwD,EAAMq0X,eAAiB5jU,GAEzBqxU,gBAxES,SAwEO9hY,EAAOywD,GAErBzwD,EAAMi0X,cAAgBxjU,GAExBsxU,iBA5ES,SA4EQ/hY,EAAOywD,GACtBzwD,EAAMg0X,gBAAkBvjU,GAE1BuxU,eA/ES,SA+EMhiY,EAAOywD,GACpBzwD,EAAMgpX,aAAev4T,IAGzBzc,SAAO,IAGLiuV,iBAHO,SAAF,EAGwBxxU,GAAS,EAAnB1C,OACjBj0H,QAAQ6wE,IAAI,gBAAiBt9C,KAAKC,UAAUmjG,KAYxCyxU,uBAhBC,SAAF,EAgBsCzxU,GAAS,oHAArBD,SAEzB2xU,EAAa,GACbj0X,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACpE,IAAIwqO,EAAUxqO,EAASz3N,MAIvB,IAAK,IAAIg6b,KAAUiI,EAGjB,GAAIA,EAAQjI,GAAQ3yQ,QAAUn1D,EAAQm1D,MAAO,CAG3C,IAAIw8Q,EAAW,GACA5B,EAAQjI,GAAQxyC,MAClB17T,SAAS,yFACpB+3W,EAASpW,aAAc,EAGvBoW,EAASpW,aAAc,EAGzBoW,EAASjva,IAAMqta,EAAQjI,GAAQpla,IAC7Biva,EAAS98P,SAAW70E,EAAQ60E,SAC5B88P,EAAS1jS,QAAU8hS,EAAQjI,GAAQ75R,QACnC0jS,EAASrsc,KAAOyqc,EAAQjI,GAAQxic,KAChCqsc,EAASx8Q,MAAQ46Q,EAAQjI,GAAQ3yQ,MACjCw8Q,EAAS3mC,OAAS+kC,EAAQjI,GAAQ98B,OAClC2mC,EAASzY,YAAc6W,EAAQjI,GAAQ5O,YACvCyY,EAASzpc,SAAW6nc,EAAQjI,GAAQ5/b,SACpCypc,EAAS1Y,eAAiB8W,EAAQjI,GAAQ7O,eAC1C0Y,EAAS3Y,UAAY+W,EAAQjI,GAAQ9O,UACrC2Y,EAASpE,eAAgB,EACzBoE,EAAS9Y,UAAYkX,EAAQjI,GAAQxyC,MACrCq8C,EAAS5Y,SAAWgX,EAAQjI,GAAQ/O,SACpC4Y,EAAS7Y,WAAaiX,EAAQjI,GAAQhP,WACtC6Y,EAASrW,SAAWyU,EAAQjI,GAAQxM,SACpCqW,EAASvW,UAAY2U,EAAQjI,GAAQ1M,UACrCuW,EAASnE,YAAcuC,EAAQjI,GAAQxM,SACvCqW,EAASzS,OAAS,IAClByS,EAASxR,SAAW,EACpBwR,EAASlE,kBAAoBsC,EAAQjI,GAAQ2F,kBAI/CiE,EAAW9mc,KAAK+mc,GAEhB,MAIJj5a,EAAQg5a,SArDsC,kBAyD3Cj0X,GAzD2C,8CA8D9Cm0X,kBA9EC,SAAF,EA8EiC5xU,GAAS,0HAArBD,EAAqB,EAArBA,SAEpB8xU,EAAU1oc,KAASgyI,OAAOs8E,YAAY/0L,IACtCova,EAAW9xU,EAAQ+xU,QACnBC,EAAShyU,EAAQ4+T,OAAOl8Z,IACds9F,EAAQ4+T,OAAOiF,QACzBjL,EAAiB,GANwB,SAOvB74T,EAAS,sBAAuBC,GAPT,UAQ5B,OADbiyU,EAPyC,QASvCplc,MAAMolc,GACRA,EAAY,EAEZA,IAGFA,EAAY,EAGZrZ,EADiB,MAAf54T,EAAQu/T,IACO,QAEAv/T,EAAQlwH,IApBkB,UAiCrB,MAAlB8ob,GAAoC,MAAVoZ,EAjCa,kCAkCnCpjX,GAAehqD,MAAMota,GACxBpta,MAAMkta,GACN1ua,OAAO,CACNs1Z,cAAeuZ,EACfrZ,eAAgBA,EAChBl2Z,IAAKmva,IAvCgC,yHAoD/CK,qBAlIO,SAAF,EAkI4BlyU,GAAS,IAAnB1C,EAAmB,EAAnBA,OAEjB60U,EAAUnyU,EACd72H,KAAS8gQ,WAAW1mN,IAAI,aAAa3e,MAAMuta,GAASlza,KAAK,SAAS,SAAAsmM,GAE1C,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,MAErCwvH,EAAO,uBAAwBioG,EAASz3N,MAAMskc,UAG9C90U,EAAO,uBAAwB,UAMrC+0U,mBAlJO,SAAF,EAkJ0BryU,GAAS,IAAnB1C,EAAmB,EAAnBA,OAEf60U,EAAUnyU,EAEd72H,KAAS8gQ,WAAW1mN,IAAI,UAAU3e,MAAMuta,GAASlza,KAAK,SAAS,SAAAsmM,GAGvC,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,MAErCwvH,EAAO,+BAA+B,GAGtCA,EAAO,+BAA+B,OAY5Cg1U,kBA1KO,SAAF,EA0K2BtyU,GAAS,EAArBD,SAAqB,IAEnCy/T,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAEvCyva,GADWnyU,EAAQ+xU,QACT/xU,EAAQt9F,KACRs9F,EAAQ6jU,QAIH16b,KAASgyI,OAAOs8E,YACnC7oI,GAAahqD,MAAMuta,GAASvta,MAAM46Z,GAAUpyZ,GAAG,SAAS,SAAAm4L,GACtD,IAAI2gK,EAAW3gK,EAASz3N,MAGxBsrB,EAAE5Y,QAAQ0lX,GAAU,SAAC1nT,EAASl4E,GAG5B,IACEsoF,GAAahqD,MAAMuta,GAChBvta,MAAM46Z,GACN56Z,MAAMt+B,GACN88B,OAAO,CACNszD,KAAM,MAEV,MAAOv8D,GACP9wB,QAAQ6wE,IAAI//C,WAgBdo4a,kBAnNC,SAAF,EAmNwBvyU,GAAS,0HAEhCw/T,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCmha,EAAU7jU,EACd32H,QAAQ6wE,IAAI,OAAQ2pX,EAASrE,EAAUx/T,GAJH,kBAM5BpxC,GAAehqD,MAAM46Z,GACxB56Z,MAAMi/Z,GACNzga,OAAO,CACNs1Z,cAAe,IATe,uDAYlCrvb,QAAQ6wE,IAAI,KAAMsE,SAZgB,4DAsBtCg0X,oBAzOO,SAAF,EAyOoBxyU,GAiBvB,OAjBgC,QAElB,IAAIvnG,SAAQ,SAACC,EAASC,GAClC,IAAIq5a,EAAShyU,EAAQ4+T,OAAOl8Z,IACxBqva,EAAU/xU,EAAQ+xU,QACtBnjX,GAAehqD,MAAMota,GAAQpta,MAAMmta,GAChC9ya,KAAK,SAAS,SAAAsmM,GACTA,EAASz3N,MACX4qB,EAAQ6sM,EAASz3N,MAAM4qb,eAEvBhga,EAAQ,QAGXiE,OAAM,SAAAgO,GACLhS,EAAOgS,UAQf8na,qBA/PO,SAAF,EA+P8BzyU,GAAS,EAArBD,SACrB,IACEnxC,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9C93B,KAAK,CACJ83B,IAAKs9F,EAAQ4+T,OAAOl8Z,IACpBg2Z,cAAe,IACfE,eAAgB,MAGpBhqW,GAAehqD,MAAMo7F,EAAQ4+T,OAAOl8Z,KACjC93B,KAAK,CACJ8tb,cAAe,IACfE,eAAgB,IAChBl2Z,IAAKv5B,KAASgyI,OAAOs8E,YAAY/0L,MAGrC,MAAOvI,GACPxB,OAAOgS,KAIT,MADa,UAMf+na,mBAzRO,SAAF,EAyR4B1yU,GAAS,EAArBD,SAEnB,IACE,IAAI4yU,EAAU/jX,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAK93B,OAAOtE,IAC3EsoF,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKkC,MAAM+ta,GACzDvva,OAAO,CACNV,IAAKs9F,EAAQ4+T,OAAOl8Z,IACpBg2Z,cAAe,IACfE,eAAgB,MAGpBhqW,GAAehqD,MAAMo7F,EAAQ4+T,OAAOl8Z,KAAKkC,MAAM+ta,GAC5Cvva,OAAO,CACNs1Z,cAAe,IACfE,eAAgB,IAChBl2Z,IAAKv5B,KAASgyI,OAAOs8E,YAAY/0L,MAIrC,MAAOvI,GACP9wB,QAAQ6wE,IAAI//C,GAId,OAAOw4a,GAGHC,sBApTC,SAAF,EAoT4B5yU,GAAS,0HACpC6xU,EAAU1oc,KAASgyI,OAAOs8E,YAAY/0L,IACtCyva,EAAUnyU,EAAQt9F,IACRs9F,EAAQ6jU,QAHkB,kBAMhCj1W,GAAchqD,MAAMita,GACvBjta,MAAMuta,GACN/ua,OAAO,CACNyva,YAAa1pc,KAASgyI,OAAOs8E,YAAYn6D,YACzCw1S,iBAAkB3pc,KAASgyI,OAAOs8E,YAAYvF,SAC9Ck3K,cAAe,IACfpsI,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAZP,uDAgBtCrmQ,QAAQ6wE,IAAI,KAAMsE,SAhBoB,4DAqBpCu0X,oBAzUC,SAAF,EAyU0B/yU,GAAS,0HAElCmyU,EAAUnyU,EAAQt9F,IAClB88Z,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAHL,kBAM9BksD,GAAchqD,MAAM46Z,GACvB56Z,MAAMuta,GACN/ua,OAAO,CACNyva,YAAa1pc,KAASgyI,OAAOs8E,YAAYn6D,YACzCw1S,iBAAkB3pc,KAASgyI,OAAOs8E,YAAYvF,SAC9Ck3K,cAAe,IACfpsI,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAZT,uDAgBpCrmQ,QAAQ6wE,IAAI,KAAMsE,SAhBkB,4DAqBxCw0X,kBA9VO,SAAF,EA8VyBhzU,GAAS,IAAnB1C,EAAmB,EAAnBA,OAEd2lU,EAAajjU,EAAQt9F,IAErBuwa,EAAe9pc,KAASgyI,OAAOs8E,YAAY/0L,IAC/CksD,GAAchqD,MAAMo7F,EAAQt9F,KAAKkC,MAAMqua,GAAc7la,GAAG,SAAS,SAAAm4L,GAC3D09N,GAAcjjU,EAAQt9F,MACxB46F,EAAO,YAAa0C,EAAQt9F,KACxB6iM,EAASz3N,OACyB,KAAhCy3N,EAASz3N,MAAMs7X,eAAwB65D,GAAcjjU,EAAQt9F,IAC/D46F,EAAO,mBAAoB,KAQ7BA,EAAO,mBAAoB,UAQnC41U,WAxXO,SAAF,EAwXWlzU,GAgBd,OAhBuB,QACT,IAAIvnG,SAAQ,SAACC,EAASC,GAClC,IAAIq5a,EAAShyU,EAAQ4+T,OAAOl8Z,IAC5BksD,GAAehqD,MAAMota,GAAQj8N,aAAa,OACvCQ,QAAQptO,KAASgyI,OAAOs8E,YAAY/0L,KACpCzD,KAAK,SAAS,SAAAsmM,GACb,IAAIwsO,EACJ,IAAK,IAAIzrc,KAAOi/N,EAASz3N,MAAOikc,EAAUzrc,EAC1CoyB,EAAQq5a,MAGTp1a,OAAM,SAAAgO,GACLhS,EAAOgS,UAWfwoa,qBA/YO,SAAF,EA+YqBnzU,GAgBxB,OAhBiC,QAEnB,IAAIvnG,SAAQ,SAACC,EAASC,GAElC,IAAIq5a,EAAShyU,EAAQ4+T,OAAOl8Z,IACxBiwa,EAAU3yU,EAAQ4+T,OAAO+T,QAC7B/jX,GAAoBhqD,MAAMota,GAAQpta,MAAM+ta,GAAS58N,aAAa,OAC3DQ,QAAQptO,KAASgyI,OAAOs8E,YAAY/0L,KACpC0K,GAAG,SAAS,SAAAm4L,GACX7sM,EAAQ6sM,EAASmzN,kBAElB/7Z,OAAM,SAAAgO,GACLhS,EAAOgS,UAQTyoa,gBAnaC,SAAF,EAmauCpzU,GAAS,6GAA7BD,SAAUzC,EAAmB,EAAnBA,OAC5B21U,EAAe9pc,KAASgyI,OAAOs8E,YACnC7oI,GAAahqD,MAAMqua,EAAavwa,KAAKkC,MAAMo7F,EAAQt9F,KAAK0K,GAAG,SAAS,SAAAm4L,GAClE,IAAI8tO,EAAY9tO,EAASz3N,MAGzB8gF,GAAahqD,MAAMo7F,EAAQt9F,KAAKkC,MAAMqua,EAAavwa,KAAK0K,GAAG,SAAS,SAAAm4L,GAClE,IAAI+tO,EAAY/tO,EAASz3N,MAErBo4X,EAAW,GACfA,EAAW9sW,EAAEg4F,MAAMiiV,EAAWC,GAC9BptE,EAAW9sW,EAAE00F,OAAOo4Q,GAAU,SAAUqtE,GACtC,OAAO,IAAIzqc,KAAKyqc,EAAQv2M,cAG1B5jO,EAAE5Y,QAAQ0lX,GAAU,SAAA1nT,GAClBA,EAAQx2C,KAAOw2C,EAAQg1X,QAAUP,EAAavwa,IAAM,OAAS,WAC7D87C,EAAQl5E,KAAOk5E,EAAQg1X,QAAUP,EAAavwa,IAAMuwa,EAAa31S,YAAct9B,EAAQ16H,KACvFk5E,EAAQvnE,KAAOotH,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,gBAChDqzE,EAAQomX,UAAYvgU,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,OACjDqzE,EAAQg1X,QAAUP,EAAavwa,IACjC87C,EAAQ8gB,OAAS,IAEjB9gB,EAAQ8gB,OAAS,OAMrB,IAAIm0W,EAAkBr6a,EAAEs0F,QAAQw4Q,EAAU,QAC1C5oQ,EAAO,kBAAmBm2U,GAC1Bn2U,EAAO,YAAa0C,EAAQt9F,WA/BmB,8CA4CrDgxa,gBA/cO,SAAF,GA+cuB,IAAVp2U,EAAU,EAAVA,OACZq2U,EAAmBxqc,KAASgyI,OAAOs8E,YAAY/0L,IACnDksD,GAAehqD,MAAM+ua,GAAkBvma,GAAG,SAAS,SAAAm4L,GACjD,IAAIquO,EAAe,EACf1tE,EAAW3gK,EAASz3N,MACxBsrB,EAAE5Y,QAAQ0lX,GAAU,SAAA1nT,GACdA,EAAQk6W,cAAgB,IAC1Bkb,GAA8B9vZ,OAAO06B,EAAQk6W,mBAKjDp7T,EAAO,kBAAmBs2U,OAQ9BC,eAneO,SAAF,EAmewB7zU,GAAS,IAArBD,EAAqB,EAArBA,SAiBf,OAhBc,IAAItnG,SAAQ,SAACC,EAASC,GAClCi2D,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9C93B,KAAK,CAAE83B,IAAKs9F,EAAQt9F,MACpB1J,MAAK,WACJ41D,GAAehqD,MAAMo7F,EAAQt9F,KAC1B93B,KAAK,CAAE83B,IAAKv5B,KAASgyI,OAAOs8E,YAAY/0L,SAE5C1J,MAAK,WACJ+mG,EAAS,gBAAiBC,GAAShnG,MAAK,WACtCN,GAAQ,SAGXiE,OAAM,SAAAgO,GACLhS,EAAOgS,UAKfmpa,cAtfO,SAAF,EAsfc9zU,GAsBjB,OAtB0B,QACZ,IAAIvnG,SAAQ,SAACC,EAASC,GAClCi2D,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9CqzM,aAAa,UACbQ,QAAQv2G,EAAQt9F,KAChBzD,KAAK,SAAS,SAAAsmM,GACb,IAAIwsO,EACJ,IAAK,IAAIzrc,KAAOi/N,EAASz3N,MAAOikc,EAAUzrc,EAC1CsoF,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9CkC,MAAMmta,GACN10a,SACArE,MAAK,WACJN,GAAQ,MAETiE,OAAM,SAAAgO,GACLhS,EAAOgS,SAGVhO,OAAM,SAAAgO,GACPhS,EAAOgS,UAKTopa,cA9gBC,SAAF,GA8gBqC,oHAApBz2U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,SACtBA,EAAS,eADa,OACpCw1F,EADoC,OAExC3mI,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9C0K,GAAG,SAAS,SAAAm4L,GAEX,IAAIyuO,EAAiB56a,EAAE7uB,IAAIg7N,EAASz3N,MAAO,UACvCmmc,EAAc,GAClB76a,EAAE5Y,QAAQwzb,GAAgB,SAAAtxa,GACxB,IAAIga,EAAOtjB,EAAEm0F,KAAKgoG,EAAO,CAAC,MAAO7yL,IACjCuxa,EAAYrpc,KAAK8xC,MAEnB4gF,EAAO,oBAAqB22U,MAXQ,8CAe1CC,eA7hBO,SAAF,GA6hBsB,IAAV52U,EAAU,EAAVA,OAEfn0H,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAChE0K,GAAG,SAAS,SAAAm4L,GACXjoG,EAAO,iBAAkBioG,EAASz3N,WAGlCqmc,aApiBC,SAAF,EAoiBoCn0U,GAAS,oHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAAqB,SAE9BA,EAAS,eAFqB,OAE5Cw1F,EAF4C,OAIhD3mI,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9C0K,GAAG,SAAS,SAAAm4L,GACX,IAAIizN,EAAUjzN,EAASz3N,MACnBmmc,EAAc,GAClB76a,EAAE5Y,QAAQg4a,GAAS,SAACP,EAAK3xb,GACvB,IAAIo2C,EAAOtjB,EAAEm0F,KAAKgoG,EAAO,CAAC,MAAO0iO,EAAIv1Z,MAErC,IACe,MAARga,GAA0BxvC,MAARwvC,EAEK,MAAtBu7Y,EAAIW,iBACNl8Y,EAAKk8Y,eAAiBX,EAAIW,eAC1Bl8Y,EAAKg8Y,cAAgBT,EAAIS,eAId,MAARh8Y,GAA0BxvC,MAARwvC,IACrBA,EAAKk8Y,eAAiB,GACtBl8Y,EAAKg8Y,cAAgB,IAGZ,MAARh8Y,GAA0BxvC,MAARwvC,IACrBA,EAAKmnZ,QAAUv9b,EACf2tc,EAAYrpc,KAAK8xC,IAEnB,MAAOviB,QAIXmjG,EAAO,aAAc22U,MAjCuB,8CAqC5CG,eAzkBC,SAAF,GAykB6B,yGAAX92U,EAAW,EAAXA,OAErB1uC,GAAehqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC9C0K,GAAG,SAAS,SAAAm4L,GACX,GAAsB,MAAlBA,EAASz3N,MAAe,CAC1B,IAAI0qb,EAAUjzN,EAASz3N,MACnBmmc,EAAc,GAClB76a,EAAE5Y,QAAQg4a,GAAS,SAACP,EAAK3xb,GACZ,MAAP2xb,GAAsB/qb,MAAP+qb,GAEjBrpW,GAAahqD,MAAMqzZ,EAAIv1Z,KAAKqzM,aAAa,OACtC92M,KAAK,SAAS,SAAAsmM,GACb,GAAI0yN,EAAIv1Z,KAAOv5B,KAASgyI,OAAOs8E,YAAY/0L,IAAK,CAC9C,IAAIga,EAAO6oL,EAASz3N,MAEP,MAAR4uC,GAA0BxvC,MAARwvC,IAEK,MAAtBu7Y,EAAIW,gBACNl8Y,EAAKk8Y,eAAiBX,EAAIW,eAC1Bl8Y,EAAKg8Y,cAAgBT,EAAIS,eAIZ,MAARh8Y,GAA0BxvC,MAARwvC,IACrBA,EAAKk8Y,eAAiB,GACtBl8Y,EAAKg8Y,cAAgB,KAK3Bh8Y,EAAKmnZ,QAAUv9b,EACf2tc,EAAYrpc,KAAK8xC,OAIpB/f,OAAM,SAAAgO,GACLhS,OAAOgS,SAMf2yF,EAAO,aAAc22U,OA1CK,8CAoD5BtP,YA7nBC,SAAF,EA6nB2B3kU,GAAS,0HAArBD,EAAqB,EAArBA,SAAqB,SAEnBA,EAAS,aAAcC,GAFJ,cAEnC+xU,EAFmC,OAGvC/xU,EAAQ4+T,OAAO+T,QAAUZ,GACrBsC,EAAWr0U,GACN+xU,QAAUA,EALoB,SAMfhyU,EAAS,mBAAoBC,GANd,mCAQrCD,EAAS,oBAAqBs0U,GARO,yCAUdt0U,EAAS,qBAAsBs0U,GAVjB,eAUjCC,EAViC,OAWrCt0U,EAAQ4+T,OAAO+T,QAAU2B,EACzBD,EAAStC,QAAUuC,EACnBD,EAASxQ,QAAUyQ,EACnBt0U,EAAQ4+T,OAAOiF,QAAUyQ,EAdY,UAe/Bv0U,EAAS,oBAAqBs0U,GAfC,mCAkB/BzlX,GAAahqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClDkC,MAAMo7F,EAAQ4+T,OAAOl8Z,KACrB93B,KAAK,CACJ4oc,OAAQrqc,KAASgyI,OAAOs8E,YAAY/0L,IACpCgB,KAAMs8F,EAAQlwH,IACdg4W,MAAO9nP,EAAQu/T,IACf7oW,KAAM,IACNsmK,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAzBR,QA2BjC6kM,EAAUprc,KAASgyI,OAAOs8E,YAAY/0L,IAC1Cv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWgxZ,GAASnxa,OAAO,CACjD01Z,WAAY,WAeVr3K,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,IAC/Bv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,GACzCr+O,OAAO,CACT01Z,WAAY,SACZwC,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,YAhDL,mDAoDrCrmQ,QAAQ6wE,IAAI,KAAMsE,SApDmB,8DA0DzCg2X,iBAvrBO,SAAF,EAurBiBtR,GAAoB,QAExC,IAGI1kX,EAAU,CACZ6+N,OAAQ,uCACRo3J,SAAU,CAAE1/O,GAHZ,+BAFsB5rN,KAASgyI,OAAOs8E,YAAYn6D,aAMlDo3S,mBAAoB,CAACxR,IAQnBz6Z,EAAU,CACZ2yG,KAAM,gBACNC,KAAM,IACNl+F,KAAM,wBACN7X,OAAQ,OACRw6D,QATY,CACZ,eAAgB,oCAYd6/J,EADQ9yJ,EAAQ,KACJ5f,QAAQxkD,GAAS,SAAU/9B,GACzCA,EAAI0iC,GAAG,QAAQ,SAAUoxC,UAM3BmhL,EAAIvyN,GAAG,SAAS,SAAUptB,GACxB3W,QAAQ6wE,IAAI,UACZ7wE,QAAQ6wE,IAAIl6D,MAGd2/O,EAAI3qK,MAAMp4D,KAAKC,UAAU2hD,IACzBmhL,EAAIxxM,OAMNwmZ,iBAnuBO,SAAF,EAmuBiB30U,GAgBpB,OAhB6B,QACf,IAAIvnG,SAAQ,SAACC,EAASC,GAClC,IAAIq5a,EAAShyU,EAAQ4+T,OAAOl8Z,IAC5BksD,GAAehqD,MAAMota,GAAQj8N,aAAa,OACvCQ,QAAQptO,KAASgyI,OAAOs8E,YAAY/0L,KACpCzD,KAAK,SAAS,SAAAsmM,GACb,IAAIwsO,EAAU,KACd,IAAK,IAAIzrc,KAAOi/N,EAASz3N,MAAOikc,EAAUzrc,EAC1CoyB,EAAQq5a,MAGTp1a,OAAM,SAAAgO,GACLhS,EAAOgS,UASfiqa,iBAxvBO,SAAF,EAwvBiB50U,GAoBpB,OApB6B,QAEf,IAAIvnG,SAAQ,SAACC,EAASC,GAElCxvB,KAAS8gQ,WAAW1mN,IAAI,YAAY3e,MAAMo7F,GAAS5yF,GAAG,SAAS,SAAAm4L,GAGvC,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,MAErC4qB,EAAQ,MAGRA,EAAQ,YAYhBm8a,gBAhxBO,SAAF,EAgxBgB70U,GAmBnB,OAnB4B,QAEd,IAAIvnG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACpE,IAAIwqO,EAAUxqO,EAASz3N,MAEnB4jc,EAAa,GACjBt4a,EAAE5Y,QAAQuvb,GAAS,SAAAjI,GACbA,EAAO75R,SAAWjuC,GAEpB0xU,EAAW9mc,KAAKk9b,MAKpBpva,EAAQg5a,UAQRoD,YAvyBC,SAAF,GAuyBmC,kHAApBx3U,EAAoB,EAApBA,OAAoB,EAAZyC,SAEZ,GAEVtiD,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACpE,IAAIwqO,EAAUxqO,EAASz3N,MACnB4jc,EAAa,GACjBt4a,EAAE5Y,QAAQuvb,GAAS,SAAAjI,GAEb3+b,KAASgyI,OAAOs8E,YAAY/0L,MAAQola,EAAOpla,KAC7Cgva,EAAW9mc,KAAKk9b,MAIpBxqU,EAAO,cAAeo0U,GAEtBh5a,EAAQg5a,SAjB0B,kBAoB/Bj0X,GApB+B,8CAyBxCs3X,cAh0BO,SAAF,EAg0Bc/0U,GAWjB,OAX0B,QAGZ,IAAIvnG,SAAQ,SAACC,EAASC,GAClC,IAAIs6a,EAAe9pc,KAASgyI,OAAOs8E,YAEnC7oI,GAAahqD,MAAMqua,EAAavwa,KAAKkC,MAAMo7F,EAAQt9F,KAAK0K,GAAG,SAAS,SAAAm4L,GAElE7sM,EAAQ6sM,EAASz3N,cAQvBknc,oBAh1BO,SAAF,EAg1BoBh1U,GAQvB,OARgC,QAElB,IAAIvnG,SAAQ,SAACC,EAASC,GAClC,IAAIs6a,EAAe9pc,KAASgyI,OAAOs8E,YACnC7oI,GAAahqD,MAAMo7F,EAAQt9F,KAAKkC,MAAMqua,EAAavwa,KAAK0K,GAAG,SAAS,SAAAm4L,GAClE7sM,EAAQ6sM,EAASz3N,cAMvBmnc,gBA31BO,SAAF,GA21BuB,EAAV33U,OAShB,OARc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAGpF7sM,EAAQ6sM,EAASz3N,MAAMmgK,gBAO7BinS,sBAv2BO,SAAF,EAu2B6Bl1U,GAAS,IAAnB1C,EAAmB,EAAnBA,OAClBkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAC3C,GAAuB,MAAnBs9F,EAAQ6jU,QAAZ,CAIA,IAAIA,EAAU7jU,EAAQ6jU,QAYtB,OAXc,IAAIpra,SAAQ,SAACC,EAASC,GAClCi2D,GAAehqD,MAAM46Z,GAAU56Z,MAAMi/Z,GAClC5ka,KAAK,SAAS,SAAAsmM,GACTA,EAASz3N,OACX4qB,EAAQ6sM,EAASz3N,MAAM4qb,kBAG1B/7Z,OAAM,SAAAgO,GACLhS,EAAOgS,SAZX2yF,EAAO,kBAAmB,iCAkBxB4mU,UA53BC,SAAF,EA43BiClkU,GAAS,sHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAAqB,SACtBA,EAAS,wBAAyBC,GADZ,UAE3B,MAF2B,uBAG3C1C,EAAO,kBAAmB,gCAHiB,8BAKvCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCyva,EAAUnyU,EAAQt9F,IANqB,UAOrCksD,GAAoBhqD,MAAM46Z,GAAU56Z,MAAMuta,GAC7C/ua,OAAO,CACNy2R,KAAM,MATiC,QAW3Cv8L,EAAO,kBAAmB,yBAXiB,+CAiBzC2mU,YA74BC,SAAF,EA64BmCjkU,GAAS,sHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAAqB,SAExBA,EAAS,wBAAyBC,GAFV,UAI7B,MAJ6B,uBAK7C1C,EAAO,kBAAmB,gCALmB,8BAOzCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCyva,EAAUnyU,EAAQt9F,IACRs9F,EAAQ6jU,QATuB,UAWvCj1W,GAAoBhqD,MAAM46Z,GAAU56Z,MAAMuta,GAC7C/ua,OAAO,CACNy2R,KAAM,MAbmC,QAe7Cv8L,EAAO,kBAAmB,2BAfmB,+CAqB3C63U,iBAl6BC,SAAF,EAk6B8Bn1U,GAAS,kHAAnB1C,EAAmB,EAAnBA,OAEA,MAAnB0C,EAAQ6jU,QAF8B,sBAG7B,IACXvmU,EAAO,kBADI,KAH6B,kBAG7B,KAH6B,cAOtCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCyva,EAAUnyU,EAAQt9F,IAElB+6C,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCi2D,GAAoBhqD,MAAM46Z,GAAU56Z,MAAMuta,GACvClza,KAAK,SAAS,SAAAsmM,GACTA,EAASz3N,OACXwvH,EAAO,kBAAmBioG,EAASz3N,MAAM+rT,MAG3CnhS,EAAQ6sM,EAASz3N,UAElB6uB,OAAM,SAAAgO,GACLhS,EAAOgS,SApB6B,kBAuBnC8yC,GAvBmC,8CA0BtC23X,mBA57BC,SAAF,EA47BgCp1U,GAAS,kHAAnB1C,EAAmB,EAAnBA,OAEF,MAAnB0C,EAAQ6jU,QAFgC,sBAG/B,IACXvmU,EAAO,mBADI,KAH+B,kBAG/B,KAH+B,cAOxCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCyva,EAAUnyU,EAAQt9F,IAClB+6C,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCi2D,GAAoBhqD,MAAMuta,GAASvta,MAAM46Z,GACtCvga,KAAK,SAAS,SAAAsmM,GACTA,EAASz3N,OACXwvH,EAAO,mBAAoBioG,EAASz3N,MAAM+rT,MAE5CnhS,EAAQ6sM,EAASz3N,UAElB6uB,OAAM,SAAAgO,GACLhS,EAAOgS,SAlB+B,kBAqBrC8yC,GArBqC,8CAyBxC43X,qBAr9BC,SAAF,GAq9B4C,oHAApB/3U,OAAoB,EAAZyC,SACnC12H,QAAQ6wE,IAAI,uBAGE,GACJ,EAKNuD,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACpE,IAAIwqO,EAAUxqO,EAASz3N,MACnBwnc,EAAM,EACVl8a,EAAE5Y,QAAQuvb,GAAS,SAACjI,EAAQxhc,GAG1B,GAAuB,MAAnBwhc,EAAOyN,SAICpsc,KAAS8gQ,WAAW1mN,IAC5B,SAAStoC,OAAO3U,EAAK,MAEnB+2B,SACJh0B,QAAQ6wE,IAAI,eAAgB5zE,QAI5B,GAAwB,MAApBwhc,EAAO9O,YAGPwc,EADgB,MAAd1N,EAAO/8B,IACC1mS,OAASh5G,SAASy8a,EAAO/8B,IAAK,SAAS5/Z,OAAO,cAE9Ck5H,OAASh5G,SAAS,GAAI,SAASlgB,OAAO,cAIlDhC,KACG8gQ,WACA1mN,IAAI,SACJ3e,MAAMt+B,GACN88B,OAAO,CACN99B,KAAMwic,EAAOyN,SACb7ya,IAAKp8B,EACL4yb,YAAa4O,EAAOn0R,MACpBqlR,UAAWwc,EACXjI,eAAe,EACf1U,UAAWiP,EAAOxyC,MAClByjC,SAAU,IACVD,WAAY,UACZwC,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,UACxC0rL,UAAW,MACXoS,YAAarkc,KAAS8gQ,SAASwF,YAAYC,UAC3CwvL,OAAQ,IACR3D,aAAa,EACb4E,SAAU,EACVsN,kBAAmBtkc,KAAS8gQ,SAASwF,YAAYC,YAWrD4lM,IACAjsc,QAAQ6wE,IAAI,UAAWo7X,EAAM,IAAMhvc,GAC/Bgvc,EAAM,KACR,OAAO,KAaf58a,EAAQ48a,SApFmC,kBAuFxC73X,GAvFwC,8CA4F3Cg4X,kBAjjCC,SAAF,EAijCyCz1U,GAAS,wHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAAqB,SAE9BA,EAAS,wBAAyBC,GAFJ,UAInC,MAJmC,uBAKnD1C,EAAO,kBAAmB,gCALyB,8BAO/CkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCyva,EAAUnyU,EAAQt9F,IAClBgza,EAAY11U,EAAQ01U,UAT2B,UAU7C9mX,GAAqBhqD,MAAM46Z,GAAU56Z,MAAMuta,GAC9C/ua,OAAO,CACNuya,YAAaD,IAZkC,QAcnDp4U,EAAO,kBAAmB,gEAdyB,+CAkBjD2tU,aAnkCC,SAAF,EAmkC0BjrU,GAAS,8GAAnB1C,EAAmB,EAAnBA,SAEf0C,EAAQ93H,SAASyC,OAAS,GAFQ,uBAGpC2yH,EAAO,kBAAmB,8BAHU,+BAOlC0C,EAAQ93H,SAASyC,OAAS,IAPQ,uBAQpC2yH,EAAO,kBAAmB,6BARU,iCAYlCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAZL,UAahCv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWi8Y,GAAUp8Z,OAAO,CACxDl7B,SAAU83H,EAAQ93H,WAdkB,QAgBtCo1H,EAAO,kBAAmB0C,EAAQ93H,UAClCo1H,EAAO,kBAAmB,mCAjBY,+CAoBlCs4U,aAvlCC,SAAF,EAulC0B51U,GAAS,8GAAnB1C,EAAmB,EAAnBA,SAEf0C,EAAQmgU,SAASx1b,OAAS,GAFQ,uBAGpC2yH,EAAO,kBAAmB,2BAHU,+BAOlC0C,EAAQmgU,SAASx1b,OAAS,GAPQ,uBAQpC2yH,EAAO,kBAAmB,+BARU,iCAYlCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAZL,UAahCv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWi8Y,GAAUp8Z,OAAO,CACxD+8Z,SAAUzpb,SAASspH,EAAQmgU,SAAU,MAdD,QAgBtC7iU,EAAO,kBAAmB0C,EAAQmgU,UAClC7iU,EAAO,kBAAmB,mCAjBY,+CAqBlC4tU,mBA5mCC,SAAF,EA4mCgClrU,GAAS,8GAAnB1C,EAAmB,EAAnBA,SAErB0C,EAAQi5T,eAAetub,OAAS,IAFQ,uBAG1C2yH,EAAO,kBAAmB,gCAHgB,+BAOxC0C,EAAQi5T,eAAetub,OAAS,KAPQ,uBAQ1ClB,KAAKk5H,OAAOrF,OAAO,kBAAmB,+BARI,iCAYxCkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAZC,UAatCv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWi8Y,GAAUp8Z,OAAO,CACxD61Z,eAAgBj5T,EAAQi5T,iBAdkB,QAgB5C37T,EAAO,oBAAqB0C,EAAQi5T,gBACpC37T,EAAO,kBAAmB,8CAjBkB,+CAoB9Cu4U,aAhoCO,SAAF,EAgoCoB71U,GAAS,IAAnB1C,EAAmB,EAAnBA,OACT55F,EAAO,GACI,UAAXs8F,IACFt8F,EAAO,KAEM,UAAXs8F,IACFt8F,EAAO,KAEM,UAAXs8F,IACFt8F,EAAO,KAOT,IAHA,IAAI41I,EACF,iEAEOv0K,EAAI,EAAGA,EAAI,GAAIA,IACtB2+B,GAAQ41I,EAAStmJ,OAAOjkB,KAAKE,MAAMF,KAAKskG,SAAWimE,EAAS3uK,SAE9D2yH,EAAO,eAAgB55F,IAInBqna,cAvpCC,SAAF,GAupCqC,2GAApBztU,EAAoB,EAApBA,OAAoB,EAAZyC,SAExBy/T,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAIjCv5B,KAAS8gQ,WAAW1mN,IAC5B,SAAStoC,OAAOukb,EAAU,MAExBnia,SAGJl0B,KAASgyI,OAAOs8E,YAAYpzK,SAI5Bl7C,KACGgyI,OACAghT,UACAnja,MAAK,WACJskG,EAAO,eAAe,MAI1BA,EAAO,kBAAmB,iCAxBc,8CA2B1C6mU,aAlrCO,SAAF,EAkrCoBnkU,GAAS,IAAnB1C,EAAmB,EAAnBA,OAGHn0H,KAAS8gQ,WAAW1mN,IAAI,SAAWy8E,GACzC58F,OAAO,CACT21Z,SAAU,MAGF5vb,KAAS8gQ,WAAW1mN,IAAI,eAAiBy8E,GAC/C58F,OAAO,CACT21Z,SAAU,MAGZz7T,EAAO,kBAAmB,+CAG5B8mU,gBAlsCO,SAAF,EAksCuBpkU,GAAS,IAAnB1C,EAAmB,EAAnBA,OACNn0H,KAAS8gQ,WAAW1mN,IAAI,SAAWy8E,GACzC58F,OAAO,CACT21Z,SAAU,MAGF5vb,KAAS8gQ,WAAW1mN,IAAI,eAAiBy8E,GAC/C58F,OAAO,CACT21Z,SAAU,MAGZz7T,EAAO,kBAAmB,yDAKtBw4U,eAltCC,SAAF,GAktCsC,0HAApBx4U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAEzBx8E,EAAMp6C,KAAS8gQ,WAAW1mN,IAAI,UAClC+5E,EAAO,iBAAkB/5E,GACrBi8Y,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAJF,SAKpBq9F,EAAS,mBALW,cAKrCogU,EALqC,OAOzC92b,QAAQ6wE,IAAIimX,GACR1iX,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,IAElC4qB,GADAA,EAAMA,EAAI2yL,cACAL,aAAasqN,EAAW,IAG9Blha,KAAK,SACNjG,MAAK,SAAUg4M,GACd,IAAIvgO,EAAO,GACPq+F,EAAa,GAGjBkiI,EAAKxwN,SAAQ,SAAUi5N,GACrBhpO,EAAK7F,KAAK6uO,EAAUnzO,KAChBmK,EAAK9F,QAAUw1b,EAAW,EACxB1mN,EAAUnzO,KAAOk5b,IACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,OAGxCwvH,EAAO,cAAem8G,EAAUnzO,QAGpCg3H,EAAO,cAAexuB,GACtBp2E,EAAQo2E,SA9B2B,kBAiClCrxB,GAjCkC,+CAoCrCs4X,mBAtvCC,SAAF,EAsvC0C/1U,GAAS,mHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SACjC12H,QAAQ6wE,IAAI,MAAO8lD,EAAQg2U,aACvBzyZ,EAAMy8E,EAAQg2U,YACdC,EAAWj2U,EAAQhyC,OACnBwxW,EAAWx/T,EAAQt9F,IACnBy9Z,EAAWngU,EAAQmgU,UAGvB58Y,GADAA,GADAA,EAAMA,EAAI2yL,cACAL,aAAasqN,EAAW,IACxB9pN,QAAQ4/N,IAEdh3a,KAAK,SACNjG,MAAK,SAAUg4M,GACd,IAKQklO,EALJzlc,EAAO,GACPq+F,EAAa,GACjB,IAAIrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,OA+C1B,OALIurc,EAAY,IACN3yZ,IAAMA,EAChB2yZ,EAAU/V,SAAWA,EACrB+V,EAAUxza,IAAM88Z,OAChBz/T,EAAS,iBAAkBm2U,GA7C3B,GAAIzwc,OAAOgL,KAAKugO,EAAKljO,OAAOnD,OAASw1b,EAAW,EAO9C,OALI+V,EAAY,IACN3yZ,IAAMA,EAChB2yZ,EAAU/V,SAAWA,EACrB+V,EAAUxza,IAAM88Z,OAChBz/T,EAAS,iBAAkBm2U,GAG7B,IAAIZ,EAAM,EACVtkO,EAAKxwN,SAAQ,SAAUi5N,GACrBpwO,QAAQ6wE,IAAI,mBAAoBu/J,EAAUnzO,KAE1CmK,EAAK7F,KAAK6uO,EAAUnzO,KAChBmK,EAAK9F,QAAUw1b,EAAW,EACxB1mN,EAAUnzO,KAAOk5b,EACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MAGtCwnc,EAAM,EAIG,GAAPA,GAEFxmW,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,cAAem8G,EAAUnzO,MAEhCg3H,EAAO,cAAem8G,EAAUnzO,QAMtCg3H,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,cAAexuB,MArD0B,+CAmElDqnW,oBAzzCC,SAAF,EAyzC2Cn2U,GAAS,mHAA7B1C,EAA6B,EAA7BA,OAAQyC,EAAqB,EAArBA,SAC9Bx8E,EAAMy8E,EAAQg2U,YACdC,EAAWj2U,EAAQhyC,OACnBwxW,EAAWx/T,EAAQt9F,IACnBy9Z,EAAWngU,EAAQmgU,UAGvB58Y,GADAA,GADAA,EAAMA,EAAI2yL,cACAJ,YAAYqqN,EAAW,IACvB7pN,MAAM2/N,IAIZh3a,KAAK,SACNjG,MAAK,SAAUg4M,GACd,IAMQklO,EANJzlc,EAAO,GACPq+F,EAAa,GACjB,OAAIrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,OAEtBlF,OAAOgL,KAAKugO,EAAKljO,OAAOnD,OAASw1b,EAAW,IAE1C+V,EAAY,IACN3yZ,IAAMA,EAChB2yZ,EAAU/V,SAAWA,EACrB+V,EAAUxza,IAAM88Z,OAChBz/T,EAAS,cAAem2U,KAK1BllO,EAAKxwN,SAAQ,SAAUi5N,GAErBhpO,EAAK7F,KAAK6uO,EAAUnzO,KACD,GAAfmK,EAAK9F,OACH8uO,EAAUnzO,KAAOk5b,IACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,OAGxCwvH,EAAO,cAAem8G,EAAUnzO,QAIpCg3H,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,eAAe,GACtBA,EAAO,kBAAkB,QACzBA,EAAO,cAAexuB,MAGlBonW,EAAY,IACN3yZ,IAAMA,EAChB2yZ,EAAU/V,SAAWA,EACrB+V,EAAUxza,IAAM88Z,OAChBz/T,EAAS,cAAem2U,OAnDyB,8CA0DzDE,YAn3CO,SAAF,EAm3CmBp2U,GAAS,IAAnB1C,EAAmB,EAAnBA,OACZj0H,QAAQ6wE,IAAI,mBAEZ,IAAIimX,EAAWngU,EAAQmgU,SACnBX,EAAWx/T,EAAQt9F,IACnB2za,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,WAEnC8yZ,GADAA,EAAOA,EAAKngO,cACAL,aAAasqN,EAAW,IAE/Blha,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIvgO,EAAO,GACPq+F,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,SAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACrBpwO,QAAQ6wE,IAAI,mBAAoBu/J,EAAUnzO,KAE1CmK,EAAK7F,KAAK6uO,EAAUnzO,KAChBmK,EAAK9F,QAAUw1b,EAAW,EACxB1mN,EAAUnzO,KAAOk5b,IACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,QAGxCzE,QAAQ6wE,IAAI,aAAcu/J,EAAUnzO,KACpCg3H,EAAO,cAAem8G,EAAUnzO,SAIpCg3H,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,cAAexuB,SAn5CzB,iCAw5CmBkxB,GAAS,IAAnB1C,EAAmB,EAAnBA,OACZj0H,QAAQ6wE,IAAI,mBAEZ,IAAIimX,EAAWngU,EAAQmgU,SACnBX,EAAWx/T,EAAQt9F,IACnB2za,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,WAEnC8yZ,GADAA,EAAOA,EAAKtgO,aAAa,gBACbF,aAAasqN,EAAW,IAE/Blha,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIvgO,EAAO,GACPq+F,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,SAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACrBpwO,QAAQ6wE,IAAI,mBAAoBu/J,EAAUnzO,KAE1CmK,EAAK7F,KAAK6uO,EAAUnzO,KAChBmK,EAAK9F,QAAUw1b,EAAW,EACxB1mN,EAAUnzO,KAAOk5b,IACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,QAGxCzE,QAAQ6wE,IAAI,aAAcu/J,EAAUnzO,KACpCg3H,EAAO,cAAem8G,EAAUnzO,SAIpCg3H,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,cAAexuB,UAx7CzB,qCA87CuBkxB,GAAS,IAAnB1C,EAAmB,EAAnBA,OAChBj0H,QAAQ6wE,IAAI,yBAEG8lD,EAAQmgU,SAAvB,IACIX,EAAWx/T,EAAQt9F,IACnBo2Z,EAAa94T,EAAQ84T,WACrBud,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,WACnC8yZ,EAAOA,EAAKngO,cAGPj3M,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IACIliI,EAAa,GAEbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,SAC1B2yH,EAAO,qBAAsB,GAC7B0zG,EAAKxwN,SAAQ,SAAUi5N,GACE,MAAnBA,EAAU3rO,OAKR2rO,EAAUnzO,KAAOk5b,GAEf/lN,EAAU3rO,MAAMgrb,YAAcA,IAChCzvb,QAAQ6wE,IAAI,YAAau/J,EAAUnzO,KACnC+C,QAAQ6wE,IAAI,YAAau/J,EAAU3rO,MAAMxI,MACb4H,MAAxBusO,EAAU3rO,MAAMxI,OAClBwpG,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,mBAAmB,QAMpCA,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,cAAexuB,UAt+CzB,uCA4+CyBkxB,GAAS,IAAnB1C,EAAmB,EAAnBA,OACdkiU,EAAWx/T,EAAQt9F,IACnB2za,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,UAC/B+xZ,EAAM,EA4BV,OA3BAe,EAAOA,EAAKngO,cACPj3M,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIliI,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,QAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACE,MAAnBA,EAAU3rO,OACR2rO,EAAUnzO,KAAOk5b,GACe,UAA9B/lN,EAAU3rO,MAAMgrb,YACU5rb,MAAxBusO,EAAU3rO,MAAMxI,OAClBwpG,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,kBAAmB,GAC1Bg4U,QAMVh4U,EAAO,oBAAqBxuB,GAChB,IAARwmW,GACFh4U,EAAO,kBAAmB,IAG5BA,EAAO,kBAAmB,MAIzBg4U,KA3gDJ,qCA+gDuBt1U,GAAS,IAAnB1C,EAAmB,EAAnBA,OACZkiU,EAAWx/T,EAAQt9F,IACnB6ya,EAAWv1U,EAAQ16H,KACnB+wc,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,UAC/B+xZ,EAAM,EA8BV,OA7BAe,EAAOA,EAAKngO,cACPj3M,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIliI,EAAa,GAEbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,QAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACE,MAAnBA,EAAU3rO,OACR2rO,EAAUnzO,KAAOk5b,GAEf/lN,EAAU3rO,MAAMxI,MAAQiwc,GACEroc,MAAxBusO,EAAU3rO,MAAMxI,OAClBwpG,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,kBAAmB,GAC1Bg4U,QAMVh4U,EAAO,oBAAqBxuB,GAChB,IAARwmW,GACFh4U,EAAO,kBAAmB,IAG5BA,EAAO,kBAAmB,MAIzBg4U,KAjjDJ,yCAojD2Bt1U,GAAS,IAAnB1C,EAAmB,EAAnBA,OAChBkiU,EAAWx/T,EAAQt9F,IACnB4za,EAAet2U,EAAQ93H,SACvBmuc,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,UAC/B+xZ,EAAM,EA2BV,OA1BAe,EAAOA,EAAKngO,cACPj3M,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIliI,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,QAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACE,MAAnBA,EAAU3rO,OACR2rO,EAAUnzO,KAAOk5b,GACf/lN,EAAU3rO,MAAM5F,UAAYouc,GACFppc,MAAxBusO,EAAU3rO,MAAMxI,OAClBwpG,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,kBAAmB,GAC1Bg4U,QAMVh4U,EAAO,oBAAqBxuB,GAChB,IAARwmW,GACFh4U,EAAO,kBAAmB,IAG5BA,EAAO,kBAAmB,MAGzBg4U,KAnlDJ,wCAwlD0Bt1U,GAAS,IAAnB1C,EAAmB,EAAnBA,OACfkiU,EAAWx/T,EAAQt9F,IACnBija,EAAc3lU,EAAQiuC,QACtBooS,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,UAC/B+xZ,EAAM,EA2BV,OA1BAe,EAAOA,EAAKngO,cACPj3M,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIliI,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,QAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACE,MAAnBA,EAAU3rO,OACR2rO,EAAUnzO,KAAOk5b,GACf/lN,EAAU3rO,MAAMmgK,SAAW03R,GACDz4b,MAAxBusO,EAAU3rO,MAAMxI,OAClBwpG,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,MACtCwvH,EAAO,kBAAmB,GAC1Bg4U,QAMVh4U,EAAO,oBAAqBxuB,GAChB,IAARwmW,GACFh4U,EAAO,kBAAmB,IAG5BA,EAAO,kBAAmB,MAGzBg4U,KAvnDJ,oCA0nDsBt1U,GAAS,IAAnB1C,EAAmB,EAAnBA,OACfj0H,QAAQ6wE,IAAI,uBAEZ,IAAIimX,EAAWngU,EAAQmgU,SACnBX,EAAWx/T,EAAQt9F,IACvBr5B,QAAQ6wE,IAAI,YAAaimX,GACzB,IAAIkW,EAAOltc,KAAS8gQ,WAAW1mN,IAAI,WAEnC8yZ,GADAA,EAAOA,EAAKtgO,aAAa,gBACbD,YAAYqqN,EAAW,IAE9Blha,KAAK,SACPjG,MAAK,SAAUg4M,GACd,IAAIvgO,EAAO,GACPq+F,EAAa,GACbrpG,OAAOgL,KAAKugO,EAAKljO,OAAOnD,SAC1BqmO,EAAKxwN,SAAQ,SAAUi5N,GACrBpwO,QAAQ6wE,IAAI,mBAAoBu/J,EAAUnzO,KAE1CmK,EAAK7F,KAAK6uO,EAAUnzO,KACD,GAAfmK,EAAK9F,OACH8uO,EAAUnzO,KAAOk5b,IACnB1wV,EAAW2qI,EAAUnzO,KAAOmzO,EAAU3rO,QAGxCzE,QAAQ6wE,IAAI,aAAcu/J,EAAUnzO,KACpCg3H,EAAO,cAAem8G,EAAUnzO,SAIpCg3H,EAAO,cAAc,GACrBA,EAAO,iBAAiB,GACxBA,EAAO,kBAAkB,GACzBA,EAAO,eAAe,GACtBA,EAAO,cAAexuB,UA3pDzB,sCA6qDH,OAbmB,QACL,IAAIr2E,SAAQ,SAACC,EAASC,GAClC,IAAIs6a,EAAe9pc,KAASgyI,OAAOs8E,YAAY/0L,IAC/Cv5B,KAAS8gQ,WAAW1mN,IAAI,UAAU3e,MAAMqua,GAAc7la,GAAG,SAAS,SAAAm4L,GAC5DA,EAASz3N,MACX4qB,EAAQ6sM,EAASz3N,MAAMqyb,UAGvBzna,EAAQ,YAxqDX,yCAgsDH,OAbsB,QACR,IAAID,SAAQ,SAACC,EAASC,GAClC,IAAIs6a,EAAe9pc,KAASgyI,OAAOs8E,YAAY/0L,IAC/Cv5B,KAAS8gQ,WAAW1mN,IAAI,UAAU3e,MAAMqua,GAAc7la,GAAG,SAAS,SAAAm4L,GAC5DA,EAASz3N,MACX4qB,EAAQ6sM,EAASz3N,MAAMytb,aAGvB7ia,GAAQ,YA3rDX,iCAqsDmBsnG,GAAS,EAAnB1C,OAYZ,OAXc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCi2D,GAAehqD,MAAMo7F,EAAQ+9T,WAAWnzb,KAAK,CAAEkzb,OAAQ99T,EAAQ89T,SAC5D9ka,MAAK,WAEJN,EAAQ,CAAEusO,SAAS,OAGpBtoO,OAAM,SAAAgO,GACLhS,EAAOgS,YA9sDV,MCk2BM4ra,GAh/BS,CACtBhnY,MAAO,CACL4zX,eAAgB,KAChBC,eAAgB,KAChBhL,YAAa,KACbE,qBAAqB,EACrBD,aAAc,KACdiO,YAAa,KACbyB,cAAe,KACfyO,eAAgB,KAChBxP,eAAgB,KAChBD,gBAAiB,KACjBrD,YAAa,KACboD,WAAW,EACXrD,YAAY,EACZoD,qBAAsB,EACtBD,cAAe,EACfD,qBAAsB,EACtBzB,mBAAoB,GACpByC,mBAAoB,IAEtBtpU,QAAS,CACP+kU,eAAgB,SAAA7zX,GAAK,OAAIA,EAAM6zX,gBAC/BD,eAAgB,SAAA5zX,GAAK,OAAIA,EAAM4zX,gBAC/B/K,YAAa,SAAA7oX,GAAK,OAAIA,EAAM6oX,aAC5BE,oBAAqB,SAAA/oX,GAAK,OAAIA,EAAM+oX,qBACpCqP,mBAAoB,SAAAp4X,GAAK,OAAIA,EAAMo4X,oBACnC6O,eAAgB,SAAAjnY,GAAK,OAAIA,EAAMinY,gBAC/B7P,qBAAsB,SAAAp3X,GAAK,OAAIA,EAAMo3X,sBACrCL,YAAa,SAAA/2X,GAAK,OAAIA,EAAM+2X,aAC5BM,cAAe,SAAAr3X,GAAK,OAAIA,EAAMq3X,eAC9BmB,cAAe,SAAAx4X,GAAK,OAAIA,EAAMw4X,eAC9Bf,eAAgB,SAAAz3X,GAAK,OAAIA,EAAMy3X,gBAC/BD,gBAAiB,SAAAx3X,GAAK,OAAIA,EAAMw3X,iBAChCrD,YAAa,SAAAn0X,GAAK,OAAIA,EAAMm0X,aAC5BoD,UAAW,SAAAv3X,GAAK,OAAIA,EAAMu3X,WAC1BrD,WAAY,SAAAl0X,GAAK,OAAIA,EAAMk0X,YAC3BoD,qBAAsB,SAAAt3X,GAAK,OAAIA,EAAMs3X,sBACrC3B,mBAAoB,SAAA31X,GAAK,OAAIA,EAAM21X,oBACnC7M,aAAc,SAAA9oX,GAAK,OAAIA,EAAM8oX,eAE/Bj6T,UAAW,CACTq4U,iBADS,SACQlnY,EAAOywD,GACtBzwD,EAAM4zX,eAAiBnjU,GAEzB02U,iBAJS,SAIQnnY,EAAOywD,GACtBzwD,EAAM6zX,eAAiBpjU,GAGzB22U,cARS,SAQKpnY,EAAOywD,GACnBzwD,EAAM6oX,YAAcp4T,GAGtB42U,sBAZS,SAYarnY,EAAOywD,GAC3BzwD,EAAM+oX,oBAAsBt4T,GAG9B62U,oBAhBS,SAgBWtnY,EAAOywD,GACzBzwD,EAAMo4X,mBAAqB3nU,GAG7B82U,iBApBS,SAoBQvnY,EAAOywD,GACtBzwD,EAAMinY,eAAiBx2U,GAEzB+2U,gBAvBS,SAuBOxnY,EAAOywD,GACrBzwD,EAAMq3X,cAAgB5mU,GAExBg3U,sBA1BS,SA0BaznY,EAAOywD,GAC3BzwD,EAAMo3X,qBAAuB3mU,GAE/Bi3U,cA7BS,SA6BK1nY,EAAOywD,GACnBzwD,EAAM+2X,YAActmU,GAEtBk3U,gBAhCS,SAgCO3nY,EAAOywD,GACrBzwD,EAAMw4X,cAAgB/nU,GAExBm3U,iBAnCS,SAmCQ5nY,EAAOywD,GACtBzwD,EAAMy3X,eAAiBhnU,GAEzBo3U,iBAtCS,SAsCQ7nY,EAAOywD,GACtBzwD,EAAMw3X,gBAAkB/mU,GAE1Bq3U,cAzCS,SAyCK9nY,EAAOywD,GACnBzwD,EAAMm0X,YAAc1jU,GAEtBs3U,YA5CS,SA4CG/nY,EAAOywD,GACjBzwD,EAAMu3X,UAAY9mU,GAEpBu3U,aA/CS,SA+CIhoY,EAAOywD,GAClBzwD,EAAMk0X,WAAazjU,GAErBw3U,sBAlDS,SAkDajoY,EAAOywD,GAE3BzwD,EAAMs3X,qBAAuB7mU,GAE/By3U,qBAtDS,SAsDYloY,EAAOywD,GAC1BzwD,EAAM21X,mBAAqBllU,GAE7B03U,eAzDS,SAyDMnoY,EAAOywD,GACpBzwD,EAAM8oX,aAAer4T,IAGzBzc,QAAS,CACDo0V,uBADC,WACoC33U,GAAS,qGAArBD,SAAqB,8CAuCpDqnU,YAxCO,WAwCiBpnU,GAAS,IAAnB1C,EAAmB,EAAnBA,OAMRupH,EAAU,GACdA,EAAQ,YAJS19O,KAAS8gQ,WAAW1mN,MAAM3e,MAAM,aAAah6B,OAAOtE,KAIjC05H,EACpC72H,KAAS8gQ,WAAW1mN,MAAMngB,OAAOyjN,GAEjCvpH,EAAO,kBAAmB,+BAEtBs6U,iBApDC,YAoDsC,sHAApBt6U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAE3BC,EAAU,GAF6B,SAGnBD,EAAS,kBAHU,OAG3CC,EAAQiuC,QAHmC,OAKvCglS,EAAe9pc,KAASgyI,OAAOs8E,YAEnC7oI,GAAchqD,MAAMo7F,EAAQiuC,SAASrpI,MAAM,YAAYwI,GAAG,SAAS,SAAAm4L,GACjE,IAAI2gK,EAAW3gK,EAASz3N,MAEpBk5b,EAAiB,GACrB5ta,EAAE5Y,QAAQ0lX,GAAU,SAAA1nT,GAClBA,EAAQx2C,KAAOw2C,EAAQg1X,QAAUP,EAAavwa,IAAM,OAAS,WAE7D87C,EAAQvnE,KAAOotH,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,gBAChDqzE,EAAQomX,UAAYvgU,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,OACrD67b,EAAep8b,KAAK4zE,MAMtB,IAAIi1X,EAAkBr6a,EAAEs0F,QAAQs5U,EAAgB,QAEhD1pU,EAAO,mBAAoBm2U,MAE1B,SAAA9oa,GACDthC,QAAQ6wE,IAAIvvC,MA3B6B,8CA8BvCkta,iBAlFC,WAkF8B73U,GAAS,6GAArBD,EAAqB,EAArBA,SAEvB,IAIEnxC,GAAchqD,MAAMo7F,EAAQwnU,YAAY5ia,MAAM,YAAYh6B,KAAK,CAC7D88b,KAAMoQ,SACNtE,OAAQrqc,KAASgyI,OAAOs8E,YAAY/0L,IACpC46H,YAAan0J,KAASgyI,OAAOs8E,YAAYn6D,YACzCgqO,OAAQn+X,KAASgyI,OAAOs8E,YAAYvF,SACpC41J,MAAO9nP,EAAQu/T,IACf77Z,KAAMs8F,EAAQxhD,QACdw+K,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAG3C,MAAOv1O,GACP9wB,QAAQ6wE,IAAI//C,GAjB8B,yBAuBlB4lG,EAAS,yBAvBS,WAyBtB,IAFhBg4U,EAvBsC,UA0BxCA,EAAc,KAGG,MAAfA,GAAuBA,EAAc,GA7BC,wBA8BxCA,IA9BwC,UA+BpBh4U,EAAS,kBA/BW,eA+BpCkuC,EA/BoC,iBAgClC9kK,KAAS8gQ,WAAW1mN,IAAI,kBAC3B3e,MAAMqpI,GACN7qI,OAAO,CACN40a,cAAeD,IAnCqB,0DA2C1C1uc,QAAQ6wE,IAAR,MA3C0C,6DA+CxCqtX,WAjIC,WAiIevnU,GAAS,mIAGvBjoF,EAAQ,GAHe,SAIrB62C,GAAchqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KACnDkC,MAAMo7F,EAAQwnU,YACdvoa,KAAK,SAAS,SAAAsmM,GACbxtL,EAAQwtL,EAASz3N,MAAMiqC,SAPA,uBAYJ62C,GACpBhqD,MAAMmT,GACNnT,MAAMo7F,EAAQwnU,YACd5ia,MAAM,WAfkB,cAYvBqza,EAZuB,QAiBxBliO,aAAa,OACbQ,QAAQptO,KAASgyI,OAAOs8E,YAAY/0L,KACpCzD,KAAK,SAAS,SAAAsmM,GACb,IAAI2yO,EAEJ,IAAK,IAAI5xc,KAAOi/N,EAASz3N,MAAOoqc,EAAY5xc,EAG5C2xc,EAAWrza,MAAMsza,GAAW76a,YAzBL,UA6BrBuxD,GACHhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCkC,MAAMo7F,EAAQwnU,YACdnqa,SAhCwB,yBAiCrB0iG,SAAS,kBAAmBC,EAAQwnU,YAjCf,0DAoC3Bn+b,QAAQ6wE,IAAR,MApC2B,6DAyC/Bi+X,iBA1KO,YA0KsB,IAAV76U,EAAU,EAAVA,OAiBjB,OAfc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,WAAW6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACtE,IAAIwqO,EAAUxqO,EAASz3N,MACnBsqc,EAAY,GAChBh/a,EAAE5Y,QAAQuvb,GAAS,SAAAjI,GACK,WAAlBA,EAAO75R,SAETmqS,EAAUxtc,KAAKk9b,MAInBxqU,EAAO,mBAAoB86U,GAC3B1/a,EAAQ0/a,UAQRC,iBAhMC,YAgMsC,sHAApB/6U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAE3BC,EAAU,GAF6B,SAGnBD,EAAS,kBAHU,cAG3CC,EAAQiuC,QAHmC,OAIvCxwF,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,WAAW6yL,eAAehpM,GAAG,SAAS,SAAUm4L,GACtE,IAAIwqO,EAAUxqO,EAASz3N,MACnBsqc,EAAY,GAChBh/a,EAAE5Y,QAAQuvb,GAAS,SAAAjI,GACbA,EAAO75R,SAAWjuC,EAAQiuC,SAE5BmqS,EAAUxtc,KAAKk9b,MAKnBxqU,EAAO,mBAAoB86U,GAE3B1/a,EAAQ0/a,SAlB+B,kBAqBpC36X,GArBoC,8CA0BvC66X,aA1NC,WA0N0Bt4U,GAAS,kHAArBD,EAAqB,EAArBA,SAAqB,kBAIfnxC,GACpBhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCkC,MAAMo7F,EAAQwnU,YACd5ia,MAAM,WAP6B,cAIlCqza,EAJkC,QASnCliO,aAAa,OACbQ,QAAQv2G,EAAQ8nU,OAAOpla,KACvBzD,KAAK,SAAS,SAAAsmM,GACb,IAAI2yO,EAEJ,IAAK,IAAI5xc,KAAOi/N,EAASz3N,MAAOoqc,EAAY5xc,EAG5C2xc,EAAWrza,MAAMsza,GAAW76a,YAjBM,SAqBhCuxD,GACHhqD,MAAMo7F,EAAQ8nU,OAAOpla,KACrBkC,MAAMo7F,EAAQwnU,YACdnqa,SAxBmC,wBAyBhC0iG,EAAS,kBAAmBC,EAAQwnU,YAzBJ,0DA2BtCn+b,QAAQ6wE,IAAR,MA3BsC,6DA8BpCq+X,gBAxPC,WAwP2B/Q,GAAY,oHAAtBlqU,EAAsB,EAAtBA,OAClBvlF,EAAQ,GADgC,SAEtC62C,GAAchqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KACnDkC,MAAM4ia,GACNvoa,KAAK,SAAS,SAAAsmM,GACbxtL,EAAQwtL,EAASz3N,MAAMiqC,SALiB,cAOxC0lC,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCi2D,GACGhqD,MAAMmT,GACNnT,MAAM4ia,GACNvoa,KAAK,SAAS,SAAAsmM,GACb,IAAIwqO,EAAUxqO,EAASz3N,MAAMiic,QACzByI,EAAe,GACnB,IAAK,IAAIlyc,KAAOypc,EACdyI,EAAa5tc,KAAKmlc,EAAQzpc,IAE5BoyB,EAAQq3a,GACRzyU,EAAO,kBAAmBk7U,MACzB,SAAA7ta,GACDhS,EAAOgS,SApB+B,kBAuBrC8yC,GAvBqC,8CA0BxCg7X,UAlRC,WAkRuBz4U,GAAS,kHAArBD,EAAqB,EAArBA,SAAqB,kBAG7BnxC,GACHhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCkC,MAAMo7F,EAAQwnU,YACd5ia,MAAM,WACNh6B,KAAKo1H,EAAQ04U,WAPmB,uBASnB34U,EAAS,gBAAiBC,EAAQwnU,YATf,cAS/B17T,EAT+B,gBAU7Bl9C,GACHhqD,MAAMo7F,EAAQ04U,UAAUh2a,KACxBkC,MAAMo7F,EAAQwnU,YACdt2b,IAAI,CACHync,UAAW7sU,EACX8sU,SAAU,GACV7ga,MAAO5uC,KAASgyI,OAAOs8E,YAAY/0L,MAhBJ,OAkBnCq9F,EAAS,kBAAmBC,EAAQwnU,YAlBD,kDAoBnCn+b,QAAQ6wE,IAAR,MApBmC,6DA0BjC2qX,QA5SC,WA4SY7kU,GAAS,0HACtBt9F,EAAMs9F,EAAQt9F,IACdolC,EAAWk4D,EAAQl4D,SAFG,kBAIlB3+D,KAAS8gQ,WAAW1mN,IAAI,WAC3B3e,MAAMlC,GACNU,OAAO,CACN21Z,SAAU,IACV8f,WAAY/wY,IARQ,uDAWxBz+D,QAAQ6wE,IAAR,MAXwB,4DAetBmqX,UA3TC,WA2TcrkU,GAAS,oIAGpB72H,KAAS8gQ,WAAW1mN,IAAI,WAC3B3e,MAAMo7F,GACN58F,OAAO,CACN21Z,SAAU,MANY,sDAS1B1vb,QAAQ6wE,IAAR,MAT0B,2DAcxB4+X,cAzUC,YAyUmC,oHAApBx7U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,kBAElBA,EAAS,kBAFS,cAElCkuC,EAFkC,gBAGhC9kK,KAAS8gQ,WAAW1mN,IAAI,aAC3B3e,MAAMqpI,GACN7qI,OAAO,CACNwqa,cAAe,MANmB,OAStCtwU,EAAO,eAAe,GATgB,kDAWtCj0H,QAAQ6wE,IAAR,MAXsC,6DAgBpC6+X,aAzVC,YAyVkC,oHAApBz7U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,kBAEjBA,EAAS,kBAFQ,cAEjCkuC,EAFiC,gBAG/B9kK,KAAS8gQ,WAAW1mN,IAAI,aAC3B3e,MAAMqpI,GACN7qI,OAAO,CACNwqa,cAAe,MANkB,OAQrCtwU,EAAO,eAAe,GARe,kDAWrCj0H,QAAQ6wE,IAAR,MAXqC,6DAiCzC8+X,cA1XO,WA0XYxR,GAajB,OAb6B,QACf,IAAI/ua,SAAQ,SAACC,EAASC,GAClCi2D,GACGhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCkC,MAAM4ia,GACNvoa,KAAK,SAAS,SAAAsmM,GACb,IAAIozO,EAAYpzO,EAASz3N,MAAM6qc,UAC/Bjgb,EAAQigb,MAETh8a,OAAM,SAAAgO,GACLhS,EAAOgS,UAQfsua,oBA5YO,WA4YkBzR,GAAY,QAcnC,OAZc,IAAI/ua,SAAQ,SAACC,EAASC,GAClCi2D,GACGhqD,MAHS,gCAITA,MAAM4ia,GACNvoa,KAAK,SAAS,SAAAsmM,GACb,IAAIozO,EAAYpzO,EAASz3N,MAAM6qc,UAC/Bjgb,EAAQigb,MAETh8a,OAAM,SAAAgO,GACLhS,EAAOgS,UAMfk9Z,YA7ZO,WA6ZUl7U,GAiBf,OAjBsB,QACR,IAAIl0F,SAAQ,SAACC,EAASC,GAClCi2D,GACGhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCkC,MAAM+nF,EAAMrnH,MACZ4L,IAAI,CACHync,UAAWhsV,EAAMusV,IACjBN,SAAU,GACV7ga,MAAO5uC,KAASgyI,OAAOs8E,YAAY/0L,MAEpC1J,MAAK,SAAA9Y,GACJwY,GAAQ,MAETiE,OAAM,SAAAgO,GACLhS,EAAOgS,UAOfupa,eAlbO,YAkboB,EAAV52U,OASf,OARc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAGpF7sM,EAAQ6sM,EAASz3N,cAQvBqrc,eA/bO,YA+boB,IAAV77U,EAAU,EAAVA,OAUf,OATc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAGpFjoG,EAAO,iBAAkBioG,EAASz3N,MAAMmgK,SACxCv1I,EAAQ6sM,EAASz3N,MAAMmgK,gBAQ7BmrS,aA7cO,YA6ckB,EAAV97U,OAUb,OATc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAIpF7sM,EAAQ6sM,EAASz3N,MAAMqnL,cAO7BkkR,YA1dO,YA0diB,EAAV/7U,OAOZ,OANc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GACpF7sM,EAAQ6sM,EAASz3N,MAAM45b,aAQ7B4R,cAreO,YAqemB,IAAVh8U,EAAU,EAAVA,OAYd,OAXc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GACtEA,EAASz3N,MAGvB4qB,EAAQ6sM,EAASz3N,MAAMmgK,SADP,GAENrjK,KAAK26N,EAASz3N,OACxBwvH,EAAO,mBAAoBioG,EAASz3N,MAAMmgK,gBAShDsrS,iBAtfO,WAsfsB/Z,GAAU,IAApBliU,EAAoB,EAApBA,OAejB,OAdc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAM46Z,GAAUvga,KAAK,SAAS,SAAAsmM,GAC7D7sM,EAAQ6sM,EAASz3N,MAAMirb,UACQ,KAA3BxzN,EAASz3N,MAAMirb,SACjBz7T,EAAO,gBAAgB,GAGvBA,EAAO,gBAAgB,UAU/Bk8U,cAxgBO,YAwgBmB,IAAVl8U,EAAU,EAAVA,OAed,OAdc,IAAI7kG,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GACpF7sM,EAAQ6sM,EAASz3N,MAAMirb,UAQvBz7T,EAAO,gBAAiBioG,EAASz3N,MAAMirb,iBAOvC0gB,YA1hBC,YA0hBiC,sHAApBn8U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,SAClBA,EAAS,kBADS,cAClCkuC,EADkC,OAElCxwF,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAElCxvB,KAAS8gQ,WAAW1mN,IAAI,YAAY3e,MAAMqpI,GAAShvI,KAAK,SAAS,SAAAsmM,GAC/D7sM,EAAQ6sM,EAASz3N,MAAM8/b,eAEa,KAAhCroO,EAASz3N,MAAM8/b,cACjBtwU,EAAO,eAAe,GAGtBA,EAAO,eAAe,SAXU,kBAkB/B7/C,GAlB+B,8CAsBlCi8X,oBAhjBC,YAgjByC,sHAApBp8U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,SAE1BA,EAAS,kBAFiB,cAE1CkuC,EAF0C,OAK1CxwF,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,kBACrB3e,MAAMqpI,GAAS7gI,GAAG,SAAS,SAAAm4L,GAM1BjoG,EAAO,kBAAmBioG,EAASz3N,MAAM0zP,QACzC9oO,EAAQ6sM,EAASz3N,MAAM0zP,cAdiB,kBAoBvC/jL,GApBuC,8CAwB1Ck8X,sBAxkBC,YAwkB2C,sHAApBr8U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,SAC5BA,EAAS,kBADmB,cAC5CkuC,EAD4C,OAE5CxwF,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCxvB,KAAS8gQ,WAAW1mN,IAAI,kBACrB3e,MAAMqpI,GAAS7gI,GAAG,SAAS,SAAAm4L,IAIW,GAAjCA,EAASz3N,MAAMkqc,eACjB16U,EAAO,wBAAyB,GAChC5kG,EAAQ6sM,EAASz3N,MAAMkqc,iBAEvB16U,EAAO,wBAAyBioG,EAASz3N,MAAMkqc,eAC/Ct/a,EAAQ6sM,EAASz3N,MAAMkqc,sBAbiB,kBAoBzCv6X,GApByC,8CAuB5Cm8X,sBA/lBC,YA+lB2C,sHAApBt8U,OAAQyC,EAAY,EAAZA,SAAY,kBAKtBA,EAAS,uBALa,cAK1Cg4U,EAL0C,OAO9CA,IAP8C,SAQ1Bh4U,EAAS,kBARiB,cAQ1CkuC,EAR0C,iBASxC9kK,KAAS8gQ,WAAW1mN,IAAI,kBAC3B3e,MAAMqpI,GACN7qI,OAAO,CACNo+N,OAAQu2M,IACPp7a,OAAM,SAAAxC,GACP9wB,QAAQ6wE,IAAI//C,MAd8B,0DAmB9C9wB,QAAQ6wE,IAAR,MAnB8C,6DAyB5C2/X,4BAxnBC,YAwnByC,oHAAZ95U,EAAY,EAAZA,SAAY,kBAGpBA,EAAS,uBAHW,cAGxCg4U,EAHwC,QAK1B,GAChBA,IAN0C,SASxBh4U,EAAS,kBATe,cASxCkuC,EATwC,iBAUtC9kK,KAAS8gQ,WAAW1mN,IAAI,kBAC3B3e,MAAMqpI,GACN7qI,OAAO,CACNo+N,OAAQu2M,IAbgC,0DAiB5C1uc,QAAQ6wE,IAAR,MAjB4C,6DAuB1C4/X,kBA/oBC,WA+oBuC95U,GAAS,oHAA7B1C,EAA6B,EAA7BA,OAA6B,EAArByC,SAE5By/T,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IACvCq3a,EAAanrX,GAAqBhqD,MAAM46Z,GAAU50b,OAAOtE,IAHR,SAK/CsoF,GAAqBhqD,MAAMm1a,GAC9B32a,OAAO,CACNipD,MAAO2zC,EAAQ3zC,MACf+4W,gBAAiBplU,EAAQolU,gBACzB1ia,IAAK88Z,EACLxiM,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAVQ,OAYrDpyI,EAAO,kBAAmB,yCAZ2B,8CAejD08U,qBA9pBC,YA8pB0C,yGAApB18U,EAAoB,EAApBA,OAAoB,EAAZyC,SAInCnxC,GAAqBxhD,GAAG,SAAS,SAAAm4L,GAG/B,IAAIkuO,EAAkBr6a,EAAEs0F,QAAQ63G,EAASz3N,MAAO,aAC5Cmsc,EAAwB7gb,EAAEg8F,QAAQq+U,EAAiB,YAAa,QACpEn2U,EAAO,uBAAwB28U,MATc,8CAa3CC,iBA3qBC,YA2qB4B,kHAAV58U,EAAU,EAAVA,OAEnB7/C,EAAU,IAAIhlD,SAAQ,SAACC,EAASC,GAClCi2D,GACGhqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAClCzD,KAAK,SAAS,SAAAsmM,GACb,IAAIwqO,EAAUxqO,EAASz3N,MACnB0qc,EAAe,GACnB,IAAK,IAAIlyc,KAAOypc,EACdyI,EAAa5tc,KAAKmlc,EAAQzpc,IAE5BoyB,EAAQq3a,GACRzyU,EAAO,mBAAoBk7U,MAC1B,SAAA7ta,GACDhS,EAAOgS,SAdoB,kBAiB1B8yC,GAjB0B,8CAqB7B08X,qBAhsBC,WAgsB0Cn6U,GAAS,oHAA7B1C,OAAQyC,EAAqB,EAArBA,SAAqB,kBAIlCA,EAAS,oBAJyB,OAIlDgwU,EAJkD,OAMtD32a,EAAE5Y,QAAQuvb,GAAS,SAAAjI,GACb3+b,KAASgyI,OAAOs8E,YAAY/0L,KAAOola,EAAOpla,KAAqB,MAAdola,EAAOpla,KAA6Bx1B,MAAd46b,EAAOpla,KAChFksD,GAAahqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC5CkC,MAAMkja,EAAOpla,KACb93B,KAAK,CACJ4oc,OAAQrqc,KAASgyI,OAAOs8E,YAAY/0L,IACpCgB,KAAM,oBAAsBs8F,EAAQlwH,IACpCg4W,MAAO9nP,EAAQu/T,IAEfviM,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,eAiBjD9gL,GAAahqD,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAC5C93B,KAAK,CACJ4oc,OAAQrqc,KAASgyI,OAAOs8E,YAAY/0L,IACpCgB,KAAM,iBAAmBs8F,EAAQlwH,IACjCg4W,MAAO9nP,EAAQu/T,IAEfviM,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YAtCS,gDA2CtDrmQ,QAAQ6wE,IAAI,aAAZ,MA3CsD,4DAiD1DkgY,oBAjvBO,YAivByB,IAAV98U,EAAU,EAAVA,OAEhB21U,EAAe9pc,KAASgyI,OAAOs8E,YACnC7oI,GAAahqD,MAAMqua,EAAavwa,KAAK0K,GAAG,SAAS,SAAAm4L,GAC/C,IAAI2gK,EAAW3gK,EAASz3N,MAExBsrB,EAAE5Y,QAAQ0lX,GAAU,SAAA1nT,GAClBA,EAAQx2C,KAAOw2C,EAAQg1X,QAAUP,EAAavwa,IAAM,OAAS,WAC7D87C,EAAQl5E,MAAOk5E,EAAQg1X,OAAUP,EAAavwa,IAAMuwa,EAAa31S,aACjE9+E,EAAQvnE,KAAOotH,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,gBAChDqzE,EAAQomX,UAAYvgU,KAAO7lD,EAAQw+K,WAAW7xP,OAAO,UAGvD,IAAIsoc,EAAkBr6a,EAAEs0F,QAAQw4Q,EAAU,QAE1C5oQ,EAAO,sBAAuBm2U,OAKlC4G,cArwBO,YAqwBmB,IAAV/8U,EAAU,EAAVA,OAEdn0H,KAAS8gQ,WAAW1mN,IAAI,UAAU3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAG/D,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,OAGrC3E,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAq7a,GAE1D,MAAtBA,EAAaxsc,OAAuCZ,MAAtBotc,EAAaxsc,OAC7CwvH,EAAO,gBAAiBg9U,EAAaxsc,MAAMoxb,eAoBrDqb,iBApyBO,YAoyBsB,IAAVj9U,EAAU,EAAVA,OAEjBn0H,KAAS8gQ,WAAW1mN,IAAI,UAAU3e,MAAMz7B,KAASgyI,OAAOs8E,YAAY/0L,KAAKzD,KAAK,SAAS,SAAAsmM,GAG/D,MAAlBA,EAASz3N,OAAmCZ,MAAlBq4N,EAASz3N,MAErCwvH,EAAO,yBAAyB,GAGhCA,EAAO,yBAAyB,OAUtCk9U,gBAxzBO,YAwzBqB,IAAVl9U,EAAU,EAAVA,OAEZkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IAEjCv5B,KAAS8gQ,WAAW1mN,IAC5B,UAAUtoC,OAAOukb,EAAU,MAEzBnia,SACJigG,EAAO,yBAAyB,GAChCA,EAAO,kBAAmB,yCAKtBm9U,iBAt0BC,WAs0B4Bz6U,GAAS,kHAAnB1C,EAAmB,EAAnBA,OACnBkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IADD,kBAIlCv5B,KAAS8gQ,WAAW1mN,IAAI,kBAC3B3e,MAAM46Z,GACNp8Z,OAAO,CACNs3a,eAAgB16U,EAAQwlU,QACxBmV,aAAc36U,EAAQylU,UACtBzoM,UAAW7zP,KAAS8gQ,SAASwF,YAAYC,YATL,uDAcxCpyI,EAAO,kBAAD,MAdkC,4DAoBtCs9U,iBA11BC,WA01B4B56U,GAAS,kHAAnB1C,EAAmB,EAAnBA,OACnBkiU,EAAWr2b,KAASgyI,OAAOs8E,YAAY/0L,IADD,kBAIlCv5B,KAAS8gQ,WAAW1mN,IAAI,YAC3B3e,MAAM46Z,GACNp8Z,OAAO,CACNy3a,UAAW76U,EAAQ66U,UACnBC,aAAc96U,EAAQ86U,aACtBC,eAAgB/6U,EAAQ+6U,eACxBC,OAAQh7U,EAAQg7U,SAVoB,uDAaxC3xc,QAAQ6wE,IAAR,MAbwC,QAe1CojD,EAAO,kBAAmB,2CAfgB,4DAkBtC29U,YA52BC,YA42BiC,oHAApB39U,EAAoB,EAApBA,OAAQyC,EAAY,EAAZA,SAAY,SACfA,EAAS,kBADM,OAClCynU,EADkC,OAEtC54W,GAEG3vD,KAAK,SAAS,SAAAsmM,GACb,IAAI21O,EAAW,GACf,GAAsB,MAAlB31O,EAASz3N,MAAe,CAE1B,IAAIwnc,EAAM,EACNhsK,EAAS/jE,EAASz3N,MACtB,IAAK,IAAIxH,KAAOgjS,EAAQ,CAEtB,GAAIhjS,GAAOkhc,GACE,GAAP8N,EAAU,CACZ,IAAI3oV,EAAQ,CACVrnH,KAAMgB,EACN4yc,IAAK5vK,EAAOhjS,GAAKqyc,UACjB5ga,MAAOuxP,EAAOhjS,GAAKyxC,OAErBu9Z,EAAM,EAGV4F,EAAStwc,KAAK+hH,IAGlB2Q,EAAO,gBAAiB49U,MAzBU,gDC98B5Ct7Z,UAAIY,IAAI26Z,MACO,WAAIA,KAAKh8U,MAAM,CAC5Bl6H,QAAS,CACPk2I,KAAMkwT,GACNpQ,KAAM8S,GACNqN,KAAMtL,GACNuL,UAAW9E,IAEbhnY,MAAO,CACL8pX,cAAe,KACfuR,aAAa,EACbtR,iBAAkB,MAEpBj7T,QAAS,CACPg7T,cAAe,SAAA9pX,GAAK,OAAIA,EAAM8pX,eAC9BC,iBAAkB,SAAA/pX,GAAK,OAAIA,EAAM+pX,kBACjCsR,YAAa,SAAAr7X,GAAK,OAAIA,EAAMq7X,cAE9BxsU,UAAW,CACTk9U,gBADS,SACO/rY,EAAOywD,GACrBzwD,EAAM8pX,cAAgBr5T,GAExBu7U,mBAJS,SAIUhsY,EAAOywD,GACxBzwD,EAAM+pX,iBAAmBt5T,GAE3Bw7U,YAPS,SAOGjsY,EAAOywD,GACjBzwD,EAAMq7X,YAAc5qU,M,oBCJ1BpgF,UAAIj5C,UAAU09H,OAASA,KAEvB8jM,GAAW3nR,IAAIi7Z,GAAepnW,MAG9B,IAAIqnW,GAAS,KACbvyc,KAASgyI,OAAO8xT,mBAAhB,+BAAmC,WAAgBvwZ,GAAhB,mBAAA5xC,EAAA,sDAErB,MAAR4xC,IAEEA,EAAKu2K,eAEH4+O,EAAU1oc,KAASgyI,OAAOs8E,YAAY/0L,IAG1Cv5B,KAAS8gQ,WAAW1mN,IAAI,SAAS3e,MAAMita,GAEpC5ya,KAAK,SAAS,SAAAsmM,GACbn3I,GAAMkvC,OAAO,eAAe,GAC5BlvC,GAAMkvC,OAAO,iBAAkB5gF,EAAK4gH,aACpClvE,GAAMkvC,OAAO,cAAe5gF,EAAKw1K,UAEjC9jI,GAAMkvC,OAAO,kBAAmBioG,EAASz3N,MAAM5F,UAC/CkmF,GAAMkvC,OAAO,kBAAmBioG,EAASz3N,MAAMqyb,UAC/C/xW,GAAMkvC,OAAO,oBAAqBioG,EAASz3N,MAAMmrb,gBAGjB,OAA5B1zN,EAASz3N,MAAMstb,WAQb/yb,OAAOzB,eAAe,aAExBouE,QAAQoqD,QAAQj2H,SAAS6wR,UACtB2hL,gBACA3ib,MAAK,SAAU4ib,GAGd5mY,QAAQoqD,QAAQj2H,SAAS6wR,UAAUl0L,WAAW9sE,MAAK,SAAUjmB,GAI3D,IAAI0uQ,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,IAC/Bv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,GACzCr+O,OAAO,CACTg4Z,UAAWrob,EACXuob,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,kBAIhD16L,QAAQoqD,QAAQj2H,SAAS6wR,UAAUx2M,UAAU+hJ,EAASz3N,MAAMmgK,UAQ5D5lK,OAAOzB,eAAe,aAExByB,OAAO+2H,QAAQy8U,UAAUC,QAAO,SAAAr6L,GAK9B,GAAc,MAAVA,EAAgB,CAGlB,IAAIowL,EAAU1oc,KAASgyI,OAAOs8E,YAAY/0L,IAC1Cv5B,KAAS8gQ,WAAW1mN,IAAI,cACrB3e,MAAMita,GACNzua,OAAO,CACNgva,SAAU3wL,EAAOA,OACjBs6L,UAAWt6L,EAAOs6L,YACjBp/a,OAAM,SAAAgO,GACPthC,QAAQ6wE,IAAI,QAASvvC,UAS7BqqC,QAAQoqD,QAAQj2H,SAAS6wR,UAAUqG,gBAAe,WAEhDrrN,QAAQoqD,QAAQj2H,SAAS6wR,UAAUl0L,WAAW9sE,MAAK,SAAUjmB,GAI3D,IAAI0uQ,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,IAC/Bv5B,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,GACzCr+O,OAAO,CACTg4Z,UAAWrob,EACXuob,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,sBAchD+R,EAASt4Q,KAASgyI,OAAOs8E,YAAY/0L,KACrC6gB,EAAMp6C,KAAS8gQ,WAAW1mN,IAAI,SAAWk+N,IACzCr+O,OAAO,CACT01Z,WAAY,SACZwC,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,YAE1CnsN,EAAIswM,eAAezwN,OAAO,CAExB01Z,WAAY,UACZwC,SAAUnyb,KAAS8gQ,SAASwF,YAAYC,aAQ1CthL,GAAMkvC,OAAO,eAAe,IAYhC19E,UAAIiB,OAAO,cAAc,SAAU76C,GACjC,OAAKA,GACLA,EAAQA,EAAMkE,YACD8oB,OAAO,GAAGjB,cAAgB/rB,EAAMqK,MAAM,GAFhC,MAKrBuvC,UAAIiB,OAAO,gBAAgB,SAAU76C,GACnC,OAAKA,GAELA,GADAA,EAAQA,EAAMkE,YACAuJ,QAAQ,MAAO,IAC7BzN,EAAQg2c,KAAKvoc,QAAQ,OAAQ,KAHV,MAQhBioc,KACHA,GACE,IAAI97Z,UAAI,CACNoC,GAAI,OACJ/R,OAAQ,SAAC32B,GAAD,OAAOA,EAAEmiN,KACjBrtI,SAEAzuC,WAAY,CACV+6B,IAAK+gJ,IAEPruL,GAAI,CACFyH,KAAM,SAA0BnR,SAjKP,2CAAnC,uDAuRA,GAAIr7B,OAAOzB,eAAe,WAAY,KAwB3Bq1c,GAAT,WACOC,MAGLA,MAAMC,aAAa,CACjBC,KAAMC,GAAQC,OACd7kV,SAAUykV,MAAMK,YAAYC,cAE5BC,SAAS,EACTC,cAAc,EACdC,UAAU,EACVrwR,QAAS,UAVG20K,MAAM,2BAxBlBo7G,GAAU,GAIZA,IADE,aAAapoc,KAAK3L,UAAUC,YAMrB,sBAAsB0L,KAAK3L,UAAUC,WALpC,CACR+zc,OAAQ,2CAyCRj0c,OAAOzB,eAAe,WACxBI,SAASE,iBAAiB,cAAe+0c,IAAS,GAElDA,KAOFj1c,SAASE,iBAAiB,eAAe,WAUvCmB,OAAO+2H,QAAQy8U,UACZe,UAAU,wCACVC,0BAN8B,SAAUC,OAOxCC,kBAAkB10c,OAAO+2H,QAAQy8U,UAAUmB,uBAAuB7iL,cAClE8iL,UAMHj2c,SAASE,iBAAiB,WAI1B,WAEEknF,GAAMkvC,OAAO,kBAAmB,gFANc,GAChDt2H,SAASE,iBAAiB,cAQ1B,WACEknF,GAAMkvC,OAAO,qBAAsB,QATkB,GAiCvDtoD,QAAQoqD,QAAQj2H,SAAS6wR,UAAUkjL,WAAWlkb,MAAK,SAAUhzB,GAE3DgvE,QAAQoqD,QAAQj2H,SAAS6wR,UAAUmjL,SAASn3c,QAG9CgvE,QAAQoqD,QAAQj2H,SAAS6wR,UAAUmjL,SAAS,KAE5CnoY,QAAQoqD,QAAQj2H,SAAS6wR,UAAUojL,qBAAoB,SAAUp9U","file":"js/app.js","sourcesContent":[" \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 = 286);\n","/**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\nvar doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n} : document; // eslint-disable-line\n\nvar win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n} : window; // eslint-disable-line\n\nexport { win as window, doc as document };\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\nrequire('@firebase/auth');\nrequire('@firebase/database');\nrequire('@firebase/firestore');\nrequire('@firebase/functions');\nrequire('@firebase/messaging');\nrequire('@firebase/storage');\nrequire('@firebase/performance');\nrequire('@firebase/analytics');\nrequire('@firebase/remote-config');\n\nvar name = \"firebase\";\nvar version = \"7.14.2\";\n\n/**\r\n * @license\r\n * Copyright 2018 Google Inc.\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\nfirebase.registerVersion(name, version, 'app');\n\nvar name$1 = \"firebase\";\nvar version$1 = \"7.14.2\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\nconsole.warn(\"\\nIt looks like you're using the development build of the Firebase JS SDK.\\nWhen deploying Firebase apps to production, it is advisable to only import\\nthe individual SDK components you intend to use.\\n\\nFor the module builds, these are available in the following manner\\n(replace <PACKAGE> with the name of a component - i.e. auth, database, etc):\\n\\nCommonJS Modules:\\nconst firebase = require('firebase/app');\\nrequire('firebase/<PACKAGE>');\\n\\nES Modules:\\nimport firebase from 'firebase/app';\\nimport 'firebase/<PACKAGE>';\\n\\nTypescript:\\nimport * as firebase from 'firebase/app';\\nimport 'firebase/<PACKAGE>';\\n\");\r\nfirebase.registerVersion(name$1, version$1);\n\nmodule.exports = firebase;\n//# sourceMappingURL=index.cjs.js.map\n","module.exports = require(\"regenerator-runtime\");\n","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __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\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport 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}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","/*!\n * Vue.js v2.6.11\n * (c) 2014-2019 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n return res && (\n res.length === 0 ||\n (res.length === 1 && res[0].isComment) // #9658\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n nodes = this.$slots[name] || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent // activeInstance in lifecycle state\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn)) {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n try {\n cb.call(vm, watcher.value);\n } catch (error) {\n handleError(error, vm, (\"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\"));\n }\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.11';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isPreTag = function (tag) { return tag === 'pre'; };\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\n\nfunction parseFilters (exp) {\n var inSingle = false;\n var inDouble = false;\n var inTemplateString = false;\n var inRegex = false;\n var curly = 0;\n var square = 0;\n var paren = 0;\n var lastFilterIndex = 0;\n var c, prev, i, expression, filters;\n\n for (i = 0; i < exp.length; i++) {\n prev = c;\n c = exp.charCodeAt(i);\n if (inSingle) {\n if (c === 0x27 && prev !== 0x5C) { inSingle = false; }\n } else if (inDouble) {\n if (c === 0x22 && prev !== 0x5C) { inDouble = false; }\n } else if (inTemplateString) {\n if (c === 0x60 && prev !== 0x5C) { inTemplateString = false; }\n } else if (inRegex) {\n if (c === 0x2f && prev !== 0x5C) { inRegex = false; }\n } else if (\n c === 0x7C && // pipe\n exp.charCodeAt(i + 1) !== 0x7C &&\n exp.charCodeAt(i - 1) !== 0x7C &&\n !curly && !square && !paren\n ) {\n if (expression === undefined) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n expression = exp.slice(0, i).trim();\n } else {\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22: inDouble = true; break // \"\n case 0x27: inSingle = true; break // '\n case 0x60: inTemplateString = true; break // `\n case 0x28: paren++; break // (\n case 0x29: paren--; break // )\n case 0x5B: square++; break // [\n case 0x5D: square--; break // ]\n case 0x7B: curly++; break // {\n case 0x7D: curly--; break // }\n }\n if (c === 0x2f) { // /\n var j = i - 1;\n var p = (void 0);\n // find first non-whitespace prev char\n for (; j >= 0; j--) {\n p = exp.charAt(j);\n if (p !== ' ') { break }\n }\n if (!p || !validDivisionCharRE.test(p)) {\n inRegex = true;\n }\n }\n }\n }\n\n if (expression === undefined) {\n expression = exp.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n function pushFilter () {\n (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n lastFilterIndex = i + 1;\n }\n\n if (filters) {\n for (i = 0; i < filters.length; i++) {\n expression = wrapFilter(expression, filters[i]);\n }\n }\n\n return expression\n}\n\nfunction wrapFilter (exp, filter) {\n var i = filter.indexOf('(');\n if (i < 0) {\n // _f: resolveFilter\n return (\"_f(\\\"\" + filter + \"\\\")(\" + exp + \")\")\n } else {\n var name = filter.slice(0, i);\n var args = filter.slice(i + 1);\n return (\"_f(\\\"\" + name + \"\\\")(\" + exp + (args !== ')' ? ',' + args : args))\n }\n}\n\n/* */\n\n\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn (msg, range) {\n console.error((\"[Vue compiler]: \" + msg));\n}\n/* eslint-enable no-unused-vars */\n\nfunction pluckModuleFunction (\n modules,\n key\n) {\n return modules\n ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; })\n : []\n}\n\nfunction addProp (el, name, value, range, dynamic) {\n (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\nfunction addAttr (el, name, value, range, dynamic) {\n var attrs = dynamic\n ? (el.dynamicAttrs || (el.dynamicAttrs = []))\n : (el.attrs || (el.attrs = []));\n attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n el.plain = false;\n}\n\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr (el, name, value, range) {\n el.attrsMap[name] = value;\n el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\n\nfunction addDirective (\n el,\n name,\n rawName,\n value,\n arg,\n isDynamicArg,\n modifiers,\n range\n) {\n (el.directives || (el.directives = [])).push(rangeSetItem({\n name: name,\n rawName: rawName,\n value: value,\n arg: arg,\n isDynamicArg: isDynamicArg,\n modifiers: modifiers\n }, range));\n el.plain = false;\n}\n\nfunction prependModifierMarker (symbol, name, dynamic) {\n return dynamic\n ? (\"_p(\" + name + \",\\\"\" + symbol + \"\\\")\")\n : symbol + name // mark the event as captured\n}\n\nfunction addHandler (\n el,\n name,\n value,\n modifiers,\n important,\n warn,\n range,\n dynamic\n) {\n modifiers = modifiers || emptyObject;\n // warn prevent and passive modifier\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' && warn &&\n modifiers.prevent && modifiers.passive\n ) {\n warn(\n 'passive and prevent can\\'t be used together. ' +\n 'Passive handler can\\'t prevent default event.',\n range\n );\n }\n\n // normalize click.right and click.middle since they don't actually fire\n // this is technically browser-specific, but at least for now browsers are\n // the only target envs that have right/middle clicks.\n if (modifiers.right) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'contextmenu':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'contextmenu';\n delete modifiers.right;\n }\n } else if (modifiers.middle) {\n if (dynamic) {\n name = \"(\" + name + \")==='click'?'mouseup':(\" + name + \")\";\n } else if (name === 'click') {\n name = 'mouseup';\n }\n }\n\n // check capture modifier\n if (modifiers.capture) {\n delete modifiers.capture;\n name = prependModifierMarker('!', name, dynamic);\n }\n if (modifiers.once) {\n delete modifiers.once;\n name = prependModifierMarker('~', name, dynamic);\n }\n /* istanbul ignore if */\n if (modifiers.passive) {\n delete modifiers.passive;\n name = prependModifierMarker('&', name, dynamic);\n }\n\n var events;\n if (modifiers.native) {\n delete modifiers.native;\n events = el.nativeEvents || (el.nativeEvents = {});\n } else {\n events = el.events || (el.events = {});\n }\n\n var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n if (modifiers !== emptyObject) {\n newHandler.modifiers = modifiers;\n }\n\n var handlers = events[name];\n /* istanbul ignore if */\n if (Array.isArray(handlers)) {\n important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n } else if (handlers) {\n events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n } else {\n events[name] = newHandler;\n }\n\n el.plain = false;\n}\n\nfunction getRawBindingAttr (\n el,\n name\n) {\n return el.rawAttrsMap[':' + name] ||\n el.rawAttrsMap['v-bind:' + name] ||\n el.rawAttrsMap[name]\n}\n\nfunction getBindingAttr (\n el,\n name,\n getStatic\n) {\n var dynamicValue =\n getAndRemoveAttr(el, ':' + name) ||\n getAndRemoveAttr(el, 'v-bind:' + name);\n if (dynamicValue != null) {\n return parseFilters(dynamicValue)\n } else if (getStatic !== false) {\n var staticValue = getAndRemoveAttr(el, name);\n if (staticValue != null) {\n return JSON.stringify(staticValue)\n }\n }\n}\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr (\n el,\n name,\n removeFromMap\n) {\n var val;\n if ((val = el.attrsMap[name]) != null) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n if (list[i].name === name) {\n list.splice(i, 1);\n break\n }\n }\n }\n if (removeFromMap) {\n delete el.attrsMap[name];\n }\n return val\n}\n\nfunction getAndRemoveAttrByRegex (\n el,\n name\n) {\n var list = el.attrsList;\n for (var i = 0, l = list.length; i < l; i++) {\n var attr = list[i];\n if (name.test(attr.name)) {\n list.splice(i, 1);\n return attr\n }\n }\n}\n\nfunction rangeSetItem (\n item,\n range\n) {\n if (range) {\n if (range.start != null) {\n item.start = range.start;\n }\n if (range.end != null) {\n item.end = range.end;\n }\n }\n return item\n}\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel (\n el,\n value,\n modifiers\n) {\n var ref = modifiers || {};\n var number = ref.number;\n var trim = ref.trim;\n\n var baseValueExpression = '$$v';\n var valueExpression = baseValueExpression;\n if (trim) {\n valueExpression =\n \"(typeof \" + baseValueExpression + \" === 'string'\" +\n \"? \" + baseValueExpression + \".trim()\" +\n \": \" + baseValueExpression + \")\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n var assignment = genAssignmentCode(value, valueExpression);\n\n el.model = {\n value: (\"(\" + value + \")\"),\n expression: JSON.stringify(value),\n callback: (\"function (\" + baseValueExpression + \") {\" + assignment + \"}\")\n };\n}\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode (\n value,\n assignment\n) {\n var res = parseModel(value);\n if (res.key === null) {\n return (value + \"=\" + assignment)\n } else {\n return (\"$set(\" + (res.exp) + \", \" + (res.key) + \", \" + assignment + \")\")\n }\n}\n\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\n\nvar len, str, chr, index$1, expressionPos, expressionEndPos;\n\n\n\nfunction parseModel (val) {\n // Fix https://github.com/vuejs/vue/pull/7730\n // allow v-model=\"obj.val \" (trailing whitespace)\n val = val.trim();\n len = val.length;\n\n if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n index$1 = val.lastIndexOf('.');\n if (index$1 > -1) {\n return {\n exp: val.slice(0, index$1),\n key: '\"' + val.slice(index$1 + 1) + '\"'\n }\n } else {\n return {\n exp: val,\n key: null\n }\n }\n }\n\n str = val;\n index$1 = expressionPos = expressionEndPos = 0;\n\n while (!eof()) {\n chr = next();\n /* istanbul ignore if */\n if (isStringStart(chr)) {\n parseString(chr);\n } else if (chr === 0x5B) {\n parseBracket(chr);\n }\n }\n\n return {\n exp: val.slice(0, expressionPos),\n key: val.slice(expressionPos + 1, expressionEndPos)\n }\n}\n\nfunction next () {\n return str.charCodeAt(++index$1)\n}\n\nfunction eof () {\n return index$1 >= len\n}\n\nfunction isStringStart (chr) {\n return chr === 0x22 || chr === 0x27\n}\n\nfunction parseBracket (chr) {\n var inBracket = 1;\n expressionPos = index$1;\n while (!eof()) {\n chr = next();\n if (isStringStart(chr)) {\n parseString(chr);\n continue\n }\n if (chr === 0x5B) { inBracket++; }\n if (chr === 0x5D) { inBracket--; }\n if (inBracket === 0) {\n expressionEndPos = index$1;\n break\n }\n }\n}\n\nfunction parseString (chr) {\n var stringQuote = chr;\n while (!eof()) {\n chr = next();\n if (chr === stringQuote) {\n break\n }\n }\n}\n\n/* */\n\nvar warn$1;\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\nfunction model (\n el,\n dir,\n _warn\n) {\n warn$1 = _warn;\n var value = dir.value;\n var modifiers = dir.modifiers;\n var tag = el.tag;\n var type = el.attrsMap.type;\n\n if (process.env.NODE_ENV !== 'production') {\n // inputs with type=\"file\" are read only and setting the input's\n // value will throw an error.\n if (tag === 'input' && type === 'file') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\" type=\\\"file\\\">:\\n\" +\n \"File inputs are read only. Use a v-on:change listener instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n }\n\n if (el.component) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (tag === 'select') {\n genSelect(el, value, modifiers);\n } else if (tag === 'input' && type === 'checkbox') {\n genCheckboxModel(el, value, modifiers);\n } else if (tag === 'input' && type === 'radio') {\n genRadioModel(el, value, modifiers);\n } else if (tag === 'input' || tag === 'textarea') {\n genDefaultModel(el, value, modifiers);\n } else if (!config.isReservedTag(tag)) {\n genComponentModel(el, value, modifiers);\n // component v-model doesn't need extra runtime\n return false\n } else if (process.env.NODE_ENV !== 'production') {\n warn$1(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"v-model is not supported on this element type. \" +\n 'If you are working with contenteditable, it\\'s recommended to ' +\n 'wrap a library dedicated for that purpose inside a custom component.',\n el.rawAttrsMap['v-model']\n );\n }\n\n // ensure runtime directive metadata\n return true\n}\n\nfunction genCheckboxModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n addProp(el, 'checked',\n \"Array.isArray(\" + value + \")\" +\n \"?_i(\" + value + \",\" + valueBinding + \")>-1\" + (\n trueValueBinding === 'true'\n ? (\":(\" + value + \")\")\n : (\":_q(\" + value + \",\" + trueValueBinding + \")\")\n )\n );\n addHandler(el, 'change',\n \"var $$a=\" + value + \",\" +\n '$$el=$event.target,' +\n \"$$c=$$el.checked?(\" + trueValueBinding + \"):(\" + falseValueBinding + \");\" +\n 'if(Array.isArray($$a)){' +\n \"var $$v=\" + (number ? '_n(' + valueBinding + ')' : valueBinding) + \",\" +\n '$$i=_i($$a,$$v);' +\n \"if($$el.checked){$$i<0&&(\" + (genAssignmentCode(value, '$$a.concat([$$v])')) + \")}\" +\n \"else{$$i>-1&&(\" + (genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))')) + \")}\" +\n \"}else{\" + (genAssignmentCode(value, '$$c')) + \"}\",\n null, true\n );\n}\n\nfunction genRadioModel (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var valueBinding = getBindingAttr(el, 'value') || 'null';\n valueBinding = number ? (\"_n(\" + valueBinding + \")\") : valueBinding;\n addProp(el, 'checked', (\"_q(\" + value + \",\" + valueBinding + \")\"));\n addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\n\nfunction genSelect (\n el,\n value,\n modifiers\n) {\n var number = modifiers && modifiers.number;\n var selectedVal = \"Array.prototype.filter\" +\n \".call($event.target.options,function(o){return o.selected})\" +\n \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n \"return \" + (number ? '_n(val)' : 'val') + \"})\";\n\n var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n var code = \"var $$selectedVal = \" + selectedVal + \";\";\n code = code + \" \" + (genAssignmentCode(value, assignment));\n addHandler(el, 'change', code, null, true);\n}\n\nfunction genDefaultModel (\n el,\n value,\n modifiers\n) {\n var type = el.attrsMap.type;\n\n // warn if v-bind:value conflicts with v-model\n // except for inputs with v-bind:type\n if (process.env.NODE_ENV !== 'production') {\n var value$1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n if (value$1 && !typeBinding) {\n var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n warn$1(\n binding + \"=\\\"\" + value$1 + \"\\\" conflicts with v-model on the same element \" +\n 'because the latter already expands to a value binding internally',\n el.rawAttrsMap[binding]\n );\n }\n }\n\n var ref = modifiers || {};\n var lazy = ref.lazy;\n var number = ref.number;\n var trim = ref.trim;\n var needCompositionGuard = !lazy && type !== 'range';\n var event = lazy\n ? 'change'\n : type === 'range'\n ? RANGE_TOKEN\n : 'input';\n\n var valueExpression = '$event.target.value';\n if (trim) {\n valueExpression = \"$event.target.value.trim()\";\n }\n if (number) {\n valueExpression = \"_n(\" + valueExpression + \")\";\n }\n\n var code = genAssignmentCode(value, valueExpression);\n if (needCompositionGuard) {\n code = \"if($event.target.composing)return;\" + code;\n }\n\n addProp(el, 'value', (\"(\" + value + \")\"));\n addHandler(el, event, code, null, true);\n if (trim || number) {\n addHandler(el, 'blur', '$forceUpdate()');\n }\n}\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecesarry `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\nvar buildRegex = cached(function (delimiters) {\n var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g')\n});\n\n\n\nfunction parseText (\n text,\n delimiters\n) {\n var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n if (!tagRE.test(text)) {\n return\n }\n var tokens = [];\n var rawTokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, tokenValue;\n while ((match = tagRE.exec(text))) {\n index = match.index;\n // push text token\n if (index > lastIndex) {\n rawTokens.push(tokenValue = text.slice(lastIndex, index));\n tokens.push(JSON.stringify(tokenValue));\n }\n // tag token\n var exp = parseFilters(match[1].trim());\n tokens.push((\"_s(\" + exp + \")\"));\n rawTokens.push({ '@binding': exp });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n rawTokens.push(tokenValue = text.slice(lastIndex));\n tokens.push(JSON.stringify(tokenValue));\n }\n return {\n expression: tokens.join('+'),\n tokens: rawTokens\n }\n}\n\n/* */\n\nfunction transformNode (el, options) {\n var warn = options.warn || baseWarn;\n var staticClass = getAndRemoveAttr(el, 'class');\n if (process.env.NODE_ENV !== 'production' && staticClass) {\n var res = parseText(staticClass, options.delimiters);\n if (res) {\n warn(\n \"class=\\\"\" + staticClass + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.',\n el.rawAttrsMap['class']\n );\n }\n }\n if (staticClass) {\n el.staticClass = JSON.stringify(staticClass);\n }\n var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n if (classBinding) {\n el.classBinding = classBinding;\n }\n}\n\nfunction genData (el) {\n var data = '';\n if (el.staticClass) {\n data += \"staticClass:\" + (el.staticClass) + \",\";\n }\n if (el.classBinding) {\n data += \"class:\" + (el.classBinding) + \",\";\n }\n return data\n}\n\nvar klass$1 = {\n staticKeys: ['staticClass'],\n transformNode: transformNode,\n genData: genData\n};\n\n/* */\n\nfunction transformNode$1 (el, options) {\n var warn = options.warn || baseWarn;\n var staticStyle = getAndRemoveAttr(el, 'style');\n if (staticStyle) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(staticStyle, options.delimiters);\n if (res) {\n warn(\n \"style=\\\"\" + staticStyle + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.',\n el.rawAttrsMap['style']\n );\n }\n }\n el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n }\n\n var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n if (styleBinding) {\n el.styleBinding = styleBinding;\n }\n}\n\nfunction genData$1 (el) {\n var data = '';\n if (el.staticStyle) {\n data += \"staticStyle:\" + (el.staticStyle) + \",\";\n }\n if (el.styleBinding) {\n data += \"style:(\" + (el.styleBinding) + \"),\";\n }\n return data\n}\n\nvar style$1 = {\n staticKeys: ['staticStyle'],\n transformNode: transformNode$1,\n genData: genData$1\n};\n\n/* */\n\nvar decoder;\n\nvar he = {\n decode: function decode (html) {\n decoder = decoder || document.createElement('div');\n decoder.innerHTML = html;\n return decoder.textContent\n }\n};\n\n/* */\n\nvar isUnaryTag = makeMap(\n 'area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n 'link,meta,param,source,track,wbr'\n);\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap(\n 'colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source'\n);\n\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap(\n 'address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n 'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n 'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n 'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n 'title,tr,track'\n);\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\" + (unicodeRegExp.source) + \"]*\";\nvar qnameCapture = \"((?:\" + ncname + \"\\\\:)?\" + ncname + \")\";\nvar startTagOpen = new RegExp((\"^<\" + qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp((\"^<\\\\/\" + qnameCapture + \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being passed as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\n\nvar decodingMap = {\n '<': '<',\n '>': '>',\n '"': '\"',\n '&': '&',\n ' ': '\\n',\n '	': '\\t',\n ''': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) { return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n'; };\n\nfunction decodeAttr (value, shouldDecodeNewlines) {\n var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n return value.replace(re, function (match) { return decodingMap[match]; })\n}\n\nfunction parseHTML (html, options) {\n var stack = [];\n var expectHTML = options.expectHTML;\n var isUnaryTag$$1 = options.isUnaryTag || no;\n var canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no;\n var index = 0;\n var last, lastTag;\n while (html) {\n last = html;\n // Make sure we're not in a plaintext content element like script/style\n if (!lastTag || !isPlainTextElement(lastTag)) {\n var textEnd = html.indexOf('<');\n if (textEnd === 0) {\n // Comment:\n if (comment.test(html)) {\n var commentEnd = html.indexOf('-->');\n\n if (commentEnd >= 0) {\n if (options.shouldKeepComment) {\n options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n }\n advance(commentEnd + 3);\n continue\n }\n }\n\n // http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n if (conditionalComment.test(html)) {\n var conditionalEnd = html.indexOf(']>');\n\n if (conditionalEnd >= 0) {\n advance(conditionalEnd + 2);\n continue\n }\n }\n\n // Doctype:\n var doctypeMatch = html.match(doctype);\n if (doctypeMatch) {\n advance(doctypeMatch[0].length);\n continue\n }\n\n // End tag:\n var endTagMatch = html.match(endTag);\n if (endTagMatch) {\n var curIndex = index;\n advance(endTagMatch[0].length);\n parseEndTag(endTagMatch[1], curIndex, index);\n continue\n }\n\n // Start tag:\n var startTagMatch = parseStartTag();\n if (startTagMatch) {\n handleStartTag(startTagMatch);\n if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n advance(1);\n }\n continue\n }\n }\n\n var text = (void 0), rest = (void 0), next = (void 0);\n if (textEnd >= 0) {\n rest = html.slice(textEnd);\n while (\n !endTag.test(rest) &&\n !startTagOpen.test(rest) &&\n !comment.test(rest) &&\n !conditionalComment.test(rest)\n ) {\n // < in plain text, be forgiving and treat it as text\n next = rest.indexOf('<', 1);\n if (next < 0) { break }\n textEnd += next;\n rest = html.slice(textEnd);\n }\n text = html.substring(0, textEnd);\n }\n\n if (textEnd < 0) {\n text = html;\n }\n\n if (text) {\n advance(text.length);\n }\n\n if (options.chars && text) {\n options.chars(text, index - text.length, index);\n }\n } else {\n var endTagLength = 0;\n var stackedTag = lastTag.toLowerCase();\n var reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag + '[^>]*>)', 'i'));\n var rest$1 = html.replace(reStackedTag, function (all, text, endTag) {\n endTagLength = endTag.length;\n if (!isPlainTextElement(stackedTag) && stackedTag !== 'noscript') {\n text = text\n .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n }\n if (shouldIgnoreFirstNewline(stackedTag, text)) {\n text = text.slice(1);\n }\n if (options.chars) {\n options.chars(text);\n }\n return ''\n });\n index += html.length - rest$1.length;\n html = rest$1;\n parseEndTag(stackedTag, index - endTagLength, index);\n }\n\n if (html === last) {\n options.chars && options.chars(html);\n if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n options.warn((\"Mal-formatted tag at end of template: \\\"\" + html + \"\\\"\"), { start: index + html.length });\n }\n break\n }\n }\n\n // Clean up any remaining tags\n parseEndTag();\n\n function advance (n) {\n index += n;\n html = html.substring(n);\n }\n\n function parseStartTag () {\n var start = html.match(startTagOpen);\n if (start) {\n var match = {\n tagName: start[1],\n attrs: [],\n start: index\n };\n advance(start[0].length);\n var end, attr;\n while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n attr.start = index;\n advance(attr[0].length);\n attr.end = index;\n match.attrs.push(attr);\n }\n if (end) {\n match.unarySlash = end[1];\n advance(end[0].length);\n match.end = index;\n return match\n }\n }\n }\n\n function handleStartTag (match) {\n var tagName = match.tagName;\n var unarySlash = match.unarySlash;\n\n if (expectHTML) {\n if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n parseEndTag(lastTag);\n }\n if (canBeLeftOpenTag$$1(tagName) && lastTag === tagName) {\n parseEndTag(tagName);\n }\n }\n\n var unary = isUnaryTag$$1(tagName) || !!unarySlash;\n\n var l = match.attrs.length;\n var attrs = new Array(l);\n for (var i = 0; i < l; i++) {\n var args = match.attrs[i];\n var value = args[3] || args[4] || args[5] || '';\n var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n ? options.shouldDecodeNewlinesForHref\n : options.shouldDecodeNewlines;\n attrs[i] = {\n name: args[1],\n value: decodeAttr(value, shouldDecodeNewlines)\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n attrs[i].end = args.end;\n }\n }\n\n if (!unary) {\n stack.push({ tag: tagName, lowerCasedTag: tagName.toLowerCase(), attrs: attrs, start: match.start, end: match.end });\n lastTag = tagName;\n }\n\n if (options.start) {\n options.start(tagName, attrs, unary, match.start, match.end);\n }\n }\n\n function parseEndTag (tagName, start, end) {\n var pos, lowerCasedTagName;\n if (start == null) { start = index; }\n if (end == null) { end = index; }\n\n // Find the closest opened tag of the same type\n if (tagName) {\n lowerCasedTagName = tagName.toLowerCase();\n for (pos = stack.length - 1; pos >= 0; pos--) {\n if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n break\n }\n }\n } else {\n // If no tag name is provided, clean shop\n pos = 0;\n }\n\n if (pos >= 0) {\n // Close all the open elements, up the stack\n for (var i = stack.length - 1; i >= pos; i--) {\n if (process.env.NODE_ENV !== 'production' &&\n (i > pos || !tagName) &&\n options.warn\n ) {\n options.warn(\n (\"tag <\" + (stack[i].tag) + \"> has no matching end tag.\"),\n { start: stack[i].start, end: stack[i].end }\n );\n }\n if (options.end) {\n options.end(stack[i].tag, start, end);\n }\n }\n\n // Remove the open elements from the stack\n stack.length = pos;\n lastTag = pos && stack[pos - 1].tag;\n } else if (lowerCasedTagName === 'br') {\n if (options.start) {\n options.start(tagName, [], true, start, end);\n }\n } else if (lowerCasedTagName === 'p') {\n if (options.start) {\n options.start(tagName, [], false, start, end);\n }\n if (options.end) {\n options.end(tagName, start, end);\n }\n }\n }\n}\n\n/* */\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:|^#/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\n\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\n\nvar slotRE = /^v-slot(:|$)|^#/;\n\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE$1 = /\\s+/g;\n\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\n\nvar decodeHTMLCached = cached(he.decode);\n\nvar emptySlotScopeToken = \"_empty_\";\n\n// configurable state\nvar warn$2;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\n\nfunction createASTElement (\n tag,\n attrs,\n parent\n) {\n return {\n type: 1,\n tag: tag,\n attrsList: attrs,\n attrsMap: makeAttrsMap(attrs),\n rawAttrsMap: {},\n parent: parent,\n children: []\n }\n}\n\n/**\n * Convert HTML string to AST.\n */\nfunction parse (\n template,\n options\n) {\n warn$2 = options.warn || baseWarn;\n\n platformIsPreTag = options.isPreTag || no;\n platformMustUseProp = options.mustUseProp || no;\n platformGetTagNamespace = options.getTagNamespace || no;\n var isReservedTag = options.isReservedTag || no;\n maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n\n transforms = pluckModuleFunction(options.modules, 'transformNode');\n preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n\n delimiters = options.delimiters;\n\n var stack = [];\n var preserveWhitespace = options.preserveWhitespace !== false;\n var whitespaceOption = options.whitespace;\n var root;\n var currentParent;\n var inVPre = false;\n var inPre = false;\n var warned = false;\n\n function warnOnce (msg, range) {\n if (!warned) {\n warned = true;\n warn$2(msg, range);\n }\n }\n\n function closeElement (element) {\n trimEndingWhitespace(element);\n if (!inVPre && !element.processed) {\n element = processElement(element, options);\n }\n // tree management\n if (!stack.length && element !== root) {\n // allow root elements with v-if, v-else-if and v-else\n if (root.if && (element.elseif || element.else)) {\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(element);\n }\n addIfCondition(root, {\n exp: element.elseif,\n block: element\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warnOnce(\n \"Component template should contain exactly one root element. \" +\n \"If you are using v-if on multiple elements, \" +\n \"use v-else-if to chain them instead.\",\n { start: element.start }\n );\n }\n }\n if (currentParent && !element.forbidden) {\n if (element.elseif || element.else) {\n processIfConditions(element, currentParent);\n } else {\n if (element.slotScope) {\n // scoped slot\n // keep it in the children list so that v-else(-if) conditions can\n // find it as the prev node.\n var name = element.slotTarget || '\"default\"'\n ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;\n }\n currentParent.children.push(element);\n element.parent = currentParent;\n }\n }\n\n // final children cleanup\n // filter out scoped slots\n element.children = element.children.filter(function (c) { return !(c).slotScope; });\n // remove trailing whitespace node again\n trimEndingWhitespace(element);\n\n // check pre state\n if (element.pre) {\n inVPre = false;\n }\n if (platformIsPreTag(element.tag)) {\n inPre = false;\n }\n // apply post-transforms\n for (var i = 0; i < postTransforms.length; i++) {\n postTransforms[i](element, options);\n }\n }\n\n function trimEndingWhitespace (el) {\n // remove trailing whitespace node\n if (!inPre) {\n var lastNode;\n while (\n (lastNode = el.children[el.children.length - 1]) &&\n lastNode.type === 3 &&\n lastNode.text === ' '\n ) {\n el.children.pop();\n }\n }\n }\n\n function checkRootConstraints (el) {\n if (el.tag === 'slot' || el.tag === 'template') {\n warnOnce(\n \"Cannot use <\" + (el.tag) + \"> as component root element because it may \" +\n 'contain multiple nodes.',\n { start: el.start }\n );\n }\n if (el.attrsMap.hasOwnProperty('v-for')) {\n warnOnce(\n 'Cannot use v-for on stateful component root element because ' +\n 'it renders multiple elements.',\n el.rawAttrsMap['v-for']\n );\n }\n }\n\n parseHTML(template, {\n warn: warn$2,\n expectHTML: options.expectHTML,\n isUnaryTag: options.isUnaryTag,\n canBeLeftOpenTag: options.canBeLeftOpenTag,\n shouldDecodeNewlines: options.shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n shouldKeepComment: options.comments,\n outputSourceRange: options.outputSourceRange,\n start: function start (tag, attrs, unary, start$1, end) {\n // check namespace.\n // inherit parent ns if there is one\n var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n\n // handle IE svg bug\n /* istanbul ignore if */\n if (isIE && ns === 'svg') {\n attrs = guardIESVGBug(attrs);\n }\n\n var element = createASTElement(tag, attrs, currentParent);\n if (ns) {\n element.ns = ns;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (options.outputSourceRange) {\n element.start = start$1;\n element.end = end;\n element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n cumulated[attr.name] = attr;\n return cumulated\n }, {});\n }\n attrs.forEach(function (attr) {\n if (invalidAttributeRE.test(attr.name)) {\n warn$2(\n \"Invalid dynamic argument expression: attribute names cannot contain \" +\n \"spaces, quotes, <, >, / or =.\",\n {\n start: attr.start + attr.name.indexOf(\"[\"),\n end: attr.start + attr.name.length\n }\n );\n }\n });\n }\n\n if (isForbiddenTag(element) && !isServerRendering()) {\n element.forbidden = true;\n process.env.NODE_ENV !== 'production' && warn$2(\n 'Templates should only be responsible for mapping the state to the ' +\n 'UI. Avoid placing tags with side-effects in your templates, such as ' +\n \"<\" + tag + \">\" + ', as they will not be parsed.',\n { start: element.start }\n );\n }\n\n // apply pre-transforms\n for (var i = 0; i < preTransforms.length; i++) {\n element = preTransforms[i](element, options) || element;\n }\n\n if (!inVPre) {\n processPre(element);\n if (element.pre) {\n inVPre = true;\n }\n }\n if (platformIsPreTag(element.tag)) {\n inPre = true;\n }\n if (inVPre) {\n processRawAttrs(element);\n } else if (!element.processed) {\n // structural directives\n processFor(element);\n processIf(element);\n processOnce(element);\n }\n\n if (!root) {\n root = element;\n if (process.env.NODE_ENV !== 'production') {\n checkRootConstraints(root);\n }\n }\n\n if (!unary) {\n currentParent = element;\n stack.push(element);\n } else {\n closeElement(element);\n }\n },\n\n end: function end (tag, start, end$1) {\n var element = stack[stack.length - 1];\n // pop stack\n stack.length -= 1;\n currentParent = stack[stack.length - 1];\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n element.end = end$1;\n }\n closeElement(element);\n },\n\n chars: function chars (text, start, end) {\n if (!currentParent) {\n if (process.env.NODE_ENV !== 'production') {\n if (text === template) {\n warnOnce(\n 'Component template requires a root element, rather than just text.',\n { start: start }\n );\n } else if ((text = text.trim())) {\n warnOnce(\n (\"text \\\"\" + text + \"\\\" outside root element will be ignored.\"),\n { start: start }\n );\n }\n }\n return\n }\n // IE textarea placeholder bug\n /* istanbul ignore if */\n if (isIE &&\n currentParent.tag === 'textarea' &&\n currentParent.attrsMap.placeholder === text\n ) {\n return\n }\n var children = currentParent.children;\n if (inPre || text.trim()) {\n text = isTextTag(currentParent) ? text : decodeHTMLCached(text);\n } else if (!children.length) {\n // remove the whitespace-only node right after an opening tag\n text = '';\n } else if (whitespaceOption) {\n if (whitespaceOption === 'condense') {\n // in condense mode, remove the whitespace node if it contains\n // line break, otherwise condense to a single space\n text = lineBreakRE.test(text) ? '' : ' ';\n } else {\n text = ' ';\n }\n } else {\n text = preserveWhitespace ? ' ' : '';\n }\n if (text) {\n if (!inPre && whitespaceOption === 'condense') {\n // condense consecutive whitespaces into single space\n text = text.replace(whitespaceRE$1, ' ');\n }\n var res;\n var child;\n if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n child = {\n type: 2,\n expression: res.expression,\n tokens: res.tokens,\n text: text\n };\n } else if (text !== ' ' || !children.length || children[children.length - 1].text !== ' ') {\n child = {\n type: 3,\n text: text\n };\n }\n if (child) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n children.push(child);\n }\n }\n },\n comment: function comment (text, start, end) {\n // adding anyting as a sibling to the root node is forbidden\n // comments should still be allowed, but ignored\n if (currentParent) {\n var child = {\n type: 3,\n text: text,\n isComment: true\n };\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n child.start = start;\n child.end = end;\n }\n currentParent.children.push(child);\n }\n }\n });\n return root\n}\n\nfunction processPre (el) {\n if (getAndRemoveAttr(el, 'v-pre') != null) {\n el.pre = true;\n }\n}\n\nfunction processRawAttrs (el) {\n var list = el.attrsList;\n var len = list.length;\n if (len) {\n var attrs = el.attrs = new Array(len);\n for (var i = 0; i < len; i++) {\n attrs[i] = {\n name: list[i].name,\n value: JSON.stringify(list[i].value)\n };\n if (list[i].start != null) {\n attrs[i].start = list[i].start;\n attrs[i].end = list[i].end;\n }\n }\n } else if (!el.pre) {\n // non root node in pre blocks with no attributes\n el.plain = true;\n }\n}\n\nfunction processElement (\n element,\n options\n) {\n processKey(element);\n\n // determine whether this is a plain element after\n // removing structural attributes\n element.plain = (\n !element.key &&\n !element.scopedSlots &&\n !element.attrsList.length\n );\n\n processRef(element);\n processSlotContent(element);\n processSlotOutlet(element);\n processComponent(element);\n for (var i = 0; i < transforms.length; i++) {\n element = transforms[i](element, options) || element;\n }\n processAttrs(element);\n return element\n}\n\nfunction processKey (el) {\n var exp = getBindingAttr(el, 'key');\n if (exp) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.tag === 'template') {\n warn$2(\n \"<template> cannot be keyed. Place the key on real elements instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n if (el.for) {\n var iterator = el.iterator2 || el.iterator1;\n var parent = el.parent;\n if (iterator && iterator === exp && parent && parent.tag === 'transition-group') {\n warn$2(\n \"Do not use v-for index as key on <transition-group> children, \" +\n \"this is the same as not using keys.\",\n getRawBindingAttr(el, 'key'),\n true /* tip */\n );\n }\n }\n }\n el.key = exp;\n }\n}\n\nfunction processRef (el) {\n var ref = getBindingAttr(el, 'ref');\n if (ref) {\n el.ref = ref;\n el.refInFor = checkInFor(el);\n }\n}\n\nfunction processFor (el) {\n var exp;\n if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n var res = parseFor(exp);\n if (res) {\n extend(el, res);\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n (\"Invalid v-for expression: \" + exp),\n el.rawAttrsMap['v-for']\n );\n }\n }\n}\n\n\n\nfunction parseFor (exp) {\n var inMatch = exp.match(forAliasRE);\n if (!inMatch) { return }\n var res = {};\n res.for = inMatch[2].trim();\n var alias = inMatch[1].trim().replace(stripParensRE, '');\n var iteratorMatch = alias.match(forIteratorRE);\n if (iteratorMatch) {\n res.alias = alias.replace(forIteratorRE, '').trim();\n res.iterator1 = iteratorMatch[1].trim();\n if (iteratorMatch[2]) {\n res.iterator2 = iteratorMatch[2].trim();\n }\n } else {\n res.alias = alias;\n }\n return res\n}\n\nfunction processIf (el) {\n var exp = getAndRemoveAttr(el, 'v-if');\n if (exp) {\n el.if = exp;\n addIfCondition(el, {\n exp: exp,\n block: el\n });\n } else {\n if (getAndRemoveAttr(el, 'v-else') != null) {\n el.else = true;\n }\n var elseif = getAndRemoveAttr(el, 'v-else-if');\n if (elseif) {\n el.elseif = elseif;\n }\n }\n}\n\nfunction processIfConditions (el, parent) {\n var prev = findPrevElement(parent.children);\n if (prev && prev.if) {\n addIfCondition(prev, {\n exp: el.elseif,\n block: el\n });\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-\" + (el.elseif ? ('else-if=\"' + el.elseif + '\"') : 'else') + \" \" +\n \"used on element <\" + (el.tag) + \"> without corresponding v-if.\",\n el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']\n );\n }\n}\n\nfunction findPrevElement (children) {\n var i = children.length;\n while (i--) {\n if (children[i].type === 1) {\n return children[i]\n } else {\n if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n warn$2(\n \"text \\\"\" + (children[i].text.trim()) + \"\\\" between v-if and v-else(-if) \" +\n \"will be ignored.\",\n children[i]\n );\n }\n children.pop();\n }\n }\n}\n\nfunction addIfCondition (el, condition) {\n if (!el.ifConditions) {\n el.ifConditions = [];\n }\n el.ifConditions.push(condition);\n}\n\nfunction processOnce (el) {\n var once$$1 = getAndRemoveAttr(el, 'v-once');\n if (once$$1 != null) {\n el.once = true;\n }\n}\n\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent (el) {\n var slotScope;\n if (el.tag === 'template') {\n slotScope = getAndRemoveAttr(el, 'scope');\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && slotScope) {\n warn$2(\n \"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n \"can also be used on plain elements in addition to <template> to \" +\n \"denote scoped slots.\",\n el.rawAttrsMap['scope'],\n true\n );\n }\n el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n } else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n warn$2(\n \"Ambiguous combined usage of slot-scope and v-for on <\" + (el.tag) + \"> \" +\n \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n \"scoped slot to make it clearer.\",\n el.rawAttrsMap['slot-scope'],\n true\n );\n }\n el.slotScope = slotScope;\n }\n\n // slot=\"xxx\"\n var slotTarget = getBindingAttr(el, 'slot');\n if (slotTarget) {\n el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n // preserve slot as an attribute for native shadow DOM compat\n // only for non-scoped slots.\n if (el.tag !== 'template' && !el.slotScope) {\n addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n }\n }\n\n // 2.6 v-slot syntax\n {\n if (el.tag === 'template') {\n // v-slot on <template>\n var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding) {\n if (process.env.NODE_ENV !== 'production') {\n if (el.slotTarget || el.slotScope) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.parent && !maybeComponent(el.parent)) {\n warn$2(\n \"<template v-slot> can only appear at the root level inside \" +\n \"the receiving component\",\n el\n );\n }\n }\n var ref = getSlotName(slotBinding);\n var name = ref.name;\n var dynamic = ref.dynamic;\n el.slotTarget = name;\n el.slotTargetDynamic = dynamic;\n el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n }\n } else {\n // v-slot on component, denotes default slot\n var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);\n if (slotBinding$1) {\n if (process.env.NODE_ENV !== 'production') {\n if (!maybeComponent(el)) {\n warn$2(\n \"v-slot can only be used on components or <template>.\",\n slotBinding$1\n );\n }\n if (el.slotScope || el.slotTarget) {\n warn$2(\n \"Unexpected mixed usage of different slot syntaxes.\",\n el\n );\n }\n if (el.scopedSlots) {\n warn$2(\n \"To avoid scope ambiguity, the default slot should also use \" +\n \"<template> syntax when there are other named slots.\",\n slotBinding$1\n );\n }\n }\n // add the component's children to its default slot\n var slots = el.scopedSlots || (el.scopedSlots = {});\n var ref$1 = getSlotName(slotBinding$1);\n var name$1 = ref$1.name;\n var dynamic$1 = ref$1.dynamic;\n var slotContainer = slots[name$1] = createASTElement('template', [], el);\n slotContainer.slotTarget = name$1;\n slotContainer.slotTargetDynamic = dynamic$1;\n slotContainer.children = el.children.filter(function (c) {\n if (!c.slotScope) {\n c.parent = slotContainer;\n return true\n }\n });\n slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken;\n // remove children as they are returned from scopedSlots now\n el.children = [];\n // mark el non-plain so data gets generated\n el.plain = false;\n }\n }\n }\n}\n\nfunction getSlotName (binding) {\n var name = binding.name.replace(slotRE, '');\n if (!name) {\n if (binding.name[0] !== '#') {\n name = 'default';\n } else if (process.env.NODE_ENV !== 'production') {\n warn$2(\n \"v-slot shorthand syntax requires a slot name.\",\n binding\n );\n }\n }\n return dynamicArgRE.test(name)\n // dynamic [name]\n ? { name: name.slice(1, -1), dynamic: true }\n // static name\n : { name: (\"\\\"\" + name + \"\\\"\"), dynamic: false }\n}\n\n// handle <slot/> outlets\nfunction processSlotOutlet (el) {\n if (el.tag === 'slot') {\n el.slotName = getBindingAttr(el, 'name');\n if (process.env.NODE_ENV !== 'production' && el.key) {\n warn$2(\n \"`key` does not work on <slot> because slots are abstract outlets \" +\n \"and can possibly expand into multiple elements. \" +\n \"Use the key on a wrapping element instead.\",\n getRawBindingAttr(el, 'key')\n );\n }\n }\n}\n\nfunction processComponent (el) {\n var binding;\n if ((binding = getBindingAttr(el, 'is'))) {\n el.component = binding;\n }\n if (getAndRemoveAttr(el, 'inline-template') != null) {\n el.inlineTemplate = true;\n }\n}\n\nfunction processAttrs (el) {\n var list = el.attrsList;\n var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n for (i = 0, l = list.length; i < l; i++) {\n name = rawName = list[i].name;\n value = list[i].value;\n if (dirRE.test(name)) {\n // mark element as dynamic\n el.hasBindings = true;\n // modifiers\n modifiers = parseModifiers(name.replace(dirRE, ''));\n // support .foo shorthand syntax for the .prop modifier\n if (modifiers) {\n name = name.replace(modifierRE, '');\n }\n if (bindRE.test(name)) { // v-bind\n name = name.replace(bindRE, '');\n value = parseFilters(value);\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n value.trim().length === 0\n ) {\n warn$2(\n (\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\" + name + \"\\\"\")\n );\n }\n if (modifiers) {\n if (modifiers.prop && !isDynamic) {\n name = camelize(name);\n if (name === 'innerHtml') { name = 'innerHTML'; }\n }\n if (modifiers.camel && !isDynamic) {\n name = camelize(name);\n }\n if (modifiers.sync) {\n syncGen = genAssignmentCode(value, \"$event\");\n if (!isDynamic) {\n addHandler(\n el,\n (\"update:\" + (camelize(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n if (hyphenate(name) !== camelize(name)) {\n addHandler(\n el,\n (\"update:\" + (hyphenate(name))),\n syncGen,\n null,\n false,\n warn$2,\n list[i]\n );\n }\n } else {\n // handler w/ dynamic event name\n addHandler(\n el,\n (\"\\\"update:\\\"+(\" + name + \")\"),\n syncGen,\n null,\n false,\n warn$2,\n list[i],\n true // dynamic\n );\n }\n }\n }\n if ((modifiers && modifiers.prop) || (\n !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name)\n )) {\n addProp(el, name, value, list[i], isDynamic);\n } else {\n addAttr(el, name, value, list[i], isDynamic);\n }\n } else if (onRE.test(name)) { // v-on\n name = name.replace(onRE, '');\n isDynamic = dynamicArgRE.test(name);\n if (isDynamic) {\n name = name.slice(1, -1);\n }\n addHandler(el, name, value, modifiers, false, warn$2, list[i], isDynamic);\n } else { // normal directives\n name = name.replace(dirRE, '');\n // parse arg\n var argMatch = name.match(argRE);\n var arg = argMatch && argMatch[1];\n isDynamic = false;\n if (arg) {\n name = name.slice(0, -(arg.length + 1));\n if (dynamicArgRE.test(arg)) {\n arg = arg.slice(1, -1);\n isDynamic = true;\n }\n }\n addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n if (process.env.NODE_ENV !== 'production' && name === 'model') {\n checkForAliasModel(el, value);\n }\n }\n } else {\n // literal attribute\n if (process.env.NODE_ENV !== 'production') {\n var res = parseText(value, delimiters);\n if (res) {\n warn$2(\n name + \"=\\\"\" + value + \"\\\": \" +\n 'Interpolation inside attributes has been removed. ' +\n 'Use v-bind or the colon shorthand instead. For example, ' +\n 'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.',\n list[i]\n );\n }\n }\n addAttr(el, name, JSON.stringify(value), list[i]);\n // #6887 firefox doesn't update muted state if set via attribute\n // even immediately after element creation\n if (!el.component &&\n name === 'muted' &&\n platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n addProp(el, name, 'true', list[i]);\n }\n }\n }\n}\n\nfunction checkInFor (el) {\n var parent = el;\n while (parent) {\n if (parent.for !== undefined) {\n return true\n }\n parent = parent.parent;\n }\n return false\n}\n\nfunction parseModifiers (name) {\n var match = name.match(modifierRE);\n if (match) {\n var ret = {};\n match.forEach(function (m) { ret[m.slice(1)] = true; });\n return ret\n }\n}\n\nfunction makeAttrsMap (attrs) {\n var map = {};\n for (var i = 0, l = attrs.length; i < l; i++) {\n if (\n process.env.NODE_ENV !== 'production' &&\n map[attrs[i].name] && !isIE && !isEdge\n ) {\n warn$2('duplicate attribute: ' + attrs[i].name, attrs[i]);\n }\n map[attrs[i].name] = attrs[i].value;\n }\n return map\n}\n\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag (el) {\n return el.tag === 'script' || el.tag === 'style'\n}\n\nfunction isForbiddenTag (el) {\n return (\n el.tag === 'style' ||\n (el.tag === 'script' && (\n !el.attrsMap.type ||\n el.attrsMap.type === 'text/javascript'\n ))\n )\n}\n\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n\n/* istanbul ignore next */\nfunction guardIESVGBug (attrs) {\n var res = [];\n for (var i = 0; i < attrs.length; i++) {\n var attr = attrs[i];\n if (!ieNSBug.test(attr.name)) {\n attr.name = attr.name.replace(ieNSPrefix, '');\n res.push(attr);\n }\n }\n return res\n}\n\nfunction checkForAliasModel (el, value) {\n var _el = el;\n while (_el) {\n if (_el.for && _el.alias === value) {\n warn$2(\n \"<\" + (el.tag) + \" v-model=\\\"\" + value + \"\\\">: \" +\n \"You are binding v-model directly to a v-for iteration alias. \" +\n \"This will not be able to modify the v-for source array because \" +\n \"writing to the alias is like modifying a function local variable. \" +\n \"Consider using an array of objects and use v-model on an object property instead.\",\n el.rawAttrsMap['v-model']\n );\n }\n _el = _el.parent;\n }\n}\n\n/* */\n\nfunction preTransformNode (el, options) {\n if (el.tag === 'input') {\n var map = el.attrsMap;\n if (!map['v-model']) {\n return\n }\n\n var typeBinding;\n if (map[':type'] || map['v-bind:type']) {\n typeBinding = getBindingAttr(el, 'type');\n }\n if (!map.type && !typeBinding && map['v-bind']) {\n typeBinding = \"(\" + (map['v-bind']) + \").type\";\n }\n\n if (typeBinding) {\n var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n var ifConditionExtra = ifCondition ? (\"&&(\" + ifCondition + \")\") : \"\";\n var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n // 1. checkbox\n var branch0 = cloneASTElement(el);\n // process for on the main node\n processFor(branch0);\n addRawAttr(branch0, 'type', 'checkbox');\n processElement(branch0, options);\n branch0.processed = true; // prevent it from double-processed\n branch0.if = \"(\" + typeBinding + \")==='checkbox'\" + ifConditionExtra;\n addIfCondition(branch0, {\n exp: branch0.if,\n block: branch0\n });\n // 2. add radio else-if condition\n var branch1 = cloneASTElement(el);\n getAndRemoveAttr(branch1, 'v-for', true);\n addRawAttr(branch1, 'type', 'radio');\n processElement(branch1, options);\n addIfCondition(branch0, {\n exp: \"(\" + typeBinding + \")==='radio'\" + ifConditionExtra,\n block: branch1\n });\n // 3. other\n var branch2 = cloneASTElement(el);\n getAndRemoveAttr(branch2, 'v-for', true);\n addRawAttr(branch2, ':type', typeBinding);\n processElement(branch2, options);\n addIfCondition(branch0, {\n exp: ifCondition,\n block: branch2\n });\n\n if (hasElse) {\n branch0.else = true;\n } else if (elseIfCondition) {\n branch0.elseif = elseIfCondition;\n }\n\n return branch0\n }\n }\n}\n\nfunction cloneASTElement (el) {\n return createASTElement(el.tag, el.attrsList.slice(), el.parent)\n}\n\nvar model$1 = {\n preTransformNode: preTransformNode\n};\n\nvar modules$1 = [\n klass$1,\n style$1,\n model$1\n];\n\n/* */\n\nfunction text (el, dir) {\n if (dir.value) {\n addProp(el, 'textContent', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\n/* */\n\nfunction html (el, dir) {\n if (dir.value) {\n addProp(el, 'innerHTML', (\"_s(\" + (dir.value) + \")\"), dir);\n }\n}\n\nvar directives$1 = {\n model: model,\n text: text,\n html: html\n};\n\n/* */\n\nvar baseOptions = {\n expectHTML: true,\n modules: modules$1,\n directives: directives$1,\n isPreTag: isPreTag,\n isUnaryTag: isUnaryTag,\n mustUseProp: mustUseProp,\n canBeLeftOpenTag: canBeLeftOpenTag,\n isReservedTag: isReservedTag,\n getTagNamespace: getTagNamespace,\n staticKeys: genStaticKeys(modules$1)\n};\n\n/* */\n\nvar isStaticKey;\nvar isPlatformReservedTag;\n\nvar genStaticKeysCached = cached(genStaticKeys$1);\n\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n * create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize (root, options) {\n if (!root) { return }\n isStaticKey = genStaticKeysCached(options.staticKeys || '');\n isPlatformReservedTag = options.isReservedTag || no;\n // first pass: mark all non-static nodes.\n markStatic$1(root);\n // second pass: mark static roots.\n markStaticRoots(root, false);\n}\n\nfunction genStaticKeys$1 (keys) {\n return makeMap(\n 'type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n (keys ? ',' + keys : '')\n )\n}\n\nfunction markStatic$1 (node) {\n node.static = isStatic(node);\n if (node.type === 1) {\n // do not make component slot content static. this avoids\n // 1. components not able to mutate slot nodes\n // 2. static slot content fails for hot-reloading\n if (\n !isPlatformReservedTag(node.tag) &&\n node.tag !== 'slot' &&\n node.attrsMap['inline-template'] == null\n ) {\n return\n }\n for (var i = 0, l = node.children.length; i < l; i++) {\n var child = node.children[i];\n markStatic$1(child);\n if (!child.static) {\n node.static = false;\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n var block = node.ifConditions[i$1].block;\n markStatic$1(block);\n if (!block.static) {\n node.static = false;\n }\n }\n }\n }\n}\n\nfunction markStaticRoots (node, isInFor) {\n if (node.type === 1) {\n if (node.static || node.once) {\n node.staticInFor = isInFor;\n }\n // For a node to qualify as a static root, it should have children that\n // are not just static text. Otherwise the cost of hoisting out will\n // outweigh the benefits and it's better off to just always render it fresh.\n if (node.static && node.children.length && !(\n node.children.length === 1 &&\n node.children[0].type === 3\n )) {\n node.staticRoot = true;\n return\n } else {\n node.staticRoot = false;\n }\n if (node.children) {\n for (var i = 0, l = node.children.length; i < l; i++) {\n markStaticRoots(node.children[i], isInFor || !!node.for);\n }\n }\n if (node.ifConditions) {\n for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {\n markStaticRoots(node.ifConditions[i$1].block, isInFor);\n }\n }\n }\n}\n\nfunction isStatic (node) {\n if (node.type === 2) { // expression\n return false\n }\n if (node.type === 3) { // text\n return true\n }\n return !!(node.pre || (\n !node.hasBindings && // no dynamic bindings\n !node.if && !node.for && // not v-if or v-for or v-else\n !isBuiltInTag(node.tag) && // not a built-in\n isPlatformReservedTag(node.tag) && // not a component\n !isDirectChildOfTemplateFor(node) &&\n Object.keys(node).every(isStaticKey)\n ))\n}\n\nfunction isDirectChildOfTemplateFor (node) {\n while (node.parent) {\n node = node.parent;\n if (node.tag !== 'template') {\n return false\n }\n if (node.for) {\n return true\n }\n }\n return false\n}\n\n/* */\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function(?:\\s+[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n esc: 27,\n tab: 9,\n enter: 13,\n space: 32,\n up: 38,\n left: 37,\n right: 39,\n down: 40,\n 'delete': [8, 46]\n};\n\n// KeyboardEvent.key aliases\nvar keyNames = {\n // #7880: IE11 and Edge use `Esc` for Escape key name.\n esc: ['Esc', 'Escape'],\n tab: 'Tab',\n enter: 'Enter',\n // #9112: IE11 uses `Spacebar` for Space key name.\n space: [' ', 'Spacebar'],\n // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n up: ['Up', 'ArrowUp'],\n left: ['Left', 'ArrowLeft'],\n right: ['Right', 'ArrowRight'],\n down: ['Down', 'ArrowDown'],\n // #9112: IE11 uses `Del` for Delete key name.\n 'delete': ['Backspace', 'Delete', 'Del']\n};\n\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return (\"if(\" + condition + \")return null;\"); };\n\nvar modifierCode = {\n stop: '$event.stopPropagation();',\n prevent: '$event.preventDefault();',\n self: genGuard(\"$event.target !== $event.currentTarget\"),\n ctrl: genGuard(\"!$event.ctrlKey\"),\n shift: genGuard(\"!$event.shiftKey\"),\n alt: genGuard(\"!$event.altKey\"),\n meta: genGuard(\"!$event.metaKey\"),\n left: genGuard(\"'button' in $event && $event.button !== 0\"),\n middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\n\nfunction genHandlers (\n events,\n isNative\n) {\n var prefix = isNative ? 'nativeOn:' : 'on:';\n var staticHandlers = \"\";\n var dynamicHandlers = \"\";\n for (var name in events) {\n var handlerCode = genHandler(events[name]);\n if (events[name] && events[name].dynamic) {\n dynamicHandlers += name + \",\" + handlerCode + \",\";\n } else {\n staticHandlers += \"\\\"\" + name + \"\\\":\" + handlerCode + \",\";\n }\n }\n staticHandlers = \"{\" + (staticHandlers.slice(0, -1)) + \"}\";\n if (dynamicHandlers) {\n return prefix + \"_d(\" + staticHandlers + \",[\" + (dynamicHandlers.slice(0, -1)) + \"])\"\n } else {\n return prefix + staticHandlers\n }\n}\n\nfunction genHandler (handler) {\n if (!handler) {\n return 'function(){}'\n }\n\n if (Array.isArray(handler)) {\n return (\"[\" + (handler.map(function (handler) { return genHandler(handler); }).join(',')) + \"]\")\n }\n\n var isMethodPath = simplePathRE.test(handler.value);\n var isFunctionExpression = fnExpRE.test(handler.value);\n var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n\n if (!handler.modifiers) {\n if (isMethodPath || isFunctionExpression) {\n return handler.value\n }\n return (\"function($event){\" + (isFunctionInvocation ? (\"return \" + (handler.value)) : handler.value) + \"}\") // inline statement\n } else {\n var code = '';\n var genModifierCode = '';\n var keys = [];\n for (var key in handler.modifiers) {\n if (modifierCode[key]) {\n genModifierCode += modifierCode[key];\n // left/right\n if (keyCodes[key]) {\n keys.push(key);\n }\n } else if (key === 'exact') {\n var modifiers = (handler.modifiers);\n genModifierCode += genGuard(\n ['ctrl', 'shift', 'alt', 'meta']\n .filter(function (keyModifier) { return !modifiers[keyModifier]; })\n .map(function (keyModifier) { return (\"$event.\" + keyModifier + \"Key\"); })\n .join('||')\n );\n } else {\n keys.push(key);\n }\n }\n if (keys.length) {\n code += genKeyFilter(keys);\n }\n // Make sure modifiers like prevent and stop get executed after key filtering\n if (genModifierCode) {\n code += genModifierCode;\n }\n var handlerCode = isMethodPath\n ? (\"return \" + (handler.value) + \"($event)\")\n : isFunctionExpression\n ? (\"return (\" + (handler.value) + \")($event)\")\n : isFunctionInvocation\n ? (\"return \" + (handler.value))\n : handler.value;\n return (\"function($event){\" + code + handlerCode + \"}\")\n }\n}\n\nfunction genKeyFilter (keys) {\n return (\n // make sure the key filters only apply to KeyboardEvents\n // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n // key events that do not have keyCode property...\n \"if(!$event.type.indexOf('key')&&\" +\n (keys.map(genFilterCode).join('&&')) + \")return null;\"\n )\n}\n\nfunction genFilterCode (key) {\n var keyVal = parseInt(key, 10);\n if (keyVal) {\n return (\"$event.keyCode!==\" + keyVal)\n }\n var keyCode = keyCodes[key];\n var keyName = keyNames[key];\n return (\n \"_k($event.keyCode,\" +\n (JSON.stringify(key)) + \",\" +\n (JSON.stringify(keyCode)) + \",\" +\n \"$event.key,\" +\n \"\" + (JSON.stringify(keyName)) +\n \")\"\n )\n}\n\n/* */\n\nfunction on (el, dir) {\n if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n warn(\"v-on without argument does not support modifiers.\");\n }\n el.wrapListeners = function (code) { return (\"_g(\" + code + \",\" + (dir.value) + \")\"); };\n}\n\n/* */\n\nfunction bind$1 (el, dir) {\n el.wrapData = function (code) {\n return (\"_b(\" + code + \",'\" + (el.tag) + \"',\" + (dir.value) + \",\" + (dir.modifiers && dir.modifiers.prop ? 'true' : 'false') + (dir.modifiers && dir.modifiers.sync ? ',true' : '') + \")\")\n };\n}\n\n/* */\n\nvar baseDirectives = {\n on: on,\n bind: bind$1,\n cloak: noop\n};\n\n/* */\n\n\n\n\n\nvar CodegenState = function CodegenState (options) {\n this.options = options;\n this.warn = options.warn || baseWarn;\n this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n this.directives = extend(extend({}, baseDirectives), options.directives);\n var isReservedTag = options.isReservedTag || no;\n this.maybeComponent = function (el) { return !!el.component || !isReservedTag(el.tag); };\n this.onceId = 0;\n this.staticRenderFns = [];\n this.pre = false;\n};\n\n\n\nfunction generate (\n ast,\n options\n) {\n var state = new CodegenState(options);\n var code = ast ? genElement(ast, state) : '_c(\"div\")';\n return {\n render: (\"with(this){return \" + code + \"}\"),\n staticRenderFns: state.staticRenderFns\n }\n}\n\nfunction genElement (el, state) {\n if (el.parent) {\n el.pre = el.pre || el.parent.pre;\n }\n\n if (el.staticRoot && !el.staticProcessed) {\n return genStatic(el, state)\n } else if (el.once && !el.onceProcessed) {\n return genOnce(el, state)\n } else if (el.for && !el.forProcessed) {\n return genFor(el, state)\n } else if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n return genChildren(el, state) || 'void 0'\n } else if (el.tag === 'slot') {\n return genSlot(el, state)\n } else {\n // component or element\n var code;\n if (el.component) {\n code = genComponent(el.component, el, state);\n } else {\n var data;\n if (!el.plain || (el.pre && state.maybeComponent(el))) {\n data = genData$2(el, state);\n }\n\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n code = \"_c('\" + (el.tag) + \"'\" + (data ? (\",\" + data) : '') + (children ? (\",\" + children) : '') + \")\";\n }\n // module transforms\n for (var i = 0; i < state.transforms.length; i++) {\n code = state.transforms[i](el, code);\n }\n return code\n }\n}\n\n// hoist static sub-trees out\nfunction genStatic (el, state) {\n el.staticProcessed = true;\n // Some elements (templates) need to behave differently inside of a v-pre\n // node. All pre nodes are static roots, so we can use this as a location to\n // wrap a state change and reset it upon exiting the pre node.\n var originalPreState = state.pre;\n if (el.pre) {\n state.pre = el.pre;\n }\n state.staticRenderFns.push((\"with(this){return \" + (genElement(el, state)) + \"}\"));\n state.pre = originalPreState;\n return (\"_m(\" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ',true' : '') + \")\")\n}\n\n// v-once\nfunction genOnce (el, state) {\n el.onceProcessed = true;\n if (el.if && !el.ifProcessed) {\n return genIf(el, state)\n } else if (el.staticInFor) {\n var key = '';\n var parent = el.parent;\n while (parent) {\n if (parent.for) {\n key = parent.key;\n break\n }\n parent = parent.parent;\n }\n if (!key) {\n process.env.NODE_ENV !== 'production' && state.warn(\n \"v-once can only be used inside v-for that is keyed. \",\n el.rawAttrsMap['v-once']\n );\n return genElement(el, state)\n }\n return (\"_o(\" + (genElement(el, state)) + \",\" + (state.onceId++) + \",\" + key + \")\")\n } else {\n return genStatic(el, state)\n }\n}\n\nfunction genIf (\n el,\n state,\n altGen,\n altEmpty\n) {\n el.ifProcessed = true; // avoid recursion\n return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty)\n}\n\nfunction genIfConditions (\n conditions,\n state,\n altGen,\n altEmpty\n) {\n if (!conditions.length) {\n return altEmpty || '_e()'\n }\n\n var condition = conditions.shift();\n if (condition.exp) {\n return (\"(\" + (condition.exp) + \")?\" + (genTernaryExp(condition.block)) + \":\" + (genIfConditions(conditions, state, altGen, altEmpty)))\n } else {\n return (\"\" + (genTernaryExp(condition.block)))\n }\n\n // v-if with v-once should generate code like (a)?_m(0):_m(1)\n function genTernaryExp (el) {\n return altGen\n ? altGen(el, state)\n : el.once\n ? genOnce(el, state)\n : genElement(el, state)\n }\n}\n\nfunction genFor (\n el,\n state,\n altGen,\n altHelper\n) {\n var exp = el.for;\n var alias = el.alias;\n var iterator1 = el.iterator1 ? (\",\" + (el.iterator1)) : '';\n var iterator2 = el.iterator2 ? (\",\" + (el.iterator2)) : '';\n\n if (process.env.NODE_ENV !== 'production' &&\n state.maybeComponent(el) &&\n el.tag !== 'slot' &&\n el.tag !== 'template' &&\n !el.key\n ) {\n state.warn(\n \"<\" + (el.tag) + \" v-for=\\\"\" + alias + \" in \" + exp + \"\\\">: component lists rendered with \" +\n \"v-for should have explicit keys. \" +\n \"See https://vuejs.org/guide/list.html#key for more info.\",\n el.rawAttrsMap['v-for'],\n true /* tip */\n );\n }\n\n el.forProcessed = true; // avoid recursion\n return (altHelper || '_l') + \"((\" + exp + \"),\" +\n \"function(\" + alias + iterator1 + iterator2 + \"){\" +\n \"return \" + ((altGen || genElement)(el, state)) +\n '})'\n}\n\nfunction genData$2 (el, state) {\n var data = '{';\n\n // directives first.\n // directives may mutate the el's other properties before they are generated.\n var dirs = genDirectives(el, state);\n if (dirs) { data += dirs + ','; }\n\n // key\n if (el.key) {\n data += \"key:\" + (el.key) + \",\";\n }\n // ref\n if (el.ref) {\n data += \"ref:\" + (el.ref) + \",\";\n }\n if (el.refInFor) {\n data += \"refInFor:true,\";\n }\n // pre\n if (el.pre) {\n data += \"pre:true,\";\n }\n // record original tag name for components using \"is\" attribute\n if (el.component) {\n data += \"tag:\\\"\" + (el.tag) + \"\\\",\";\n }\n // module data generation functions\n for (var i = 0; i < state.dataGenFns.length; i++) {\n data += state.dataGenFns[i](el);\n }\n // attributes\n if (el.attrs) {\n data += \"attrs:\" + (genProps(el.attrs)) + \",\";\n }\n // DOM props\n if (el.props) {\n data += \"domProps:\" + (genProps(el.props)) + \",\";\n }\n // event handlers\n if (el.events) {\n data += (genHandlers(el.events, false)) + \",\";\n }\n if (el.nativeEvents) {\n data += (genHandlers(el.nativeEvents, true)) + \",\";\n }\n // slot target\n // only for non-scoped slots\n if (el.slotTarget && !el.slotScope) {\n data += \"slot:\" + (el.slotTarget) + \",\";\n }\n // scoped slots\n if (el.scopedSlots) {\n data += (genScopedSlots(el, el.scopedSlots, state)) + \",\";\n }\n // component v-model\n if (el.model) {\n data += \"model:{value:\" + (el.model.value) + \",callback:\" + (el.model.callback) + \",expression:\" + (el.model.expression) + \"},\";\n }\n // inline-template\n if (el.inlineTemplate) {\n var inlineTemplate = genInlineTemplate(el, state);\n if (inlineTemplate) {\n data += inlineTemplate + \",\";\n }\n }\n data = data.replace(/,$/, '') + '}';\n // v-bind dynamic argument wrap\n // v-bind with dynamic arguments must be applied using the same v-bind object\n // merge helper so that class/style/mustUseProp attrs are handled correctly.\n if (el.dynamicAttrs) {\n data = \"_b(\" + data + \",\\\"\" + (el.tag) + \"\\\",\" + (genProps(el.dynamicAttrs)) + \")\";\n }\n // v-bind data wrap\n if (el.wrapData) {\n data = el.wrapData(data);\n }\n // v-on data wrap\n if (el.wrapListeners) {\n data = el.wrapListeners(data);\n }\n return data\n}\n\nfunction genDirectives (el, state) {\n var dirs = el.directives;\n if (!dirs) { return }\n var res = 'directives:[';\n var hasRuntime = false;\n var i, l, dir, needRuntime;\n for (i = 0, l = dirs.length; i < l; i++) {\n dir = dirs[i];\n needRuntime = true;\n var gen = state.directives[dir.name];\n if (gen) {\n // compile-time directive that manipulates AST.\n // returns true if it also needs a runtime counterpart.\n needRuntime = !!gen(el, dir, state.warn);\n }\n if (needRuntime) {\n hasRuntime = true;\n res += \"{name:\\\"\" + (dir.name) + \"\\\",rawName:\\\"\" + (dir.rawName) + \"\\\"\" + (dir.value ? (\",value:(\" + (dir.value) + \"),expression:\" + (JSON.stringify(dir.value))) : '') + (dir.arg ? (\",arg:\" + (dir.isDynamicArg ? dir.arg : (\"\\\"\" + (dir.arg) + \"\\\"\"))) : '') + (dir.modifiers ? (\",modifiers:\" + (JSON.stringify(dir.modifiers))) : '') + \"},\";\n }\n }\n if (hasRuntime) {\n return res.slice(0, -1) + ']'\n }\n}\n\nfunction genInlineTemplate (el, state) {\n var ast = el.children[0];\n if (process.env.NODE_ENV !== 'production' && (\n el.children.length !== 1 || ast.type !== 1\n )) {\n state.warn(\n 'Inline-template components must have exactly one child element.',\n { start: el.start }\n );\n }\n if (ast && ast.type === 1) {\n var inlineRenderFns = generate(ast, state.options);\n return (\"inlineTemplate:{render:function(){\" + (inlineRenderFns.render) + \"},staticRenderFns:[\" + (inlineRenderFns.staticRenderFns.map(function (code) { return (\"function(){\" + code + \"}\"); }).join(',')) + \"]}\")\n }\n}\n\nfunction genScopedSlots (\n el,\n slots,\n state\n) {\n // by default scoped slots are considered \"stable\", this allows child\n // components with only scoped slots to skip forced updates from parent.\n // but in some cases we have to bail-out of this optimization\n // for example if the slot contains dynamic names, has v-if or v-for on them...\n var needsForceUpdate = el.for || Object.keys(slots).some(function (key) {\n var slot = slots[key];\n return (\n slot.slotTargetDynamic ||\n slot.if ||\n slot.for ||\n containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n )\n });\n\n // #9534: if a component with scoped slots is inside a conditional branch,\n // it's possible for the same component to be reused but with different\n // compiled slot content. To avoid that, we generate a unique key based on\n // the generated code of all the slot contents.\n var needsKey = !!el.if;\n\n // OR when it is inside another scoped slot or v-for (the reactivity may be\n // disconnected due to the intermediate scope variable)\n // #9438, #9506\n // TODO: this can be further optimized by properly analyzing in-scope bindings\n // and skip force updating ones that do not actually use scope variables.\n if (!needsForceUpdate) {\n var parent = el.parent;\n while (parent) {\n if (\n (parent.slotScope && parent.slotScope !== emptySlotScopeToken) ||\n parent.for\n ) {\n needsForceUpdate = true;\n break\n }\n if (parent.if) {\n needsKey = true;\n }\n parent = parent.parent;\n }\n }\n\n var generatedSlots = Object.keys(slots)\n .map(function (key) { return genScopedSlot(slots[key], state); })\n .join(',');\n\n return (\"scopedSlots:_u([\" + generatedSlots + \"]\" + (needsForceUpdate ? \",null,true\" : \"\") + (!needsForceUpdate && needsKey ? (\",null,false,\" + (hash(generatedSlots))) : \"\") + \")\")\n}\n\nfunction hash(str) {\n var hash = 5381;\n var i = str.length;\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n return hash >>> 0\n}\n\nfunction containsSlotChild (el) {\n if (el.type === 1) {\n if (el.tag === 'slot') {\n return true\n }\n return el.children.some(containsSlotChild)\n }\n return false\n}\n\nfunction genScopedSlot (\n el,\n state\n) {\n var isLegacySyntax = el.attrsMap['slot-scope'];\n if (el.if && !el.ifProcessed && !isLegacySyntax) {\n return genIf(el, state, genScopedSlot, \"null\")\n }\n if (el.for && !el.forProcessed) {\n return genFor(el, state, genScopedSlot)\n }\n var slotScope = el.slotScope === emptySlotScopeToken\n ? \"\"\n : String(el.slotScope);\n var fn = \"function(\" + slotScope + \"){\" +\n \"return \" + (el.tag === 'template'\n ? el.if && isLegacySyntax\n ? (\"(\" + (el.if) + \")?\" + (genChildren(el, state) || 'undefined') + \":undefined\")\n : genChildren(el, state) || 'undefined'\n : genElement(el, state)) + \"}\";\n // reverse proxy v-slot without scope on this.$slots\n var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n return (\"{key:\" + (el.slotTarget || \"\\\"default\\\"\") + \",fn:\" + fn + reverseProxy + \"}\")\n}\n\nfunction genChildren (\n el,\n state,\n checkSkip,\n altGenElement,\n altGenNode\n) {\n var children = el.children;\n if (children.length) {\n var el$1 = children[0];\n // optimize single v-for\n if (children.length === 1 &&\n el$1.for &&\n el$1.tag !== 'template' &&\n el$1.tag !== 'slot'\n ) {\n var normalizationType = checkSkip\n ? state.maybeComponent(el$1) ? \",1\" : \",0\"\n : \"\";\n return (\"\" + ((altGenElement || genElement)(el$1, state)) + normalizationType)\n }\n var normalizationType$1 = checkSkip\n ? getNormalizationType(children, state.maybeComponent)\n : 0;\n var gen = altGenNode || genNode;\n return (\"[\" + (children.map(function (c) { return gen(c, state); }).join(',')) + \"]\" + (normalizationType$1 ? (\",\" + normalizationType$1) : ''))\n }\n}\n\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType (\n children,\n maybeComponent\n) {\n var res = 0;\n for (var i = 0; i < children.length; i++) {\n var el = children[i];\n if (el.type !== 1) {\n continue\n }\n if (needsNormalization(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n res = 2;\n break\n }\n if (maybeComponent(el) ||\n (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n res = 1;\n }\n }\n return res\n}\n\nfunction needsNormalization (el) {\n return el.for !== undefined || el.tag === 'template' || el.tag === 'slot'\n}\n\nfunction genNode (node, state) {\n if (node.type === 1) {\n return genElement(node, state)\n } else if (node.type === 3 && node.isComment) {\n return genComment(node)\n } else {\n return genText(node)\n }\n}\n\nfunction genText (text) {\n return (\"_v(\" + (text.type === 2\n ? text.expression // no need for () because already wrapped in _s()\n : transformSpecialNewlines(JSON.stringify(text.text))) + \")\")\n}\n\nfunction genComment (comment) {\n return (\"_e(\" + (JSON.stringify(comment.text)) + \")\")\n}\n\nfunction genSlot (el, state) {\n var slotName = el.slotName || '\"default\"';\n var children = genChildren(el, state);\n var res = \"_t(\" + slotName + (children ? (\",\" + children) : '');\n var attrs = el.attrs || el.dynamicAttrs\n ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n // slot props are camelized\n name: camelize(attr.name),\n value: attr.value,\n dynamic: attr.dynamic\n }); }))\n : null;\n var bind$$1 = el.attrsMap['v-bind'];\n if ((attrs || bind$$1) && !children) {\n res += \",null\";\n }\n if (attrs) {\n res += \",\" + attrs;\n }\n if (bind$$1) {\n res += (attrs ? '' : ',null') + \",\" + bind$$1;\n }\n return res + ')'\n}\n\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent (\n componentName,\n el,\n state\n) {\n var children = el.inlineTemplate ? null : genChildren(el, state, true);\n return (\"_c(\" + componentName + \",\" + (genData$2(el, state)) + (children ? (\",\" + children) : '') + \")\")\n}\n\nfunction genProps (props) {\n var staticProps = \"\";\n var dynamicProps = \"\";\n for (var i = 0; i < props.length; i++) {\n var prop = props[i];\n var value = transformSpecialNewlines(prop.value);\n if (prop.dynamic) {\n dynamicProps += (prop.name) + \",\" + value + \",\";\n } else {\n staticProps += \"\\\"\" + (prop.name) + \"\\\":\" + value + \",\";\n }\n }\n staticProps = \"{\" + (staticProps.slice(0, -1)) + \"}\";\n if (dynamicProps) {\n return (\"_d(\" + staticProps + \",[\" + (dynamicProps.slice(0, -1)) + \"])\")\n } else {\n return staticProps\n }\n}\n\n// #3895, #4268\nfunction transformSpecialNewlines (text) {\n return text\n .replace(/\\u2028/g, '\\\\u2028')\n .replace(/\\u2029/g, '\\\\u2029')\n}\n\n/* */\n\n\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' + (\n 'do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n 'super,throw,while,yield,delete,export,import,return,switch,default,' +\n 'extends,finally,continue,debugger,function,arguments'\n).split(',').join('\\\\b|\\\\b') + '\\\\b');\n\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' + (\n 'delete,typeof,void'\n).split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') + '\\\\s*\\\\([^\\\\)]*\\\\)');\n\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n\n// detect problematic expressions in a template\nfunction detectErrors (ast, warn) {\n if (ast) {\n checkNode(ast, warn);\n }\n}\n\nfunction checkNode (node, warn) {\n if (node.type === 1) {\n for (var name in node.attrsMap) {\n if (dirRE.test(name)) {\n var value = node.attrsMap[name];\n if (value) {\n var range = node.rawAttrsMap[name];\n if (name === 'v-for') {\n checkFor(node, (\"v-for=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (name === 'v-slot' || name[0] === '#') {\n checkFunctionParameterExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else if (onRE.test(name)) {\n checkEvent(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n } else {\n checkExpression(value, (name + \"=\\\"\" + value + \"\\\"\"), warn, range);\n }\n }\n }\n }\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n checkNode(node.children[i], warn);\n }\n }\n } else if (node.type === 2) {\n checkExpression(node.expression, node.text, warn, node);\n }\n}\n\nfunction checkEvent (exp, text, warn, range) {\n var stripped = exp.replace(stripStringRE, '');\n var keywordMatch = stripped.match(unaryOperatorsRE);\n if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {\n warn(\n \"avoid using JavaScript unary operator as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\" in expression \" + (text.trim()),\n range\n );\n }\n checkExpression(exp, text, warn, range);\n}\n\nfunction checkFor (node, text, warn, range) {\n checkExpression(node.for || '', text, warn, range);\n checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\n\nfunction checkIdentifier (\n ident,\n type,\n text,\n warn,\n range\n) {\n if (typeof ident === 'string') {\n try {\n new Function((\"var \" + ident + \"=_\"));\n } catch (e) {\n warn((\"invalid \" + type + \" \\\"\" + ident + \"\\\" in expression: \" + (text.trim())), range);\n }\n }\n}\n\nfunction checkExpression (exp, text, warn, range) {\n try {\n new Function((\"return \" + exp));\n } catch (e) {\n var keywordMatch = exp.replace(stripStringRE, '').match(prohibitedKeywordRE);\n if (keywordMatch) {\n warn(\n \"avoid using JavaScript keyword as property name: \" +\n \"\\\"\" + (keywordMatch[0]) + \"\\\"\\n Raw expression: \" + (text.trim()),\n range\n );\n } else {\n warn(\n \"invalid expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n }\n}\n\nfunction checkFunctionParameterExpression (exp, text, warn, range) {\n try {\n new Function(exp, '');\n } catch (e) {\n warn(\n \"invalid function parameter expression: \" + (e.message) + \" in\\n\\n\" +\n \" \" + exp + \"\\n\\n\" +\n \" Raw expression: \" + (text.trim()) + \"\\n\",\n range\n );\n }\n}\n\n/* */\n\nvar range = 2;\n\nfunction generateCodeFrame (\n source,\n start,\n end\n) {\n if ( start === void 0 ) start = 0;\n if ( end === void 0 ) end = source.length;\n\n var lines = source.split(/\\r?\\n/);\n var count = 0;\n var res = [];\n for (var i = 0; i < lines.length; i++) {\n count += lines[i].length + 1;\n if (count >= start) {\n for (var j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length) { continue }\n res.push((\"\" + (j + 1) + (repeat$1(\" \", 3 - String(j + 1).length)) + \"| \" + (lines[j])));\n var lineLength = lines[j].length;\n if (j === i) {\n // push underline\n var pad = start - (count - lineLength) + 1;\n var length = end > count ? lineLength - pad : end - start;\n res.push(\" | \" + repeat$1(\" \", pad) + repeat$1(\"^\", length));\n } else if (j > i) {\n if (end > count) {\n var length$1 = Math.min(end - count, lineLength);\n res.push(\" | \" + repeat$1(\"^\", length$1));\n }\n count += lineLength + 1;\n }\n }\n break\n }\n }\n return res.join('\\n')\n}\n\nfunction repeat$1 (str, n) {\n var result = '';\n if (n > 0) {\n while (true) { // eslint-disable-line\n if (n & 1) { result += str; }\n n >>>= 1;\n if (n <= 0) { break }\n str += str;\n }\n }\n return result\n}\n\n/* */\n\n\n\nfunction createFunction (code, errors) {\n try {\n return new Function(code)\n } catch (err) {\n errors.push({ err: err, code: code });\n return noop\n }\n}\n\nfunction createCompileToFunctionFn (compile) {\n var cache = Object.create(null);\n\n return function compileToFunctions (\n template,\n options,\n vm\n ) {\n options = extend({}, options);\n var warn$$1 = options.warn || warn;\n delete options.warn;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n // detect possible CSP restriction\n try {\n new Function('return 1');\n } catch (e) {\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn$$1(\n 'It seems you are using the standalone build of Vue.js in an ' +\n 'environment with Content Security Policy that prohibits unsafe-eval. ' +\n 'The template compiler cannot work in this environment. Consider ' +\n 'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n 'templates into render functions.'\n );\n }\n }\n }\n\n // check cache\n var key = options.delimiters\n ? String(options.delimiters) + template\n : template;\n if (cache[key]) {\n return cache[key]\n }\n\n // compile\n var compiled = compile(template, options);\n\n // check compilation errors/tips\n if (process.env.NODE_ENV !== 'production') {\n if (compiled.errors && compiled.errors.length) {\n if (options.outputSourceRange) {\n compiled.errors.forEach(function (e) {\n warn$$1(\n \"Error compiling template:\\n\\n\" + (e.msg) + \"\\n\\n\" +\n generateCodeFrame(template, e.start, e.end),\n vm\n );\n });\n } else {\n warn$$1(\n \"Error compiling template:\\n\\n\" + template + \"\\n\\n\" +\n compiled.errors.map(function (e) { return (\"- \" + e); }).join('\\n') + '\\n',\n vm\n );\n }\n }\n if (compiled.tips && compiled.tips.length) {\n if (options.outputSourceRange) {\n compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n } else {\n compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n }\n }\n }\n\n // turn code into functions\n var res = {};\n var fnGenErrors = [];\n res.render = createFunction(compiled.render, fnGenErrors);\n res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n return createFunction(code, fnGenErrors)\n });\n\n // check function generation errors.\n // this should only happen if there is a bug in the compiler itself.\n // mostly for codegen development use\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n warn$$1(\n \"Failed to generate render function:\\n\\n\" +\n fnGenErrors.map(function (ref) {\n var err = ref.err;\n var code = ref.code;\n\n return ((err.toString()) + \" in\\n\\n\" + code + \"\\n\");\n }).join('\\n'),\n vm\n );\n }\n }\n\n return (cache[key] = res)\n }\n}\n\n/* */\n\nfunction createCompilerCreator (baseCompile) {\n return function createCompiler (baseOptions) {\n function compile (\n template,\n options\n ) {\n var finalOptions = Object.create(baseOptions);\n var errors = [];\n var tips = [];\n\n var warn = function (msg, range, tip) {\n (tip ? tips : errors).push(msg);\n };\n\n if (options) {\n if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n // $flow-disable-line\n var leadingSpaceLength = template.match(/^\\s*/)[0].length;\n\n warn = function (msg, range, tip) {\n var data = { msg: msg };\n if (range) {\n if (range.start != null) {\n data.start = range.start + leadingSpaceLength;\n }\n if (range.end != null) {\n data.end = range.end + leadingSpaceLength;\n }\n }\n (tip ? tips : errors).push(data);\n };\n }\n // merge custom modules\n if (options.modules) {\n finalOptions.modules =\n (baseOptions.modules || []).concat(options.modules);\n }\n // merge custom directives\n if (options.directives) {\n finalOptions.directives = extend(\n Object.create(baseOptions.directives || null),\n options.directives\n );\n }\n // copy other options\n for (var key in options) {\n if (key !== 'modules' && key !== 'directives') {\n finalOptions[key] = options[key];\n }\n }\n }\n\n finalOptions.warn = warn;\n\n var compiled = baseCompile(template.trim(), finalOptions);\n if (process.env.NODE_ENV !== 'production') {\n detectErrors(compiled.ast, warn);\n }\n compiled.errors = errors;\n compiled.tips = tips;\n return compiled\n }\n\n return {\n compile: compile,\n compileToFunctions: createCompileToFunctionFn(compile)\n }\n }\n}\n\n/* */\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile (\n template,\n options\n) {\n var ast = parse(template.trim(), options);\n if (options.optimize !== false) {\n optimize(ast, options);\n }\n var code = generate(ast, options);\n return {\n ast: ast,\n render: code.render,\n staticRenderFns: code.staticRenderFns\n }\n});\n\n/* */\n\nvar ref$1 = createCompiler(baseOptions);\nvar compile = ref$1.compile;\nvar compileToFunctions = ref$1.compileToFunctions;\n\n/* */\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode (href) {\n div = div || document.createElement('div');\n div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n return div.innerHTML.indexOf(' ') > 0\n}\n\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser ? getShouldDecode(true) : false;\n\n/* */\n\nvar idToTemplate = cached(function (id) {\n var el = query(id);\n return el && el.innerHTML\n});\n\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && query(el);\n\n /* istanbul ignore if */\n if (el === document.body || el === document.documentElement) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Do not mount Vue to <html> or <body> - mount to normal elements instead.\"\n );\n return this\n }\n\n var options = this.$options;\n // resolve template/el and convert to render function\n if (!options.render) {\n var template = options.template;\n if (template) {\n if (typeof template === 'string') {\n if (template.charAt(0) === '#') {\n template = idToTemplate(template);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !template) {\n warn(\n (\"Template element not found or is empty: \" + (options.template)),\n this\n );\n }\n }\n } else if (template.nodeType) {\n template = template.innerHTML;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn('invalid template option:' + template, this);\n }\n return this\n }\n } else if (el) {\n template = getOuterHTML(el);\n }\n if (template) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile');\n }\n\n var ref = compileToFunctions(template, {\n outputSourceRange: process.env.NODE_ENV !== 'production',\n shouldDecodeNewlines: shouldDecodeNewlines,\n shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n delimiters: options.delimiters,\n comments: options.comments\n }, this);\n var render = ref.render;\n var staticRenderFns = ref.staticRenderFns;\n options.render = render;\n options.staticRenderFns = staticRenderFns;\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n mark('compile end');\n measure((\"vue \" + (this._name) + \" compile\"), 'compile', 'compile end');\n }\n }\n }\n return mount.call(this, el, hydrating)\n};\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML (el) {\n if (el.outerHTML) {\n return el.outerHTML\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML\n }\n}\n\nVue.compile = compileToFunctions;\n\nexport default Vue;\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n nwjs: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n const nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron || nwjs;\n if (device.desktop) {\n device.electron = electron;\n device.nwjs = nwjs;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Color Scheme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n device.prefersColorScheme = function prefersColorTheme() {\n let theme;\n if (window.matchMedia && window.matchMedia(LIGHT).matches) {\n theme = 'light';\n }\n if (window.matchMedia && window.matchMedia(DARK).matches) {\n theme = 'dark';\n }\n return theme;\n };\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n\n intersectionObserver: (function checkObserver() {\n return ('IntersectionObserver' in window);\n }()),\n };\n}());\n\nexport default Support;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar component = require('@firebase/component');\nvar logger$1 = require('@firebase/logger');\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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[\"no-app\" /* NO_APP */] = \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n _a[\"bad-app-name\" /* BAD_APP_NAME */] = \"Illegal App name: '{$appName}\",\r\n _a[\"duplicate-app\" /* DUPLICATE_APP */] = \"Firebase App named '{$appName}' already exists\",\r\n _a[\"app-deleted\" /* APP_DELETED */] = \"Firebase App named '{$appName}' already deleted\",\r\n _a[\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */] = 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n _a[\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */] = 'First argument to `onLog` must be null or a function.',\r\n _a);\r\nvar ERROR_FACTORY = new util.ErrorFactory('app', 'Firebase', ERRORS);\n\nvar name$1 = \"@firebase/app\";\nvar version = \"0.6.2\";\n\nvar name$2 = \"@firebase/analytics\";\n\nvar name$3 = \"@firebase/auth\";\n\nvar name$4 = \"@firebase/database\";\n\nvar name$5 = \"@firebase/functions\";\n\nvar name$6 = \"@firebase/installations\";\n\nvar name$7 = \"@firebase/messaging\";\n\nvar name$8 = \"@firebase/performance\";\n\nvar name$9 = \"@firebase/remote-config\";\n\nvar name$a = \"@firebase/storage\";\n\nvar name$b = \"@firebase/firestore\";\n\nvar name$c = \"firebase-wrapper\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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$1;\r\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nvar PLATFORM_LOG_STRING = (_a$1 = {},\r\n _a$1[name$1] = 'fire-core',\r\n _a$1[name$2] = 'fire-analytics',\r\n _a$1[name$3] = 'fire-auth',\r\n _a$1[name$4] = 'fire-rtdb',\r\n _a$1[name$5] = 'fire-fn',\r\n _a$1[name$6] = 'fire-iid',\r\n _a$1[name$7] = 'fire-fcm',\r\n _a$1[name$8] = 'fire-perf',\r\n _a$1[name$9] = 'fire-rc',\r\n _a$1[name$a] = 'fire-gcs',\r\n _a$1[name$b] = 'fire-fst',\r\n _a$1['fire-js'] = 'fire-js',\r\n _a$1[name$c] = 'fire-js-all',\r\n _a$1);\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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');\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Global context object for a collection of services using\r\n * a shared authentication state.\r\n */\r\nvar FirebaseAppImpl = /** @class */ (function () {\r\n function FirebaseAppImpl(options, config, firebase_) {\r\n var e_1, _a;\r\n var _this = this;\r\n this.firebase_ = firebase_;\r\n this.isDeleted_ = false;\r\n this.name_ = config.name;\r\n this.automaticDataCollectionEnabled_ =\r\n config.automaticDataCollectionEnabled || false;\r\n this.options_ = util.deepCopy(options);\r\n this.container = new component.ComponentContainer(config.name);\r\n // add itself to container\r\n this._addComponent(new component.Component('app', function () { return _this; }, \"PUBLIC\" /* PUBLIC */));\r\n try {\r\n // populate ComponentContainer with existing components\r\n for (var _b = tslib.__values(this.firebase_.INTERNAL.components.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var component$1 = _c.value;\r\n this._addComponent(component$1);\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 Object.defineProperty(FirebaseAppImpl.prototype, \"automaticDataCollectionEnabled\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this.automaticDataCollectionEnabled_;\r\n },\r\n set: function (val) {\r\n this.checkDestroyed_();\r\n this.automaticDataCollectionEnabled_ = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this.name_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\r\n get: function () {\r\n this.checkDestroyed_();\r\n return this.options_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FirebaseAppImpl.prototype.delete = function () {\r\n var _this = this;\r\n return new Promise(function (resolve) {\r\n _this.checkDestroyed_();\r\n resolve();\r\n })\r\n .then(function () {\r\n _this.firebase_.INTERNAL.removeApp(_this.name_);\r\n return Promise.all(_this.container.getProviders().map(function (provider) { return provider.delete(); }));\r\n })\r\n .then(function () {\r\n _this.isDeleted_ = true;\r\n });\r\n };\r\n /**\r\n * Return a service instance associated with this app (creating it\r\n * on demand), identified by the passed instanceIdentifier.\r\n *\r\n * NOTE: Currently storage and functions are the only ones that are leveraging this\r\n * functionality. They invoke it by calling:\r\n *\r\n * ```javascript\r\n * firebase.app().storage('STORAGE BUCKET ID')\r\n * ```\r\n *\r\n * The service name is passed to this already\r\n * @internal\r\n */\r\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\r\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\r\n this.checkDestroyed_();\r\n // getImmediate will always succeed because _getService is only called for registered components.\r\n return this.container.getProvider(name).getImmediate({\r\n identifier: instanceIdentifier\r\n });\r\n };\r\n /**\r\n * Remove a service instance from the cache, so we will create a new instance for this service\r\n * when people try to get this service again.\r\n *\r\n * NOTE: currently only firestore is using this functionality to support firestore shutdown.\r\n *\r\n * @param name The service name\r\n * @param instanceIdentifier instance identifier in case multiple instances are allowed\r\n * @internal\r\n */\r\n FirebaseAppImpl.prototype._removeServiceInstance = function (name, instanceIdentifier) {\r\n if (instanceIdentifier === void 0) { instanceIdentifier = DEFAULT_ENTRY_NAME; }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.container.getProvider(name).clearInstance(instanceIdentifier);\r\n };\r\n /**\r\n * @param component the component being added to this app's container\r\n */\r\n FirebaseAppImpl.prototype._addComponent = function (component) {\r\n try {\r\n this.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(\"Component \" + component.name + \" failed to register with FirebaseApp \" + this.name, e);\r\n }\r\n };\r\n FirebaseAppImpl.prototype._addOrOverwriteComponent = function (component) {\r\n this.container.addOrOverwriteComponent(component);\r\n };\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\r\n if (this.isDeleted_) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: this.name_ });\r\n }\r\n };\r\n return FirebaseAppImpl;\r\n}());\r\n// Prevent dead-code elimination of these methods w/o invalid property\r\n// copying.\r\n(FirebaseAppImpl.prototype.name && FirebaseAppImpl.prototype.options) ||\r\n FirebaseAppImpl.prototype.delete ||\r\n console.log('dc');\n\nvar version$1 = \"7.14.1\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Because auth can't share code with other components, we attach the utility functions\r\n * in an internal namespace to share code.\r\n * This function return a firebase namespace object without\r\n * any utility functions, so it can be shared between the regular firebaseNamespace and\r\n * the lite version.\r\n */\r\nfunction createFirebaseNamespaceCore(firebaseAppImpl) {\r\n var apps = {};\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var components = new Map();\r\n // A namespace is a plain JavaScript Object.\r\n var namespace = {\r\n // Hack to prevent Babel from modifying the object returned\r\n // as the firebase namespace.\r\n // @ts-ignore\r\n __esModule: true,\r\n initializeApp: initializeApp,\r\n // @ts-ignore\r\n app: app,\r\n registerVersion: registerVersion,\r\n setLogLevel: logger$1.setLogLevel,\r\n onLog: onLog,\r\n // @ts-ignore\r\n apps: null,\r\n SDK_VERSION: version$1,\r\n INTERNAL: {\r\n registerComponent: registerComponent,\r\n removeApp: removeApp,\r\n components: components,\r\n useAsService: useAsService\r\n }\r\n };\r\n // Inject a circular default export to allow Babel users who were previously\r\n // using:\r\n //\r\n // import firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase').default;\r\n //\r\n // instead of\r\n //\r\n // import * as firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace['default'] = namespace;\r\n // firebase.apps is a read-only getter.\r\n Object.defineProperty(namespace, 'apps', {\r\n get: getApps\r\n });\r\n /**\r\n * Called by App.delete() - but before any services associated with the App\r\n * are deleted.\r\n */\r\n function removeApp(name) {\r\n delete apps[name];\r\n }\r\n /**\r\n * Get the App object for a given name (or DEFAULT).\r\n */\r\n function app(name) {\r\n name = name || DEFAULT_ENTRY_NAME;\r\n if (!util.contains(apps, name)) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return apps[name];\r\n }\r\n // @ts-ignore\r\n app['App'] = firebaseAppImpl;\r\n function initializeApp(options, rawConfig) {\r\n if (rawConfig === void 0) { rawConfig = {}; }\r\n if (typeof rawConfig !== 'object' || rawConfig === null) {\r\n var name_1 = rawConfig;\r\n rawConfig = { name: name_1 };\r\n }\r\n var config = rawConfig;\r\n if (config.name === undefined) {\r\n config.name = DEFAULT_ENTRY_NAME;\r\n }\r\n var name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n if (util.contains(apps, name)) {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n var app = new firebaseAppImpl(options, config, namespace);\r\n apps[name] = app;\r\n return app;\r\n }\r\n /*\r\n * Return an array of all the non-deleted FirebaseApps.\r\n */\r\n function getApps() {\r\n // Make a copy so caller cannot mutate the apps list.\r\n return Object.keys(apps).map(function (name) { return apps[name]; });\r\n }\r\n function registerComponent(component) {\r\n var e_1, _a;\r\n var componentName = component.name;\r\n if (components.has(componentName)) {\r\n logger.debug(\"There were multiple attempts to register component \" + componentName + \".\");\r\n return component.type === \"PUBLIC\" /* PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName]\r\n : null;\r\n }\r\n components.set(componentName, component);\r\n // create service namespace for public components\r\n if (component.type === \"PUBLIC\" /* PUBLIC */) {\r\n // The Service namespace is an accessor function ...\r\n var serviceNamespace = function (appArg) {\r\n if (appArg === void 0) { appArg = app(); }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof appArg[componentName] !== 'function') {\r\n // Invalid argument.\r\n // This happens in the following case: firebase.storage('gs:/')\r\n throw ERROR_FACTORY.create(\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */, {\r\n appName: componentName\r\n });\r\n }\r\n // Forward service instance lookup to the FirebaseApp.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return appArg[componentName]();\r\n };\r\n // ... and a container for service-level properties.\r\n if (component.serviceProps !== undefined) {\r\n util.deepExtend(serviceNamespace, component.serviceProps);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName] = serviceNamespace;\r\n // Patch the FirebaseAppImpl prototype\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n firebaseAppImpl.prototype[componentName] =\r\n // TODO: The eslint disable can be removed and the 'ignoreRestArgs'\r\n // option added to the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n 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 serviceFxn = this._getService.bind(this, componentName);\r\n return serviceFxn.apply(this, component.multipleInstances ? args : []);\r\n };\r\n }\r\n try {\r\n // add the component to existing app instances\r\n for (var _b = tslib.__values(Object.keys(apps)), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var appName = _c.value;\r\n apps[appName]._addComponent(component);\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 component.type === \"PUBLIC\" /* PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentName]\r\n : null;\r\n }\r\n function registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n var library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += \"-\" + variant;\r\n }\r\n var libraryMismatch = library.match(/\\s|\\//);\r\n var versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n var warning = [\r\n \"Unable to register library \\\"\" + library + \"\\\" with version \\\"\" + version + \"\\\":\"\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(\"library name \\\"\" + library + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(\"version name \\\"\" + version + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n registerComponent(new component.Component(library + \"-version\", function () { return ({ library: library, version: version }); }, \"VERSION\" /* VERSION */));\r\n }\r\n function onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */, {\r\n appName: name\r\n });\r\n }\r\n logger$1.setUserLogHandler(logCallback, options);\r\n }\r\n // Map the requested service to a registered service name\r\n // (used to map auth to serverAuth service when needed).\r\n function useAsService(app, name) {\r\n if (name === 'serverAuth') {\r\n return null;\r\n }\r\n var useService = name;\r\n return useService;\r\n }\r\n return namespace;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Return a firebase namespace object.\r\n *\r\n * In production, this will be called exactly once and the result\r\n * assigned to the 'firebase' global. It may be called multiple times\r\n * in unit tests.\r\n */\r\nfunction createFirebaseNamespace() {\r\n var namespace = createFirebaseNamespaceCore(FirebaseAppImpl);\r\n namespace.INTERNAL = tslib.__assign(tslib.__assign({}, namespace.INTERNAL), { createFirebaseNamespace: createFirebaseNamespace,\r\n extendNamespace: extendNamespace,\r\n createSubscribe: util.createSubscribe,\r\n ErrorFactory: util.ErrorFactory,\r\n deepExtend: util.deepExtend });\r\n /**\r\n * Patch the top-level firebase namespace with additional properties.\r\n *\r\n * firebase.INTERNAL.extendNamespace()\r\n */\r\n function extendNamespace(props) {\r\n util.deepExtend(namespace, props);\r\n }\r\n return namespace;\r\n}\r\nvar firebase = createFirebaseNamespace();\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 PlatformLoggerService = /** @class */ (function () {\r\n function PlatformLoggerService(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n PlatformLoggerService.prototype.getPlatformInfoString = function () {\r\n var providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(function (provider) {\r\n if (isVersionServiceProvider(provider)) {\r\n var service = provider.getImmediate();\r\n return service.library + \"/\" + service.version;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(function (logString) { return logString; })\r\n .join(' ');\r\n };\r\n return PlatformLoggerService;\r\n}());\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n var component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 registerCoreComponents(firebase, variant) {\r\n firebase.INTERNAL.registerComponent(new component.Component('platform-logger', function (container) { return new PlatformLoggerService(container); }, \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n firebase.registerVersion(name$1, version, variant);\r\n // Register platform SDK identifier (no version).\r\n firebase.registerVersion('fire-js', '');\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// Firebase Lite detection test\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nif (util.isBrowser() && self.firebase !== undefined) {\r\n logger.warn(\"\\n Warning: Firebase is already defined in the global scope. Please make sure\\n Firebase library is only loaded once.\\n \");\r\n // eslint-disable-next-line\r\n var sdkVersion = self.firebase.SDK_VERSION;\r\n if (sdkVersion && sdkVersion.indexOf('LITE') >= 0) {\r\n logger.warn(\"\\n Warning: You are trying to load Firebase while using Firebase Performance standalone script.\\n You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.\\n \");\r\n }\r\n}\r\nvar initializeApp = firebase.initializeApp;\r\n// TODO: This disable can be removed and the 'ignoreRestArgs' option added to\r\n// the no-explicit-any rule when ESlint releases it.\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfirebase.initializeApp = 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 // Environment check before initializing app\r\n // Do the check in initializeApp, so people have a chance to disable it by setting logLevel\r\n // in @firebase/logger\r\n if (util.isNode()) {\r\n logger.warn(\"\\n Warning: This is a browser-targeted Firebase bundle but it appears it is being\\n run in a Node environment. If running in a Node environment, make sure you\\n are using the bundle specified by the \\\"main\\\" field in package.json.\\n \\n If you are using Webpack, you can specify \\\"main\\\" as the first item in\\n \\\"resolve.mainFields\\\":\\n https://webpack.js.org/configuration/resolve/#resolvemainfields\\n \\n If using Rollup, use the rollup-plugin-node-resolve plugin and specify \\\"main\\\"\\n as the first item in \\\"mainFields\\\", e.g. ['main', 'module'].\\n https://github.com/rollup/rollup-plugin-node-resolve\\n \");\r\n }\r\n return initializeApp.apply(undefined, args);\r\n};\r\nvar firebase$1 = firebase;\r\nregisterCoreComponents(firebase$1);\n\nexports.default = firebase$1;\nexports.firebase = firebase$1;\n//# sourceMappingURL=index.cjs.js.map\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}\n\nmodule.exports = _objectDestructuringEmpty;","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\n\nvar name = \"firebase\";\nvar version = \"7.14.2\";\n\n/**\r\n * @license\r\n * Copyright 2018 Google Inc.\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\nfirebase.registerVersion(name, version, 'app');\n\nmodule.exports = firebase;\n//# sourceMappingURL=index.cjs.js.map\n","var 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","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tslib = require('tslib');\nvar util = require('@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 }\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 return Component;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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 }\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 (identifier === void 0) { identifier = DEFAULT_ENTRY_NAME; }\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 util.Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n // If the service instance is available, resolve the promise with it immediately\r\n try {\r\n var instance = this.getOrInitializeService(normalizedIdentifier);\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 return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n };\r\n Provider.prototype.getImmediate = function (options) {\r\n var _a = tslib.__assign({ identifier: DEFAULT_ENTRY_NAME, optional: false }, options), identifier = _a.identifier, optional = _a.optional;\r\n // if multipleInstances is not supported, use the default name\r\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n try {\r\n var instance = this.getOrInitializeService(normalizedIdentifier);\r\n if (!instance) {\r\n if (optional) {\r\n return null;\r\n }\r\n throw Error(\"Service \" + this.name + \" is not available\");\r\n }\r\n return instance;\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 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 // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService(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 = tslib.__values(this.instancesDeferred.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = tslib.__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(normalizedIdentifier);\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.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 tslib.__awaiter(this, void 0, void 0, function () {\r\n var services;\r\n return tslib.__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(services\r\n .filter(function (service) { return 'INTERNAL' in service; })\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(function (service) { return service.INTERNAL.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.getOrInitializeService = function (identifier) {\r\n var instance = this.instances.get(identifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, normalizeIdentifierForFactory(identifier));\r\n this.instances.set(identifier, instance);\r\n }\r\n return instance || null;\r\n };\r\n Provider.prototype.normalizeInstanceIdentifier = function (identifier) {\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 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 Inc.\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\nexports.Component = Component;\nexports.ComponentContainer = ComponentContainer;\nexports.Provider = Provider;\n//# sourceMappingURL=index.cjs.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tslib = require('tslib');\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nvar CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 an error if the provided assertion is falsy\r\n */\r\nvar assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nvar assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 stringToByteArray = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n var out = [];\r\n var p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nvar byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n var out = [];\r\n var pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n var c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n var c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n var c2 = bytes[pos++];\r\n var c3 = bytes[pos++];\r\n var c4 = bytes[pos++];\r\n var u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n var c2 = bytes[pos++];\r\n var c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nvar base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray: function (input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n var byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n var output = [];\r\n for (var i = 0; i < input.length; i += 3) {\r\n var byte1 = input[i];\r\n var haveByte2 = i + 1 < input.length;\r\n var byte2 = haveByte2 ? input[i + 1] : 0;\r\n var haveByte3 = i + 2 < input.length;\r\n var byte3 = haveByte3 ? input[i + 2] : 0;\r\n var outByte1 = byte1 >> 2;\r\n var outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n var outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n var outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString: function (input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString: function (input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray: function (input, webSafe) {\r\n this.init_();\r\n var charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n var output = [];\r\n for (var i = 0; i < input.length;) {\r\n var byte1 = charToByteMap[input.charAt(i++)];\r\n var haveByte2 = i < input.length;\r\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n var haveByte3 = i < input.length;\r\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n var haveByte4 = i < input.length;\r\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n var outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n var outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n var outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_: function () {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nvar base64Encode = function (str) {\r\n var utf8Bytes = stringToByteArray(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nvar base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n var dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (var prop in source) {\r\n if (!source.hasOwnProperty(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Deferred = /** @class */ (function () {\r\n function Deferred() {\r\n var _this = this;\r\n this.reject = function () { };\r\n this.resolve = function () { };\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = resolve;\r\n _this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n Deferred.prototype.wrapCallback = function (callback) {\r\n var _this = this;\r\n return function (error, value) {\r\n if (error) {\r\n _this.reject(error);\r\n }\r\n else {\r\n _this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n _this.promise.catch(function () { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n };\r\n return Deferred;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n var runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n var ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nvar FirebaseError = /** @class */ (function (_super) {\r\n tslib.__extends(FirebaseError, _super);\r\n function FirebaseError(code, message) {\r\n var _this = _super.call(this, message) || this;\r\n _this.code = code;\r\n _this.name = ERROR_NAME;\r\n // Fix For ES5\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, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(_this, ErrorFactory.prototype.create);\r\n }\r\n return _this;\r\n }\r\n return FirebaseError;\r\n}(Error));\r\nvar ErrorFactory = /** @class */ (function () {\r\n function ErrorFactory(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n ErrorFactory.prototype.create = function (code) {\r\n var data = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n data[_i - 1] = arguments[_i];\r\n }\r\n var customData = data[0] || {};\r\n var fullCode = this.service + \"/\" + code;\r\n var template = this.errors[code];\r\n var message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n var fullMessage = this.serviceName + \": \" + message + \" (\" + fullCode + \").\";\r\n var error = new FirebaseError(fullCode, fullMessage);\r\n // Keys with an underscore at the end of their name are not included in\r\n // error.data for some reason.\r\n // TODO: Replace with Object.entries when lib is updated to es2017.\r\n for (var _a = 0, _b = Object.keys(customData); _a < _b.length; _a++) {\r\n var key = _b[_a];\r\n if (key.slice(-1) !== '_') {\r\n if (key in error) {\r\n console.warn(\"Overwriting FirebaseError base field \\\"\" + key + \"\\\" can cause unexpected behavior.\");\r\n }\r\n error[key] = customData[key];\r\n }\r\n }\r\n return error;\r\n };\r\n return ErrorFactory;\r\n}());\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, function (_, key) {\r\n var value = data[key];\r\n return value != null ? value.toString() : \"<\" + key + \"?>\";\r\n });\r\n}\r\nvar PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nvar decode = function (token) {\r\n var header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n var parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header: header,\r\n claims: claims,\r\n data: data,\r\n signature: signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nvar isValidTimestamp = function (token) {\r\n var claims = decode(token).claims;\r\n var now = Math.floor(new Date().getTime() / 1000);\r\n var validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nvar issuedAtTime = function (token) {\r\n var claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nvar isValidFormat = function (token) {\r\n var decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nvar isAdmin = function (token) {\r\n var claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n var res = {};\r\n for (var key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n var params = [];\r\n var _loop_1 = function (key, value) {\r\n if (Array.isArray(value)) {\r\n value.forEach(function (arrayVal) {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n };\r\n for (var _i = 0, _a = Object.entries(querystringParams); _i < _a.length; _i++) {\r\n var _b = _a[_i], key = _b[0], value = _b[1];\r\n _loop_1(key, value);\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n var obj = {};\r\n var tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(function (token) {\r\n if (token) {\r\n var key = token.split('=');\r\n obj[key[0]] = key[1];\r\n }\r\n });\r\n return obj;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nvar Sha1 = /** @class */ (function () {\r\n function Sha1() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (var i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n Sha1.prototype.reset = function () {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n };\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n Sha1.prototype.compress_ = function (buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n var W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (var i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (var i = 16; i < 80; i++) {\r\n var t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n var a = this.chain_[0];\r\n var b = this.chain_[1];\r\n var c = this.chain_[2];\r\n var d = this.chain_[3];\r\n var e = this.chain_[4];\r\n var f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (var i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n var t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n };\r\n Sha1.prototype.update = function (bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n var lengthMinusBlock = length - this.blockSize;\r\n var n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n var buf = this.buf_;\r\n var inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n };\r\n /** @override */\r\n Sha1.prototype.digest = function () {\r\n var digest = [];\r\n var totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (var i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n var n = 0;\r\n for (var i = 0; i < 5; i++) {\r\n for (var j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n };\r\n return Sha1;\r\n}());\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n var proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nvar ObserverProxy = /** @class */ (function () {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n function ObserverProxy(executor, onNoObservers) {\r\n var _this = this;\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(function () {\r\n executor(_this);\r\n })\r\n .catch(function (e) {\r\n _this.error(e);\r\n });\r\n }\r\n ObserverProxy.prototype.next = function (value) {\r\n this.forEachObserver(function (observer) {\r\n observer.next(value);\r\n });\r\n };\r\n ObserverProxy.prototype.error = function (error) {\r\n this.forEachObserver(function (observer) {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n };\r\n ObserverProxy.prototype.complete = function () {\r\n this.forEachObserver(function (observer) {\r\n observer.complete();\r\n });\r\n this.close();\r\n };\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n ObserverProxy.prototype.subscribe = function (nextOrObserver, error, complete) {\r\n var _this = this;\r\n var observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error: error,\r\n complete: complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n var unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(function () {\r\n try {\r\n if (_this.finalError) {\r\n observer.error(_this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n };\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n ObserverProxy.prototype.unsubscribeOne = function (i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n };\r\n ObserverProxy.prototype.forEachObserver = function (fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (var i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n };\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n ObserverProxy.prototype.sendOne = function (i, fn) {\r\n var _this = this;\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(function () {\r\n if (_this.observers !== undefined && _this.observers[i] !== undefined) {\r\n try {\r\n fn(_this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n ObserverProxy.prototype.close = function (err) {\r\n var _this = this;\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(function () {\r\n _this.observers = undefined;\r\n _this.onNoObservers = undefined;\r\n });\r\n };\r\n return ObserverProxy;\r\n}());\r\n/** Turn synchronous function into one called asynchronously. */\r\nfunction async(fn, onError) {\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 Promise.resolve(true)\r\n .then(function () {\r\n fn.apply(void 0, args);\r\n })\r\n .catch(function (error) {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (var _i = 0, methods_1 = methods; _i < methods_1.length; _i++) {\r\n var method = methods_1[_i];\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nvar validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n var argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n var error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argumentNumber The index of the argument\r\n * @param optional Whether or not the argument is optional\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argumentNumber, optional) {\r\n var argName = '';\r\n switch (argumentNumber) {\r\n case 1:\r\n argName = optional ? 'first' : 'First';\r\n break;\r\n case 2:\r\n argName = optional ? 'second' : 'Second';\r\n break;\r\n case 3:\r\n argName = optional ? 'third' : 'Third';\r\n break;\r\n case 4:\r\n argName = optional ? 'fourth' : 'Fourth';\r\n break;\r\n default:\r\n throw new Error('errorPrefix called with argumentNumber > 4. Need to update it?');\r\n }\r\n var error = fnName + ' failed: ';\r\n error += argName + ' argument ';\r\n return error;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, argumentNumber, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentNumber, callback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentNumber, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentNumber, optional) +\r\n 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nvar stringToByteArray$1 = function (str) {\r\n var out = [];\r\n var p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n var high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n var low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nvar stringLength = function (str) {\r\n var p = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n var c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\nexports.CONSTANTS = CONSTANTS;\nexports.Deferred = Deferred;\nexports.ErrorFactory = ErrorFactory;\nexports.FirebaseError = FirebaseError;\nexports.Sha1 = Sha1;\nexports.assert = assert;\nexports.assertionError = assertionError;\nexports.async = async;\nexports.base64 = base64;\nexports.base64Decode = base64Decode;\nexports.base64Encode = base64Encode;\nexports.contains = contains;\nexports.createSubscribe = createSubscribe;\nexports.decode = decode;\nexports.deepCopy = deepCopy;\nexports.deepExtend = deepExtend;\nexports.errorPrefix = errorPrefix;\nexports.getUA = getUA;\nexports.isAdmin = isAdmin;\nexports.isBrowser = isBrowser;\nexports.isBrowserExtension = isBrowserExtension;\nexports.isElectron = isElectron;\nexports.isEmpty = isEmpty;\nexports.isIE = isIE;\nexports.isMobileCordova = isMobileCordova;\nexports.isNode = isNode;\nexports.isNodeSdk = isNodeSdk;\nexports.isReactNative = isReactNative;\nexports.isUWP = isUWP;\nexports.isValidFormat = isValidFormat;\nexports.isValidTimestamp = isValidTimestamp;\nexports.issuedAtTime = issuedAtTime;\nexports.jsonEval = jsonEval;\nexports.map = map;\nexports.querystring = querystring;\nexports.querystringDecode = querystringDecode;\nexports.safeGet = safeGet;\nexports.stringLength = stringLength;\nexports.stringToByteArray = stringToByteArray$1;\nexports.stringify = stringify;\nexports.validateArgCount = validateArgCount;\nexports.validateCallback = validateCallback;\nexports.validateContextObject = validateContextObject;\nexports.validateNamespace = validateNamespace;\n//# sourceMappingURL=index.cjs.js.map\n","/**\n * Template7 1.4.2\n * Mobile-first HTML template engine\n * \n * http://www.idangero.us/template7/\n * \n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n * \n * Licensed under MIT\n * \n * Released on: June 14, 2019\n */\n\nlet t7ctx;\nif (typeof window !== 'undefined') {\n t7ctx = window;\n} else if (typeof global !== 'undefined') {\n t7ctx = global;\n} else {\n t7ctx = undefined;\n}\n\nconst Template7Context = t7ctx;\n\nconst Template7Utils = {\n quoteSingleRexExp: new RegExp('\\'', 'g'),\n quoteDoubleRexExp: new RegExp('\"', 'g'),\n isFunction(func) {\n return typeof func === 'function';\n },\n escape(string = '') {\n return string\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n helperToSlices(string) {\n const { quoteDoubleRexExp, quoteSingleRexExp } = Template7Utils;\n const helperParts = string.replace(/[{}#}]/g, '').trim().split(' ');\n const slices = [];\n let shiftIndex;\n let i;\n let j;\n for (i = 0; i < helperParts.length; i += 1) {\n let part = helperParts[i];\n let blockQuoteRegExp;\n let openingQuote;\n if (i === 0) slices.push(part);\n else if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n // Plain String\n if (part.match(blockQuoteRegExp).length === 2) {\n // One word string\n slices.push(part);\n } else {\n // Find closed Index\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n part += ` ${helperParts[j]}`;\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n slices.push(part);\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n } else if (part.indexOf('=') > 0) {\n // Hash\n const hashParts = part.split('=');\n const hashName = hashParts[0];\n let hashContent = hashParts[1];\n if (!blockQuoteRegExp) {\n blockQuoteRegExp = hashContent.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = hashContent.indexOf('\"') === 0 ? '\"' : '\\'';\n }\n if (hashContent.match(blockQuoteRegExp).length !== 2) {\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n hashContent += ` ${helperParts[j]}`;\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n const hash = [hashName, hashContent.replace(blockQuoteRegExp, '')];\n slices.push(hash);\n } else {\n // Plain variable\n slices.push(part);\n }\n }\n return slices;\n },\n stringToBlocks(string) {\n const blocks = [];\n let i;\n let j;\n if (!string) return [];\n const stringBlocks = string.split(/({{[^{^}]*}})/);\n for (i = 0; i < stringBlocks.length; i += 1) {\n let block = stringBlocks[i];\n if (block === '') continue;\n if (block.indexOf('{{') < 0) {\n blocks.push({\n type: 'plain',\n content: block,\n });\n } else {\n if (block.indexOf('{/') >= 0) {\n continue;\n }\n block = block\n .replace(/{{([#/])*([ ])*/, '{{$1')\n .replace(/([ ])*}}/, '}}');\n if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n // Simple variable\n blocks.push({\n type: 'variable',\n contextName: block.replace(/[{}]/g, ''),\n });\n continue;\n }\n // Helpers\n const helperSlices = Template7Utils.helperToSlices(block);\n let helperName = helperSlices[0];\n const isPartial = helperName === '>';\n const helperContext = [];\n const helperHash = {};\n for (j = 1; j < helperSlices.length; j += 1) {\n const slice = helperSlices[j];\n if (Array.isArray(slice)) {\n // Hash\n helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n } else {\n helperContext.push(slice);\n }\n }\n\n if (block.indexOf('{#') >= 0) {\n // Condition/Helper\n let helperContent = '';\n let elseContent = '';\n let toSkip = 0;\n let shiftIndex;\n let foundClosed = false;\n let foundElse = false;\n let depth = 0;\n for (j = i + 1; j < stringBlocks.length; j += 1) {\n if (stringBlocks[j].indexOf('{{#') >= 0) {\n depth += 1;\n }\n if (stringBlocks[j].indexOf('{{/') >= 0) {\n depth -= 1;\n }\n if (stringBlocks[j].indexOf(`{{#${helperName}`) >= 0) {\n helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n toSkip += 1;\n } else if (stringBlocks[j].indexOf(`{{/${helperName}`) >= 0) {\n if (toSkip > 0) {\n toSkip -= 1;\n helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n } else {\n shiftIndex = j;\n foundClosed = true;\n break;\n }\n } else if (stringBlocks[j].indexOf('else') >= 0 && depth === 0) {\n foundElse = true;\n } else {\n if (!foundElse) helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n }\n }\n if (foundClosed) {\n if (shiftIndex) i = shiftIndex;\n if (helperName === 'raw') {\n blocks.push({\n type: 'plain',\n content: helperContent,\n });\n } else {\n blocks.push({\n type: 'helper',\n helperName,\n contextName: helperContext,\n content: helperContent,\n inverseContent: elseContent,\n hash: helperHash,\n });\n }\n }\n } else if (block.indexOf(' ') > 0) {\n if (isPartial) {\n helperName = '_partial';\n if (helperContext[0]) {\n if (helperContext[0].indexOf('[') === 0) helperContext[0] = helperContext[0].replace(/[[\\]]/g, '');\n else helperContext[0] = `\"${helperContext[0].replace(/\"|'/g, '')}\"`;\n }\n }\n blocks.push({\n type: 'helper',\n helperName,\n contextName: helperContext,\n hash: helperHash,\n });\n }\n }\n }\n return blocks;\n },\n parseJsVariable(expression, replace, object) {\n return expression.split(/([+ \\-*/^()&=|<>!%:?])/g).reduce((arr, part) => {\n if (!part) {\n return arr;\n }\n if (part.indexOf(replace) < 0) {\n arr.push(part);\n return arr;\n }\n if (!object) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n let variable = object;\n if (part.indexOf(`${replace}.`) >= 0) {\n part.split(`${replace}.`)[1].split('.').forEach((partName) => {\n if (partName in variable) variable = variable[partName];\n else variable = undefined;\n });\n }\n if (\n (typeof variable === 'string')\n || Array.isArray(variable)\n || (variable.constructor && variable.constructor === Object)\n ) {\n variable = JSON.stringify(variable);\n }\n if (variable === undefined) variable = 'undefined';\n\n arr.push(variable);\n return arr;\n }, []).join('');\n\n },\n parseJsParents(expression, parents) {\n return expression.split(/([+ \\-*^()&=|<>!%:?])/g).reduce((arr, part) => {\n if (!part) {\n return arr;\n }\n\n if (part.indexOf('../') < 0) {\n arr.push(part);\n return arr;\n }\n\n if (!parents || parents.length === 0) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n const levelsUp = part.split('../').length - 1;\n const parentData = levelsUp > parents.length ? parents[parents.length - 1] : parents[levelsUp - 1];\n\n let variable = parentData;\n const parentPart = part.replace(/..\\//g, '');\n parentPart.split('.').forEach((partName) => {\n if (typeof variable[partName] !== 'undefined') variable = variable[partName];\n else variable = 'undefined';\n });\n if (variable === false || variable === true) {\n arr.push(JSON.stringify(variable));\n return arr;\n }\n if (variable === null || variable === 'undefined') {\n arr.push(JSON.stringify(''));\n return arr;\n }\n arr.push(JSON.stringify(variable));\n return arr;\n }, []).join('');\n },\n getCompileVar(name, ctx, data = 'data_1') {\n let variable = ctx;\n let parts;\n let levelsUp = 0;\n let newDepth;\n if (name.indexOf('../') === 0) {\n levelsUp = name.split('../').length - 1;\n newDepth = variable.split('_')[1] - levelsUp;\n variable = `ctx_${newDepth >= 1 ? newDepth : 1}`;\n parts = name.split('../')[levelsUp].split('.');\n } else if (name.indexOf('@global') === 0) {\n variable = 'Template7.global';\n parts = name.split('@global.')[1].split('.');\n } else if (name.indexOf('@root') === 0) {\n variable = 'root';\n parts = name.split('@root.')[1].split('.');\n } else {\n parts = name.split('.');\n }\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.indexOf('@') === 0) {\n let dataLevel = data.split('_')[1];\n if (levelsUp > 0) {\n dataLevel = newDepth;\n }\n if (i > 0) {\n variable += `[(data_${dataLevel} && data_${dataLevel}.${part.replace('@', '')})]`;\n } else {\n variable = `(data_${dataLevel} && data_${dataLevel}.${part.replace('@', '')})`;\n }\n } else if (Number.isFinite ? Number.isFinite(part) : Template7Context.isFinite(part)) {\n variable += `[${part}]`;\n } else if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n variable = part.replace('this', ctx);\n } else {\n variable += `.${part}`;\n }\n }\n return variable;\n },\n getCompiledArguments(contextArray, ctx, data) {\n const arr = [];\n for (let i = 0; i < contextArray.length; i += 1) {\n if (/^['\"]/.test(contextArray[i])) arr.push(contextArray[i]);\n else if (/^(true|false|\\d+)$/.test(contextArray[i])) arr.push(contextArray[i]);\n else {\n arr.push(Template7Utils.getCompileVar(contextArray[i], ctx, data));\n }\n }\n\n return arr.join(', ');\n },\n};\n\n/* eslint no-eval: \"off\" */\n\nconst Template7Helpers = {\n _partial(partialName, options) {\n const ctx = this;\n const p = Template7Class.partials[partialName];\n if (!p || (p && !p.template)) return '';\n if (!p.compiled) {\n p.compiled = new Template7Class(p.template).compile();\n }\n Object.keys(options.hash).forEach((hashName) => {\n ctx[hashName] = options.hash[hashName];\n });\n return p.compiled(ctx, options.data, options.root);\n },\n escape(context) {\n if (typeof context === 'undefined' || context === null) return '';\n if (typeof context !== 'string') {\n throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n }\n return Template7Utils.escape(context);\n },\n if(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n unless(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (!ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n each(context, options) {\n let ctx = context;\n let ret = '';\n let i = 0;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (Array.isArray(ctx)) {\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n for (i = 0; i < ctx.length; i += 1) {\n ret += options.fn(ctx[i], { first: i === 0, last: i === ctx.length - 1, index: i });\n }\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n } else {\n // eslint-disable-next-line\n for (const key in ctx) {\n i += 1;\n ret += options.fn(ctx[key], { key });\n }\n }\n if (i > 0) return ret;\n return options.inverse(this);\n },\n with(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = context.call(this); }\n return options.fn(ctx);\n },\n join(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n return ctx.join(options.hash.delimiter || options.hash.delimeter);\n },\n js(expression, options) {\n const data = options.data;\n let func;\n let execute = expression;\n ('index first last key').split(' ').forEach((prop) => {\n if (typeof data[prop] !== 'undefined') {\n const re1 = new RegExp(`this.@${prop}`, 'g');\n const re2 = new RegExp(`@${prop}`, 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = `(function(){${execute}})`;\n } else {\n func = `(function(){return (${execute})})`;\n }\n return eval(func).call(this);\n },\n js_if(expression, options) {\n const data = options.data;\n let func;\n let execute = expression;\n ('index first last key').split(' ').forEach((prop) => {\n if (typeof data[prop] !== 'undefined') {\n const re1 = new RegExp(`this.@${prop}`, 'g');\n const re2 = new RegExp(`@${prop}`, 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = `(function(){${execute}})`;\n } else {\n func = `(function(){return (${execute})})`;\n }\n const condition = eval(func).call(this);\n if (condition) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n};\nTemplate7Helpers.js_compare = Template7Helpers.js_if;\n\nconst Template7Options = {};\nconst Template7Partials = {};\n\nclass Template7Class {\n constructor(template) {\n const t = this;\n t.template = template;\n }\n compile(template = this.template, depth = 1) {\n const t = this;\n if (t.compiled) return t.compiled;\n\n if (typeof template !== 'string') {\n throw new Error('Template7: Template must be a string');\n }\n const { stringToBlocks, getCompileVar, getCompiledArguments } = Template7Utils;\n\n const blocks = stringToBlocks(template);\n const ctx = `ctx_${depth}`;\n const data = `data_${depth}`;\n if (blocks.length === 0) {\n return function empty() { return ''; };\n }\n\n function getCompileFn(block, newDepth) {\n if (block.content) return t.compile(block.content, newDepth);\n return function empty() { return ''; };\n }\n function getCompileInverse(block, newDepth) {\n if (block.inverseContent) return t.compile(block.inverseContent, newDepth);\n return function empty() { return ''; };\n }\n\n let resultString = '';\n if (depth === 1) {\n resultString += `(function (${ctx}, ${data}, root) {\\n`;\n } else {\n resultString += `(function (${ctx}, ${data}) {\\n`;\n }\n if (depth === 1) {\n resultString += 'function isArray(arr){return Array.isArray(arr);}\\n';\n resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n resultString += 'root = root || ctx_1 || {};\\n';\n }\n resultString += 'var r = \\'\\';\\n';\n let i;\n for (i = 0; i < blocks.length; i += 1) {\n const block = blocks[i];\n // Plain block\n if (block.type === 'plain') {\n // eslint-disable-next-line\n resultString += `r +='${(block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'')}';`;\n continue;\n }\n let variable;\n let compiledArguments;\n // Variable block\n if (block.type === 'variable') {\n variable = getCompileVar(block.contextName, ctx, data);\n resultString += `r += c(${variable}, ${ctx});`;\n }\n // Helpers block\n if (block.type === 'helper') {\n let parents;\n if (ctx !== 'ctx_1') {\n const level = ctx.split('_')[1];\n let parentsString = `ctx_${level - 1}`;\n for (let j = level - 2; j >= 1; j -= 1) {\n parentsString += `, ctx_${j}`;\n }\n parents = `[${parentsString}]`;\n } else {\n parents = `[${ctx}]`;\n }\n let dynamicHelper;\n if (block.helperName.indexOf('[') === 0) {\n block.helperName = getCompileVar(block.helperName.replace(/[[\\]]/g, ''), ctx, data);\n dynamicHelper = true;\n }\n if (dynamicHelper || block.helperName in Template7Helpers) {\n compiledArguments = getCompiledArguments(block.contextName, ctx, data);\n resultString += `r += (Template7Helpers${dynamicHelper ? `[${block.helperName}]` : `.${block.helperName}`}).call(${ctx}, ${compiledArguments && (`${compiledArguments}, `)}{hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n } else if (block.contextName.length > 0) {\n throw new Error(`Template7: Missing helper: \"${block.helperName}\"`);\n } else {\n variable = getCompileVar(block.helperName, ctx, data);\n resultString += `if (${variable}) {`;\n resultString += `if (isArray(${variable})) {`;\n resultString += `r += (Template7Helpers.each).call(${ctx}, ${variable}, {hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n resultString += '}else {';\n resultString += `r += (Template7Helpers.with).call(${ctx}, ${variable}, {hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n resultString += '}}';\n }\n }\n }\n resultString += '\\nreturn r;})';\n\n if (depth === 1) {\n // eslint-disable-next-line\n t.compiled = eval(resultString);\n return t.compiled;\n }\n return resultString;\n }\n static get options() {\n return Template7Options;\n }\n static get partials() {\n return Template7Partials;\n }\n static get helpers() {\n return Template7Helpers;\n }\n}\n\nfunction Template7(...args) {\n const [template, data] = args;\n if (args.length === 2) {\n let instance = new Template7Class(template);\n const rendered = instance.compile()(data);\n instance = null;\n return (rendered);\n }\n return new Template7Class(template);\n}\nTemplate7.registerHelper = function registerHelper(name, fn) {\n Template7Class.helpers[name] = fn;\n};\nTemplate7.unregisterHelper = function unregisterHelper(name) {\n Template7Class.helpers[name] = undefined;\n delete Template7Class.helpers[name];\n};\nTemplate7.registerPartial = function registerPartial(name, template) {\n Template7Class.partials[name] = { template };\n};\nTemplate7.unregisterPartial = function unregisterPartial(name) {\n if (Template7Class.partials[name]) {\n Template7Class.partials[name] = undefined;\n delete Template7Class.partials[name];\n }\n};\nTemplate7.compile = function compile(template, options) {\n const instance = new Template7Class(template, options);\n return instance.compile();\n};\n\nTemplate7.options = Template7Class.options;\nTemplate7.helpers = Template7Class.helpers;\nTemplate7.partials = Template7Class.partials;\n\nexport default Template7;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.idb = {}));\n}(this, function (exports) { 'use strict';\n\n function toArray(arr) {\n return Array.prototype.slice.call(arr);\n }\n\n function promisifyRequest(request) {\n return new Promise(function(resolve, reject) {\n request.onsuccess = function() {\n resolve(request.result);\n };\n\n request.onerror = function() {\n reject(request.error);\n };\n });\n }\n\n function promisifyRequestCall(obj, method, args) {\n var request;\n var p = new Promise(function(resolve, reject) {\n request = obj[method].apply(obj, args);\n promisifyRequest(request).then(resolve, reject);\n });\n\n p.request = request;\n return p;\n }\n\n function promisifyCursorRequestCall(obj, method, args) {\n var p = promisifyRequestCall(obj, method, args);\n return p.then(function(value) {\n if (!value) return;\n return new Cursor(value, p.request);\n });\n }\n\n function proxyProperties(ProxyClass, targetProp, properties) {\n properties.forEach(function(prop) {\n Object.defineProperty(ProxyClass.prototype, prop, {\n get: function() {\n return this[targetProp][prop];\n },\n set: function(val) {\n this[targetProp][prop] = val;\n }\n });\n });\n }\n\n function proxyRequestMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function(prop) {\n if (!(prop in Constructor.prototype)) return;\n ProxyClass.prototype[prop] = function() {\n return promisifyRequestCall(this[targetProp], prop, arguments);\n };\n });\n }\n\n function proxyMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function(prop) {\n if (!(prop in Constructor.prototype)) return;\n ProxyClass.prototype[prop] = function() {\n return this[targetProp][prop].apply(this[targetProp], arguments);\n };\n });\n }\n\n function proxyCursorRequestMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function(prop) {\n if (!(prop in Constructor.prototype)) return;\n ProxyClass.prototype[prop] = function() {\n return promisifyCursorRequestCall(this[targetProp], prop, arguments);\n };\n });\n }\n\n function Index(index) {\n this._index = index;\n }\n\n proxyProperties(Index, '_index', [\n 'name',\n 'keyPath',\n 'multiEntry',\n 'unique'\n ]);\n\n proxyRequestMethods(Index, '_index', IDBIndex, [\n 'get',\n 'getKey',\n 'getAll',\n 'getAllKeys',\n 'count'\n ]);\n\n proxyCursorRequestMethods(Index, '_index', IDBIndex, [\n 'openCursor',\n 'openKeyCursor'\n ]);\n\n function Cursor(cursor, request) {\n this._cursor = cursor;\n this._request = request;\n }\n\n proxyProperties(Cursor, '_cursor', [\n 'direction',\n 'key',\n 'primaryKey',\n 'value'\n ]);\n\n proxyRequestMethods(Cursor, '_cursor', IDBCursor, [\n 'update',\n 'delete'\n ]);\n\n // proxy 'next' methods\n ['advance', 'continue', 'continuePrimaryKey'].forEach(function(methodName) {\n if (!(methodName in IDBCursor.prototype)) return;\n Cursor.prototype[methodName] = function() {\n var cursor = this;\n var args = arguments;\n return Promise.resolve().then(function() {\n cursor._cursor[methodName].apply(cursor._cursor, args);\n return promisifyRequest(cursor._request).then(function(value) {\n if (!value) return;\n return new Cursor(value, cursor._request);\n });\n });\n };\n });\n\n function ObjectStore(store) {\n this._store = store;\n }\n\n ObjectStore.prototype.createIndex = function() {\n return new Index(this._store.createIndex.apply(this._store, arguments));\n };\n\n ObjectStore.prototype.index = function() {\n return new Index(this._store.index.apply(this._store, arguments));\n };\n\n proxyProperties(ObjectStore, '_store', [\n 'name',\n 'keyPath',\n 'indexNames',\n 'autoIncrement'\n ]);\n\n proxyRequestMethods(ObjectStore, '_store', IDBObjectStore, [\n 'put',\n 'add',\n 'delete',\n 'clear',\n 'get',\n 'getAll',\n 'getKey',\n 'getAllKeys',\n 'count'\n ]);\n\n proxyCursorRequestMethods(ObjectStore, '_store', IDBObjectStore, [\n 'openCursor',\n 'openKeyCursor'\n ]);\n\n proxyMethods(ObjectStore, '_store', IDBObjectStore, [\n 'deleteIndex'\n ]);\n\n function Transaction(idbTransaction) {\n this._tx = idbTransaction;\n this.complete = new Promise(function(resolve, reject) {\n idbTransaction.oncomplete = function() {\n resolve();\n };\n idbTransaction.onerror = function() {\n reject(idbTransaction.error);\n };\n idbTransaction.onabort = function() {\n reject(idbTransaction.error);\n };\n });\n }\n\n Transaction.prototype.objectStore = function() {\n return new ObjectStore(this._tx.objectStore.apply(this._tx, arguments));\n };\n\n proxyProperties(Transaction, '_tx', [\n 'objectStoreNames',\n 'mode'\n ]);\n\n proxyMethods(Transaction, '_tx', IDBTransaction, [\n 'abort'\n ]);\n\n function UpgradeDB(db, oldVersion, transaction) {\n this._db = db;\n this.oldVersion = oldVersion;\n this.transaction = new Transaction(transaction);\n }\n\n UpgradeDB.prototype.createObjectStore = function() {\n return new ObjectStore(this._db.createObjectStore.apply(this._db, arguments));\n };\n\n proxyProperties(UpgradeDB, '_db', [\n 'name',\n 'version',\n 'objectStoreNames'\n ]);\n\n proxyMethods(UpgradeDB, '_db', IDBDatabase, [\n 'deleteObjectStore',\n 'close'\n ]);\n\n function DB(db) {\n this._db = db;\n }\n\n DB.prototype.transaction = function() {\n return new Transaction(this._db.transaction.apply(this._db, arguments));\n };\n\n proxyProperties(DB, '_db', [\n 'name',\n 'version',\n 'objectStoreNames'\n ]);\n\n proxyMethods(DB, '_db', IDBDatabase, [\n 'close'\n ]);\n\n // Add cursor iterators\n // TODO: remove this once browsers do the right thing with promises\n ['openCursor', 'openKeyCursor'].forEach(function(funcName) {\n [ObjectStore, Index].forEach(function(Constructor) {\n // Don't create iterateKeyCursor if openKeyCursor doesn't exist.\n if (!(funcName in Constructor.prototype)) return;\n\n Constructor.prototype[funcName.replace('open', 'iterate')] = function() {\n var args = toArray(arguments);\n var callback = args[args.length - 1];\n var nativeObject = this._store || this._index;\n var request = nativeObject[funcName].apply(nativeObject, args.slice(0, -1));\n request.onsuccess = function() {\n callback(request.result);\n };\n };\n });\n });\n\n // polyfill getAll\n [Index, ObjectStore].forEach(function(Constructor) {\n if (Constructor.prototype.getAll) return;\n Constructor.prototype.getAll = function(query, count) {\n var instance = this;\n var items = [];\n\n return new Promise(function(resolve) {\n instance.iterateCursor(query, function(cursor) {\n if (!cursor) {\n resolve(items);\n return;\n }\n items.push(cursor.value);\n\n if (count !== undefined && items.length == count) {\n resolve(items);\n return;\n }\n cursor.continue();\n });\n });\n };\n });\n\n function openDb(name, version, upgradeCallback) {\n var p = promisifyRequestCall(indexedDB, 'open', [name, version]);\n var request = p.request;\n\n if (request) {\n request.onupgradeneeded = function(event) {\n if (upgradeCallback) {\n upgradeCallback(new UpgradeDB(request.result, event.oldVersion, request.transaction));\n }\n };\n }\n\n return p.then(function(db) {\n return new DB(db);\n });\n }\n\n function deleteDb(name) {\n return promisifyRequestCall(indexedDB, 'deleteDatabase', [name]);\n }\n\n exports.openDb = openDb;\n exports.deleteDb = deleteDb;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n/**\r\n * A container for all of the Logger instances\r\n */\r\nvar instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nvar levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nvar defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nvar ConsoleMethod = (_a = {},\r\n _a[LogLevel.DEBUG] = 'log',\r\n _a[LogLevel.VERBOSE] = 'log',\r\n _a[LogLevel.INFO] = 'info',\r\n _a[LogLevel.WARN] = 'warn',\r\n _a[LogLevel.ERROR] = 'error',\r\n _a);\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nvar defaultLogHandler = function (instance, logType) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n var now = new Date().toISOString();\r\n var method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method].apply(console, __spreadArrays([\"[\" + now + \"] \" + instance.name + \":\"], args));\r\n }\r\n else {\r\n throw new Error(\"Attempted to log a message with an invalid logType (value: \" + logType + \")\");\r\n }\r\n};\r\nvar Logger = /** @class */ (function () {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n function Logger(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n Object.defineProperty(Logger.prototype, \"logLevel\", {\r\n get: function () {\r\n return this._logLevel;\r\n },\r\n set: function (val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError('Invalid value assigned to `logLevel`');\r\n }\r\n this._logLevel = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Logger.prototype, \"logHandler\", {\r\n get: function () {\r\n return this._logHandler;\r\n },\r\n set: function (val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Logger.prototype, \"userLogHandler\", {\r\n get: function () {\r\n return this._userLogHandler;\r\n },\r\n set: function (val) {\r\n this._userLogHandler = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n Logger.prototype.debug = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\r\n };\r\n Logger.prototype.log = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\r\n };\r\n Logger.prototype.info = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\r\n };\r\n Logger.prototype.warn = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\r\n };\r\n Logger.prototype.error = 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 this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\r\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\r\n };\r\n return Logger;\r\n}());\r\nfunction setLogLevel(level) {\r\n var newLevel = typeof level === 'string' ? levelStringToEnum[level] : level;\r\n instances.forEach(function (inst) {\r\n inst.logLevel = newLevel;\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n var _loop_1 = function (instance) {\r\n var customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = function (instance, level) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n var message = args\r\n .map(function (arg) {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(function (arg) { return arg; })\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message: message,\r\n args: args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n };\r\n for (var _i = 0, instances_1 = instances; _i < instances_1.length; _i++) {\r\n var instance = instances_1[_i];\r\n _loop_1(instance);\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm.js.map\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\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 '<Buffer ' + str + '>'\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spread, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nvar name = \"@firebase/installations\";\nvar version = \"0.4.8\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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 Inc.\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 Inc.\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 2019 Google Inc.\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 Inc.\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, __spread(array)));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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 Inc.\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 Inc.\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 Inc.\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, _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.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 Inc.\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 Inc.\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) && (e_1.serverCode === 401 || e_1.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 Inc.\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 Inc.\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 Inc.\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 Inc.\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 Inc.\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 Inc.\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 Inc.\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","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\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 */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\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 */\n function 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 `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\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 */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\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 */\n function 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 `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\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 */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\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 */\n function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\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 */\n function 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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\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 */\n function 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 /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var 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. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n function 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 --this.size;\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 */\n function 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 */\n function 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 */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function mapCacheClear() {\n this.size = 0;\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\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 */\n function 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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\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 */\n function 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 */\n function 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 */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\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 */\n function 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 * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\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 */\n function 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 `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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\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 */\n function baseGet(object, path) {\n path = castPath(path, object);\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 */\n function 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` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_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, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, 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 */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(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 */\n function 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 */\n function 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 */\n function 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 `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\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 */\n function 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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\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[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\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[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), 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 */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (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 */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\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 */\n function 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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 * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\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 */\n function 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 * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_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 & COMPARE_UNORDERED_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 (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, 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 & COMPARE_PARTIAL_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 |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(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, bitmask, customizer, 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 * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and 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 */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\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 */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : 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 */\n function 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 */\n function 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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var 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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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 = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\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 * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\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 */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\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 || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\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 */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\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 */\n function 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 */\n function 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 a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function 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 */\n function 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 */\n function 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 * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\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 */\n function 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 `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\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 * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\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] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\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 */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.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 */\n function 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 convert.\n * @returns {string} Returns the source code.\n */\n function 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 * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\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 `clear`, `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 */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\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 * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= 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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function 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 */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\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 */\n function 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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.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 `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.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 `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\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 */\n function 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 property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function 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 */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(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 */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.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 _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * 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 * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\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[])} [paths] The property paths 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 */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\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 */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values 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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|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 * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\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 */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\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 */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/**\n * vuex v3.3.0\n * (c) 2020 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\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 */\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\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 = { namespaced: { configurable: true } };\n\nprototypeAccessors.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 );\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 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if (process.env.NODE_ENV !== 'production') {\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.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 if (!parent.getChild(key).runtime) { return }\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 return parent.hasChild(key)\n};\n\nfunction update (path, targetModule, newModule) {\n if (process.env.NODE_ENV !== 'production') {\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 if (process.env.NODE_ENV !== 'production') {\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\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\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\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._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\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 vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if (process.env.NODE_ENV !== 'production') {\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 = 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 if (process.env.NODE_ENV !== 'production') {\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.state); });\n\n if (\n process.env.NODE_ENV !== 'production' &&\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 = 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 if (process.env.NODE_ENV !== 'production') {\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.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\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 result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n return res\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 (getter, cb, options) {\n var this$1 = this;\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = 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 if (process.env.NODE_ENV !== 'production') {\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 resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if (process.env.NODE_ENV !== 'production') {\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.state, path.slice(0, -1));\n Vue.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 if (process.env.NODE_ENV !== 'production') {\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$1 );\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 vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\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 computed = {};\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 oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\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] && process.env.NODE_ENV !== 'production') {\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 if (process.env.NODE_ENV !== 'production') {\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 Vue.set(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 (process.env.NODE_ENV !== 'production' && !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 (process.env.NODE_ENV !== 'production' && !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 vm 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 if (process.env.NODE_ENV !== 'production') {\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 store._vm.$watch(function () { return this._data.$$state }, function () {\n if (process.env.NODE_ENV !== 'production') {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\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 if (process.env.NODE_ENV !== 'production') {\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\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\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 (process.env.NODE_ENV !== 'production' && !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 anthor 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 (process.env.NODE_ENV !== 'production' && !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 (process.env.NODE_ENV !== 'production' && !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 (process.env.NODE_ENV !== 'production' && !(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 (process.env.NODE_ENV !== 'production' && !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 (process.env.NODE_ENV !== 'production' && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\nvar index_esm = {\n Store: Store,\n install: install,\n version: '3.3.0',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers\n};\n\nexport default index_esm;\nexport { Store, install, mapState, mapMutations, mapGetters, mapActions, createNamespacedHelpers };\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var af = moment.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n ss : '%d sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var ar = moment.defineLocale('ar', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arDz = moment.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arKw = moment.defineLocale('ar-kw', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arMa = moment.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss : '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n\n var az = moment.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gələn həftə] dddd [saat] LT',\n lastDay : '[dünən] LT',\n lastWeek : '[keçən həftə] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s əvvəl',\n s : 'birneçə saniyə',\n ss : '%d saniyə',\n m : 'bir dəqiqə',\n mm : '%d dəqiqə',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM : function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bg = moment.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bm = moment.defineLocale('bm', {\n months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'MMMM [tile] D [san] YYYY',\n LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n },\n calendar : {\n sameDay : '[Bi lɛrɛ] LT',\n nextDay : '[Sini lɛrɛ] LT',\n nextWeek : 'dddd [don lɛrɛ] LT',\n lastDay : '[Kunu lɛrɛ] LT',\n lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s kɔnɔ',\n past : 'a bɛ %s bɔ',\n s : 'sanga dama dama',\n ss : 'sekondi %d',\n m : 'miniti kelen',\n mm : 'miniti %d',\n h : 'lɛrɛ kelen',\n hh : 'lɛrɛ %d',\n d : 'tile kelen',\n dd : 'tile %d',\n M : 'kalo kelen',\n MM : 'kalo %d',\n y : 'san kelen',\n yy : 'san %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n\n var bn = moment.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n ss : '%d সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n\n var bo = moment.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n ss : '%d སྐར་ཆ།',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var br = moment.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n ss : '%d eilenn',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ca = moment.defineLocale('ca', {\n months : {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [de] YYYY',\n ll : 'D MMM YYYY',\n LLL : 'D MMMM [de] YYYY [a les] H:mm',\n lll : 'D MMM YYYY, H:mm',\n LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll : 'ddd D MMM YYYY, H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n ss : '%d segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\n var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months : months,\n monthsShort : monthsShort,\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'před %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cv = moment.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n ss : '%d ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n ss : '%d sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު'\n ], weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު'\n ];\n\n var dv = moment.defineLocale('dv', {\n months : months,\n monthsShort : months,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM : function (input) {\n return 'މފ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar : {\n sameDay : '[މިއަދު] LT',\n nextDay : '[މާދަމާ] LT',\n nextWeek : 'dddd LT',\n lastDay : '[އިއްޔެ] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'ކުރިން %s',\n s : 'ސިކުންތުކޮޅެއް',\n ss : 'd% ސިކުންތު',\n m : 'މިނިޓެއް',\n mm : 'މިނިޓު %d',\n h : 'ގަޑިއިރެއް',\n hh : 'ގަޑިއިރު %d',\n d : 'ދުވަހެއް',\n dd : 'ދުވަސް %d',\n M : 'މަހެއް',\n MM : 'މަސް %d',\n y : 'އަހަރެއް',\n yy : 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n ss : '%d δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enSG = moment.defineLocale('en-SG', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enSG;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enAu = moment.defineLocale('en-au', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enCa = moment.defineLocale('en-ca', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enGb = moment.defineLocale('en-gb', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIe = moment.defineLocale('en-ie', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIl = moment.defineLocale('en-il', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enNz = moment.defineLocale('en-nz', {\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 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eo = moment.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-a de] MMMM, YYYY',\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[Hodiaŭ je] LT',\n nextDay : '[Morgaŭ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[Hieraŭ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'post %s',\n past : 'antaŭ %s',\n s : 'sekundoj',\n ss : '%d sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'MM/DD/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'ss': [number + 'sekundi', number + 'sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eu = moment.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n ss : '%d segundo',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰'\n }, numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n };\n\n var fa = moment.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چند ثانیه',\n ss : 'ثانیه d%',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal : '%dم',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fo = moment.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n ss : '%d sekundir',\n m : 'ein minuttur',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaður',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fr = moment.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCa = moment.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCh = moment.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n ss : '%d sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\n var months = [\n 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'\n ];\n\n var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];\n\n var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];\n\n var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];\n\n var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné aig] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d mí',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n ];\n\n var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months : months,\n monthsShort : monthsShort,\n monthsParseExact : true,\n weekdays : weekdays,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n ss : '%d diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var gl = moment.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['thodde secondanim', 'thodde second'],\n 'ss': [number + ' secondanim', number + ' second'],\n 'm': ['eka mintan', 'ek minute'],\n 'mm': [number + ' mintanim', number + ' mintam'],\n 'h': ['eka voran', 'ek vor'],\n 'hh': [number + ' voranim', number + ' voram'],\n 'd': ['eka disan', 'ek dis'],\n 'dd': [number + ' disanim', number + ' dis'],\n 'M': ['eka mhoinean', 'ek mhoino'],\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\n 'y': ['eka vorsan', 'ek voros'],\n 'yy': [number + ' vorsanim', number + ' vorsam']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'A h:mm [vazta]',\n LTS : 'A h:mm:ss [vazta]',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY A h:mm [vazta]',\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar : {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Ieta to] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fatlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s',\n past : '%s adim',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n ordinal : function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokalli|donparam|sanje/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokalli') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokalli';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0'\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var he = moment.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n ss : '%d שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var hi = moment.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n ss : '%d सेकंड',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n\n var hu = moment.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var hyAm = moment.defineLocale('hy-am', {\n months : {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY թ.',\n LLL : 'D MMMM YYYY թ., HH:mm',\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar : {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s հետո',\n past : '%s առաջ',\n s : 'մի քանի վայրկյան',\n ss : '%d վայրկյան',\n m : 'րոպե',\n mm : '%d րոպե',\n h : 'ժամ',\n hh : '%d ժամ',\n d : 'օր',\n dd : '%d օր',\n M : 'ամիս',\n MM : '%d ամիս',\n y : 'տարի',\n yy : '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var id = moment.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n ss : '%d detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : 'klukkustund',\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var itCh = moment.defineLocale('it-ch', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ja = moment.defineLocale('ja', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 dddd HH:mm',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日(ddd) HH:mm'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : function (now) {\n if (now.week() < this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay : '[昨日] LT',\n lastWeek : function (now) {\n if (this.week() < now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n ss : '%d秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var jv = moment.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n ss : '%d detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ka = moment.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n ss : '%d წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n\n var kk = moment.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n ss : '%d секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០'\n }, numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n ordinal : 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n };\n\n var kn = moment.defineLocale('kn', {\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[ಇಂದು] LT',\n nextDay : '[ನಾಳೆ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ನಿನ್ನೆ] LT',\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ನಂತರ',\n past : '%s ಹಿಂದೆ',\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss : '%d ಸೆಕೆಂಡುಗಳು',\n m : 'ಒಂದು ನಿಮಿಷ',\n mm : '%d ನಿಮಿಷ',\n h : 'ಒಂದು ಗಂಟೆ',\n hh : '%d ಗಂಟೆ',\n d : 'ಒಂದು ದಿನ',\n dd : '%d ದಿನ',\n M : 'ಒಂದು ತಿಂಗಳು',\n MM : '%d ತಿಂಗಳು',\n y : 'ಒಂದು ವರ್ಷ',\n yy : '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal : function (number) {\n return number + 'ನೇ';\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ko = moment.defineLocale('ko', {\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD.',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم'\n ];\n\n\n var ku = moment.defineLocale('ku', {\n months : months,\n monthsShort : months,\n weekdays : 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split('_'),\n weekdaysShort : 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره|بهیانی/,\n isPM: function (input) {\n return /ئێواره/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'بهیانی';\n } else {\n return 'ئێواره';\n }\n },\n calendar : {\n sameDay : '[ئهمرۆ كاتژمێر] LT',\n nextDay : '[بهیانی كاتژمێر] LT',\n nextWeek : 'dddd [كاتژمێر] LT',\n lastDay : '[دوێنێ كاتژمێر] LT',\n lastWeek : 'dddd [كاتژمێر] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'له %s',\n past : '%s',\n s : 'چهند چركهیهك',\n ss : 'چركه %d',\n m : 'یهك خولهك',\n mm : '%d خولهك',\n h : 'یهك كاتژمێر',\n hh : '%d كاتژمێر',\n d : 'یهك ڕۆژ',\n dd : '%d ڕۆژ',\n M : 'یهك مانگ',\n MM : '%d مانگ',\n y : 'یهك ساڵ',\n yy : '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n\n var ky = moment.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кечээ саат] LT',\n lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n ss : '%d секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n ss : '%d Sekonnen',\n m : processRelativeTime,\n mm : '%d Minutten',\n h : processRelativeTime,\n hh : '%d Stonnen',\n d : processRelativeTime,\n dd : '%d Deeg',\n M : processRelativeTime,\n MM : '%d Méint',\n y : processRelativeTime,\n yy : '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var lo = moment.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss : '%d ວິນາທີ' ,\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss' : 'sekundė_sekundžių_sekundes',\n 'm' : 'minutė_minutės_minutę',\n 'mm': 'minutės_minučių_minutes',\n 'h' : 'valanda_valandos_valandą',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dieną',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mėnuo_mėnesio_mėnesį',\n 'MM': 'mėnesiai_mėnesių_mėnesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n ss : translate,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Šodien pulksten] LT',\n nextDay : '[Rīt pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : relativeSeconds,\n ss : relativeTimeWithPlural,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mk = moment.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ml = moment.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n ss : '%d സെക്കൻഡ്',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact : true,\n weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY оны MMMMын D',\n LLL : 'YYYY оны MMMMын D HH:mm',\n LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM : function (input) {\n return input === 'ҮХ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar : {\n sameDay : '[Өнөөдөр] LT',\n nextDay : '[Маргааш] LT',\n nextWeek : '[Ирэх] dddd LT',\n lastDay : '[Өчигдөр] LT',\n lastWeek : '[Өнгөрсөн] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s дараа',\n past : '%s өмнө',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture)\n {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'ss': output = '%d सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'ss': output = '%d सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ms = moment.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var msMy = moment.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mt = moment.defineLocale('mt', {\n months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Illum fil-]LT',\n nextDay : '[Għada fil-]LT',\n nextWeek : 'dddd [fil-]LT',\n lastDay : '[Il-bieraħ fil-]LT',\n lastWeek : 'dddd [li għadda] [fil-]LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'f’ %s',\n past : '%s ilu',\n s : 'ftit sekondi',\n ss : '%d sekondi',\n m : 'minuta',\n mm : '%d minuti',\n h : 'siegħa',\n hh : '%d siegħat',\n d : 'ġurnata',\n dd : '%d ġranet',\n M : 'xahar',\n MM : '%d xhur',\n y : 'sena',\n yy : '%d sni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n }, numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss : '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nb = moment.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n ss : '%d sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en måned',\n MM : '%d måneder',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var ne = moment.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n ss : '%d सेकेण्ड',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nn = moment.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n ss : '%d sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein månad',\n MM : '%d månader',\n y : 'eit år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : '[ਅਗਲਾ] dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n ss : '%d ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n function plural(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : '1 dzień',\n dd : '%d dni',\n M : 'miesiąc',\n MM : translate,\n y : 'rok',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var pt = moment.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ptBr = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'poucos segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': 'secunde',\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n ss : relativeTimeWithPlural,\n m : 'un minut',\n mm : relativeTimeWithPlural,\n h : 'o oră',\n hh : relativeTimeWithPlural,\n d : 'o zi',\n dd : relativeTimeWithPlural,\n M : 'o lună',\n MM : relativeTimeWithPlural,\n y : 'un an',\n yy : relativeTimeWithPlural\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., H:mm',\n LLLL : 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar : {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'час',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر'\n ];\n var days = [\n 'آچر',\n 'سومر',\n 'اڱارو',\n 'اربع',\n 'خميس',\n 'جمع',\n 'ڇنڇر'\n ];\n\n var sd = moment.defineLocale('sd', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[اڄ] LT',\n nextDay : '[سڀاڻي] LT',\n nextWeek : 'dddd [اڳين هفتي تي] LT',\n lastDay : '[ڪالهه] LT',\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s پوء',\n past : '%s اڳ',\n s : 'چند سيڪنڊ',\n ss : '%d سيڪنڊ',\n m : 'هڪ منٽ',\n mm : '%d منٽ',\n h : 'هڪ ڪلاڪ',\n hh : '%d ڪلاڪ',\n d : 'هڪ ڏينهن',\n dd : '%d ڏينهن',\n M : 'هڪ مهينو',\n MM : '%d مهينا',\n y : 'هڪ سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var se = moment.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maŋit %s',\n s : 'moadde sekunddat',\n ss: '%d sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[ට]',\n nextDay : '[හෙට] LT[ට]',\n nextWeek : 'dddd LT[ට]',\n lastDay : '[ඊයේ] LT[ට]',\n lastWeek : '[පසුගිය] dddd LT[ට]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sකට පෙර',\n s : 'තත්පර කිහිපය',\n ss : 'තත්පර %d',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM : function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return (n > 1) && (n < 5);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months : months,\n monthsShort : monthsShort,\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sq = moment.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n ss : '%d sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'дан',\n dd : translator.translate,\n M : 'месец',\n MM : translator.translate,\n y : 'годину',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ss = moment.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n ss : '%d mzuzwana',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sv = moment.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'några sekunder',\n ss : '%d sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en månad',\n MM : '%d månader',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sw = moment.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n ss : 'sekunde %d',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n }, numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n\n var ta = moment.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n ss : '%d விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var te = moment.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[గత] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n ss : '%d సెకన్లు',\n m : 'ఒక నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'ఒక గంట',\n hh : '%d గంటలు',\n d : 'ఒక రోజు',\n dd : '%d రోజులు',\n M : 'ఒక నెల',\n MM : '%d నెలలు',\n y : 'ఒక సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n ordinal : '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tet = moment.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n ss : 'minutu %d',\n m : 'minutu ida',\n mm : 'minutu %d',\n h : 'oras ida',\n hh : 'oras %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n\n var tg = moment.defineLocale('tg', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Имрӯз соати] LT',\n nextDay : '[Пагоҳ соати] LT',\n lastDay : '[Дирӯз соати] LT',\n nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'баъди %s',\n past : '%s пеш',\n s : 'якчанд сония',\n m : 'як дақиқа',\n mm : '%d дақиқа',\n h : 'як соат',\n hh : '%d соат',\n d : 'як рӯз',\n dd : '%d рӯз',\n M : 'як моҳ',\n MM : '%d моҳ',\n y : 'як сол',\n yy : '%d сол'\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var th = moment.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n ss : '%d วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tlPh = moment.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n ss : '%d segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n ss : translate,\n m : 'wa’ tup',\n mm : translate,\n h : 'wa’ rep',\n hh : translate,\n d : 'wa’ jaj',\n dd : translate,\n M : 'wa’ jar',\n MM : translate,\n y : 'wa’ DIS',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlh;\n\n})));\n","\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n var suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n };\n\n var tr = moment.defineLocale('tr', {\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[gelecek] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n ss : '%d saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'ss': [number + ' secunds', '' + number + ' secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzm = moment.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n ss : '%d ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'ⴰⵢoⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n ss : '%d imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saɛa',\n hh : '%d tassaɛin',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js language configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY р.',\n LLL : 'D MMMM YYYY р., HH:mm',\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'годину',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'місяць',\n MM : relativeTimeWithPlural,\n y : 'рік',\n yy : relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر'\n ];\n var days = [\n 'اتوار',\n 'پیر',\n 'منگل',\n 'بدھ',\n 'جمعرات',\n 'جمعہ',\n 'ہفتہ'\n ];\n\n var ur = moment.defineLocale('ur', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[آج بوقت] LT',\n nextDay : '[کل بوقت] LT',\n nextWeek : 'dddd [بوقت] LT',\n lastDay : '[گذشتہ روز بوقت] LT',\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s بعد',\n past : '%s قبل',\n s : 'چند سیکنڈ',\n ss : '%d سیکنڈ',\n m : 'ایک منٹ',\n mm : '%d منٹ',\n h : 'ایک گھنٹہ',\n hh : '%d گھنٹے',\n d : 'ایک دن',\n dd : '%d دن',\n M : 'ایک ماہ',\n MM : '%d ماہ',\n y : 'ایک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uz = moment.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n ss : '%d фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Bugun soat] LT [da]',\n nextDay : '[Ertaga] LT [da]',\n nextWeek : 'dddd [kuni soat] LT [da]',\n lastDay : '[Kecha soat] LT [da]',\n lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Yaqin %s ichida',\n past : 'Bir necha %s oldin',\n s : 'soniya',\n ss : '%d soniya',\n m : 'bir daqiqa',\n mm : '%d daqiqa',\n h : 'bir soat',\n hh : '%d soat',\n d : 'bir kun',\n dd : '%d kun',\n M : 'bir oy',\n MM : '%d oy',\n y : 'bir yil',\n yy : '%d yil'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var vi = moment.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n ss : '%d giây' ,\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n ss : '%d s~écóñ~ds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var yo = moment.defineLocale('yo', {\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Ònì ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[Àna ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'ìsẹjú aayá die',\n ss :'aayá %d',\n m : 'ìsẹjú kan',\n mm : 'ìsẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osù kan',\n MM : 'osù %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhCn = moment.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日Ah点mm分',\n LLLL : 'YYYY年M月D日ddddAh点mm分',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n ss : '%d 秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 年',\n yy : '%d 年'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhHk = moment.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhTw = moment.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天] LT',\n nextDay : '[明天] LT',\n nextWeek : '[下]dddd LT',\n lastDay : '[昨天] LT',\n lastWeek : '[上]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhTw;\n\n})));\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\nexports.blobConstructor = false\ntry {\n\tnew Blob([new ArrayBuffer(1)])\n\texports.blobConstructor = true\n} catch (e) {}\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// For some strange reason, Safari 7.0 reports typeof global.ArrayBuffer === 'object'.\n// Safari 7.1 appears to have fixed this bug.\nvar haveArrayBuffer = typeof global.ArrayBuffer !== 'undefined'\nvar haveSlice = haveArrayBuffer && isFunction(global.ArrayBuffer.prototype.slice)\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || (haveArrayBuffer && checkTypeSupport('arraybuffer'))\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && haveSlice && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && haveArrayBuffer &&\n\tcheckTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nexports.vbArray = isFunction(global.VBArray)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, fetchTimer) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(new Buffer(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tif (result.done) {\n\t\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(new Buffer(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tglobal.clearTimeout(fetchTimer)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text:vbarray': // For IE9\n\t\t\tif (xhr.readyState !== rStates.DONE)\n\t\t\t\tbreak\n\t\t\ttry {\n\t\t\t\t// This fails in IE8\n\t\t\t\tresponse = new global.VBArray(xhr.responseBody).toArray()\n\t\t\t} catch (e) {}\n\t\t\tif (response !== null) {\n\t\t\t\tself.push(new Buffer(response))\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Falls through in IE8\t\n\t\tcase 'text':\n\t\t\ttry { // This will fail when readyState = 3 in IE9. Switch mode and wait for readyState = 4\n\t\t\t\tresponse = xhr.responseText\n\t\t\t} catch (e) {\n\t\t\t\tself._mode = 'text:vbarray'\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = new Buffer(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(new Buffer(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(new Buffer(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tself.push(null)\n\t}\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\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/***/ \"014b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(\"e53d\");\nvar has = __webpack_require__(\"07e3\");\nvar DESCRIPTORS = __webpack_require__(\"8e60\");\nvar $export = __webpack_require__(\"63b6\");\nvar redefine = __webpack_require__(\"9138\");\nvar META = __webpack_require__(\"ebfd\").KEY;\nvar $fails = __webpack_require__(\"294c\");\nvar shared = __webpack_require__(\"dbdb\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar uid = __webpack_require__(\"62a0\");\nvar wks = __webpack_require__(\"5168\");\nvar wksExt = __webpack_require__(\"ccb9\");\nvar wksDefine = __webpack_require__(\"6718\");\nvar enumKeys = __webpack_require__(\"47ee\");\nvar isArray = __webpack_require__(\"9003\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar isObject = __webpack_require__(\"f772\");\nvar toObject = __webpack_require__(\"241e\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar createDesc = __webpack_require__(\"aebd\");\nvar _create = __webpack_require__(\"a159\");\nvar gOPNExt = __webpack_require__(\"0395\");\nvar $GOPD = __webpack_require__(\"bf0b\");\nvar $GOPS = __webpack_require__(\"9aa9\");\nvar $DP = __webpack_require__(\"d9f6\");\nvar $keys = __webpack_require__(\"c3a1\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(\"6abf\").f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(\"355d\").f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(\"b8e3\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(\"35e8\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"0395\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(\"36c3\");\nvar gOPN = __webpack_require__(\"6abf\").f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n/***/ }),\n\n/***/ \"07e3\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"0a49\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(\"9b43\");\nvar IObject = __webpack_require__(\"626a\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar asc = __webpack_require__(\"cd1c\");\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"0fc9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"1169\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"2d95\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"1173\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"11e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"52a7\");\nvar createDesc = __webpack_require__(\"4630\");\nvar toIObject = __webpack_require__(\"6821\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar has = __webpack_require__(\"69a8\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"9e1e\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"1654\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $at = __webpack_require__(\"71c1\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(\"30f1\")(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"1691\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"1af6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = __webpack_require__(\"63b6\");\n\n$export($export.S, 'Array', { isArray: __webpack_require__(\"9003\") });\n\n\n/***/ }),\n\n/***/ \"1bc3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"f772\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"1ec9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nvar document = __webpack_require__(\"e53d\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"20d6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = __webpack_require__(\"5ca1\");\nvar $find = __webpack_require__(\"0a49\")(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(\"9c6c\")(KEY);\n\n\n/***/ }),\n\n/***/ \"20fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"241e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"24c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar global = __webpack_require__(\"e53d\");\nvar ctx = __webpack_require__(\"d864\");\nvar classof = __webpack_require__(\"40c3\");\nvar $export = __webpack_require__(\"63b6\");\nvar isObject = __webpack_require__(\"f772\");\nvar aFunction = __webpack_require__(\"79aa\");\nvar anInstance = __webpack_require__(\"1173\");\nvar forOf = __webpack_require__(\"a22a\");\nvar speciesConstructor = __webpack_require__(\"f201\");\nvar task = __webpack_require__(\"4178\").set;\nvar microtask = __webpack_require__(\"aba2\")();\nvar newPromiseCapabilityModule = __webpack_require__(\"656e\");\nvar perform = __webpack_require__(\"4439\");\nvar userAgent = __webpack_require__(\"bc13\");\nvar promiseResolve = __webpack_require__(\"cd78\");\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[__webpack_require__(\"5168\")('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = __webpack_require__(\"5c95\")($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\n__webpack_require__(\"45f2\")($Promise, PROMISE);\n__webpack_require__(\"4c95\")(PROMISE);\nWrapper = __webpack_require__(\"584a\")[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(\"4ee1\")(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ \"252c\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export install */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ResizeObserver; });\nfunction getInternetExplorerVersion() {\n\tvar ua = window.navigator.userAgent;\n\n\tvar msie = ua.indexOf('MSIE ');\n\tif (msie > 0) {\n\t\t// IE 10 or older => return version number\n\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t}\n\n\tvar trident = ua.indexOf('Trident/');\n\tif (trident > 0) {\n\t\t// IE 11 => return version number\n\t\tvar rv = ua.indexOf('rv:');\n\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t}\n\n\tvar edge = ua.indexOf('Edge/');\n\tif (edge > 0) {\n\t\t// Edge (IE 12+) => return version number\n\t\treturn parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n\t}\n\n\t// other browser\n\treturn -1;\n}\n\nvar isIE = void 0;\n\nfunction initCompat() {\n\tif (!initCompat.init) {\n\t\tinitCompat.init = true;\n\t\tisIE = getInternetExplorerVersion() !== -1;\n\t}\n}\n\nvar ResizeObserver = { render: function render() {\n\t\tvar _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"resize-observer\", attrs: { \"tabindex\": \"-1\" } });\n\t}, staticRenderFns: [], _scopeId: 'data-v-b329ee4c',\n\tname: 'resize-observer',\n\n\tmethods: {\n\t\tcompareAndNotify: function compareAndNotify() {\n\t\t\tif (this._w !== this.$el.offsetWidth || this._h !== this.$el.offsetHeight) {\n\t\t\t\tthis._w = this.$el.offsetWidth;\n\t\t\t\tthis._h = this.$el.offsetHeight;\n\t\t\t\tthis.$emit('notify');\n\t\t\t}\n\t\t},\n\t\taddResizeHandlers: function addResizeHandlers() {\n\t\t\tthis._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n\t\t\tthis.compareAndNotify();\n\t\t},\n\t\tremoveResizeHandlers: function removeResizeHandlers() {\n\t\t\tif (this._resizeObject && this._resizeObject.onload) {\n\t\t\t\tif (!isIE && this._resizeObject.contentDocument) {\n\t\t\t\t\tthis._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n\t\t\t\t}\n\t\t\t\tdelete this._resizeObject.onload;\n\t\t\t}\n\t\t}\n\t},\n\n\tmounted: function mounted() {\n\t\tvar _this = this;\n\n\t\tinitCompat();\n\t\tthis.$nextTick(function () {\n\t\t\t_this._w = _this.$el.offsetWidth;\n\t\t\t_this._h = _this.$el.offsetHeight;\n\t\t});\n\t\tvar object = document.createElement('object');\n\t\tthis._resizeObject = object;\n\t\tobject.setAttribute('aria-hidden', 'true');\n\t\tobject.setAttribute('tabindex', -1);\n\t\tobject.onload = this.addResizeHandlers;\n\t\tobject.type = 'text/html';\n\t\tif (isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t\tobject.data = 'about:blank';\n\t\tif (!isIE) {\n\t\t\tthis.$el.appendChild(object);\n\t\t}\n\t},\n\tbeforeDestroy: function beforeDestroy() {\n\t\tthis.removeResizeHandlers();\n\t}\n};\n\n// Install the components\nfunction install(Vue) {\n\tVue.component('resize-observer', ResizeObserver);\n\tVue.component('ResizeObserver', ResizeObserver);\n}\n\n// Plugin\nvar plugin = {\n\t// eslint-disable-next-line no-undef\n\tversion: \"0.4.5\",\n\tinstall: install\n};\n\n// Auto-install\nvar GlobalVue = null;\nif (typeof window !== 'undefined') {\n\tGlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n\tGlobalVue = global.Vue;\n}\nif (GlobalVue) {\n\tGlobalVue.use(plugin);\n}\n\n\n/* unused harmony default export */ var _unused_webpack_default_export = (plugin);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"25eb\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"294c\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"3024\":\n/***/ (function(module, exports) {\n\n// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n/***/ }),\n\n/***/ \"30f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar $export = __webpack_require__(\"63b6\");\nvar redefine = __webpack_require__(\"9138\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar $iterCreate = __webpack_require__(\"8f60\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar getPrototypeOf = __webpack_require__(\"53e2\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"32fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"e53d\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"3314\":\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_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_46e105de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"8f82\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_46e105de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_46e105de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_46e105de_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"335c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"6b4c\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"355d\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"35e8\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar createDesc = __webpack_require__(\"aebd\");\nmodule.exports = __webpack_require__(\"8e60\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"36c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"335c\");\nvar defined = __webpack_require__(\"25eb\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"3702\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// check on default Array iterator\nvar Iterators = __webpack_require__(\"481b\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"3846\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 21.2.5.3 get RegExp.prototype.flags()\nif (__webpack_require__(\"9e1e\") && /./g.flags != 'g') __webpack_require__(\"86cc\").f(RegExp.prototype, 'flags', {\n configurable: true,\n get: __webpack_require__(\"0bfb\")\n});\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"3a38\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"3c11\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// https://github.com/tc39/proposal-promise-finally\n\nvar $export = __webpack_require__(\"63b6\");\nvar core = __webpack_require__(\"584a\");\nvar global = __webpack_require__(\"e53d\");\nvar speciesConstructor = __webpack_require__(\"f201\");\nvar promiseResolve = __webpack_require__(\"cd78\");\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n/***/ }),\n\n/***/ \"40c3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"6b4c\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"4178\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(\"d864\");\nvar invoke = __webpack_require__(\"3024\");\nvar html = __webpack_require__(\"32fc\");\nvar cel = __webpack_require__(\"1ec9\");\nvar global = __webpack_require__(\"e53d\");\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (__webpack_require__(\"6b4c\")(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"43fc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/proposal-promise-try\nvar $export = __webpack_require__(\"63b6\");\nvar newPromiseCapability = __webpack_require__(\"656e\");\nvar perform = __webpack_require__(\"4439\");\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n/***/ }),\n\n/***/ \"4439\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n/***/ }),\n\n/***/ \"454f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"46a7\");\nvar $Object = __webpack_require__(\"584a\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"45f2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"d9f6\").f;\nvar has = __webpack_require__(\"07e3\");\nvar TAG = __webpack_require__(\"5168\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n\n/***/ \"46a7\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(\"63b6\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(\"8e60\"), 'Object', { defineProperty: __webpack_require__(\"d9f6\").f });\n\n\n/***/ }),\n\n/***/ \"47ee\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(\"c3a1\");\nvar gOPS = __webpack_require__(\"9aa9\");\nvar pIE = __webpack_require__(\"355d\");\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n/***/ }),\n\n/***/ \"481b\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"4883\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(exports,\"__esModule\",{value:!0}),exports.colorNameToHex=exports.isColorName=exports.HexToRgba=exports.ShadeColor=void 0;var ShadeColor=function(e,f){var a=parseInt(e.substring(1,3),16),r=parseInt(e.substring(3,5),16),o=parseInt(e.substring(5,7),16);return a=parseInt(a*(100+f)/100),r=parseInt(r*(100+f)/100),o=parseInt(o*(100+f)/100),a=a<255?a:255,r=r<255?r:255,o=o<255?o:255,\"#\"+(1===a.toString(16).length?\"0\"+a.toString(16):a.toString(16))+(1===r.toString(16).length?\"0\"+r.toString(16):r.toString(16))+(1===o.toString(16).length?\"0\"+o.toString(16):o.toString(16))};exports.ShadeColor=ShadeColor;var HexToRgba=function(e,f){var a;if(/^#([A-Fa-f0-9]{3}){1,2}$/.test(e))return 3===(a=e.substring(1).split(\"\")).length&&(a=[a[0],a[0],a[1],a[1],a[2],a[2]]),a=\"0x\".concat(a.join(\"\")),\"rgba(\".concat([a>>16&255,a>>8&255,255&a].join(\", \"),\", \").concat(f,\")\");throw new Error(\"Bad Hex\")};exports.HexToRgba=HexToRgba;var isColorName=function(e){if(!e)throw new Error(\"isColorName: No color\");return!e.includes(\"#\")};exports.isColorName=isColorName;var colorNameToHex=function(e){if(!e)throw new Error(\"colorNameToHex: No color\");var f={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",gold:\"#ffd700\",goldenrod:\"#daa520\",gray:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",\"indianred \":\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavender:\"#e6e6fa\",lavenderblush:\"#fff0f5\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgrey:\"#d3d3d3\",lightgreen:\"#90ee90\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370d8\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#d87093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",rebeccapurple:\"#663399\",red:\"#ff0000\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\"};return void 0!==f[e.toLowerCase()]&&f[e.toLowerCase()]};exports.colorNameToHex=colorNameToHex;\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"4c95\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(\"e53d\");\nvar core = __webpack_require__(\"584a\");\nvar dP = __webpack_require__(\"d9f6\");\nvar DESCRIPTORS = __webpack_require__(\"8e60\");\nvar SPECIES = __webpack_require__(\"5168\")('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n/***/ }),\n\n/***/ \"4ee1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n/***/ }),\n\n/***/ \"50ed\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"5168\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"dbdb\")('wks');\nvar uid = __webpack_require__(\"62a0\");\nvar Symbol = __webpack_require__(\"e53d\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"53e2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"07e3\");\nvar toObject = __webpack_require__(\"241e\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"549b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ctx = __webpack_require__(\"d864\");\nvar $export = __webpack_require__(\"63b6\");\nvar toObject = __webpack_require__(\"241e\");\nvar call = __webpack_require__(\"b0dc\");\nvar isArrayIter = __webpack_require__(\"3702\");\nvar toLength = __webpack_require__(\"b447\");\nvar createProperty = __webpack_require__(\"20fd\");\nvar getIterFn = __webpack_require__(\"7cd6\");\n\n$export($export.S + $export.F * !__webpack_require__(\"4ee1\")(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ \"54a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6c1c\");\n__webpack_require__(\"1654\");\nmodule.exports = __webpack_require__(\"95d5\");\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5559\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"dbdb\")('keys');\nvar uid = __webpack_require__(\"62a0\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"584a\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"5b4e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"36c3\");\nvar toLength = __webpack_require__(\"b447\");\nvar toAbsoluteIndex = __webpack_require__(\"0fc9\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"5c95\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hide = __webpack_require__(\"35e8\");\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5dbc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar setPrototypeOf = __webpack_require__(\"8b97\").set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"62a0\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"63b6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar core = __webpack_require__(\"584a\");\nvar ctx = __webpack_require__(\"d864\");\nvar hide = __webpack_require__(\"35e8\");\nvar has = __webpack_require__(\"07e3\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"656e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = __webpack_require__(\"79aa\");\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ \"6718\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar core = __webpack_require__(\"584a\");\nvar LIBRARY = __webpack_require__(\"b8e3\");\nvar wksExt = __webpack_require__(\"ccb9\");\nvar defineProperty = __webpack_require__(\"d9f6\").f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"67bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"f921\");\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"696e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"c207\");\n__webpack_require__(\"1654\");\n__webpack_require__(\"6c1c\");\n__webpack_require__(\"24c5\");\n__webpack_require__(\"3c11\");\n__webpack_require__(\"43fc\");\nmodule.exports = __webpack_require__(\"584a\").Promise;\n\n\n/***/ }),\n\n/***/ \"6996\":\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_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"92cc\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"69d3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6718\")('asyncIterator');\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"6abf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(\"e6f3\");\nvar hiddenKeys = __webpack_require__(\"1691\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"6b4c\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"6b54\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"3846\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar $flags = __webpack_require__(\"0bfb\");\nvar DESCRIPTORS = __webpack_require__(\"9e1e\");\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n __webpack_require__(\"2aba\")(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (__webpack_require__(\"79e5\")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n\n\n/***/ }),\n\n/***/ \"6c1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"c367\");\nvar global = __webpack_require__(\"e53d\");\nvar hide = __webpack_require__(\"35e8\");\nvar Iterators = __webpack_require__(\"481b\");\nvar TO_STRING_TAG = __webpack_require__(\"5168\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n\n/***/ \"71c1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"3a38\");\nvar defined = __webpack_require__(\"25eb\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"7514\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(\"5ca1\");\nvar $find = __webpack_require__(\"0a49\")(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(\"9c6c\")(KEY);\n\n\n/***/ }),\n\n/***/ \"765d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"6718\")('observable');\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"774e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"d2d5\");\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"794b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"8e60\") && !__webpack_require__(\"294c\")(function () {\n return Object.defineProperty(__webpack_require__(\"1ec9\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"795b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"696e\");\n\n/***/ }),\n\n/***/ \"79aa\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7cd6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"7e90\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"d9f6\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar getKeys = __webpack_require__(\"c3a1\");\n\nmodule.exports = __webpack_require__(\"8e60\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"7f7f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\").f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(\"9e1e\") && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"8436\":\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"85f2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"454f\");\n\n/***/ }),\n\n/***/ \"85fe\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ObserveVisibility; });\n/* unused harmony export install */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState =\n/*#__PURE__*/\nfunction () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n vnode.context.$nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && this.options.intersection.threshold || 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction bind(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction update(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unbind(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n bind(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unbind(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n bind: bind,\n update: update,\n unbind: unbind\n};\n\nfunction install(Vue) {\n Vue.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"0.4.6\",\n install: install\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\n/* unused harmony default export */ var _unused_webpack_default_export = (plugin);\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"8875\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// addapted from the document.currentScript polyfill by Adam Miller\n// MIT license\n// source: https://github.com/amiller-gh/currentScript-polyfill\n\n// added support for Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1620505\n\n(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\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__));\n } else {}\n}(typeof self !== 'undefined' ? self : this, function () {\n function getCurrentScript () {\n if (document.currentScript) {\n return document.currentScript\n }\n \n // IE 8-10 support script readyState\n // IE 11+ & Firefox support stack trace\n try {\n throw new Error();\n }\n catch (err) {\n // Find the second match for the \"at\" string to get file src url from stack.\n var ieStackRegExp = /.*at [^(]*\\((.*):(.+):(.+)\\)$/ig,\n ffStackRegExp = /@([^@]*):(\\d+):(\\d+)\\s*$/ig,\n stackDetails = ieStackRegExp.exec(err.stack) || ffStackRegExp.exec(err.stack),\n scriptLocation = (stackDetails && stackDetails[1]) || false,\n line = (stackDetails && stackDetails[2]) || false,\n currentLocation = document.location.href.replace(document.location.hash, ''),\n pageSource,\n inlineScriptSourceRegExp,\n inlineScriptSource,\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n \n if (scriptLocation === currentLocation) {\n pageSource = document.documentElement.outerHTML;\n inlineScriptSourceRegExp = new RegExp('(?:[^\\\\n]+?\\\\n){0,' + (line - 2) + '}[^<]*<script>([\\\\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/***/ \"8b97\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(\"d3f4\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(\"9b43\")(Function.call, __webpack_require__(\"11e9\").f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n/***/ }),\n\n/***/ \"8bbf\":\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"vue\");\n\n/***/ }),\n\n/***/ \"8e60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"294c\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"8e6e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = __webpack_require__(\"5ca1\");\nvar ownKeys = __webpack_require__(\"990b\");\nvar toIObject = __webpack_require__(\"6821\");\nvar gOPD = __webpack_require__(\"11e9\");\nvar createProperty = __webpack_require__(\"f1ae\");\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ \"8f60\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"a159\");\nvar descriptor = __webpack_require__(\"aebd\");\nvar setToStringTag = __webpack_require__(\"45f2\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"35e8\")(IteratorPrototype, __webpack_require__(\"5168\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"8f82\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"9003\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"6b4c\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"9093\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar hiddenKeys = __webpack_require__(\"e11e\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"9138\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"35e8\");\n\n\n/***/ }),\n\n/***/ \"92cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"95d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(\"40c3\");\nvar ITERATOR = __webpack_require__(\"5168\")('iterator');\nvar Iterators = __webpack_require__(\"481b\");\nmodule.exports = __webpack_require__(\"584a\").isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n/***/ }),\n\n/***/ \"96cf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : undefined\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n\n\n/***/ }),\n\n/***/ \"990b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// all object keys, includes non-enumerable and symbols\nvar gOPN = __webpack_require__(\"9093\");\nvar gOPS = __webpack_require__(\"2621\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar Reflect = __webpack_require__(\"7726\").Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"9aa9\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a159\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"e4ae\");\nvar dPs = __webpack_require__(\"7e90\");\nvar enumBugKeys = __webpack_require__(\"1691\");\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"1ec9\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"32fc\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"a22a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar ctx = __webpack_require__(\"d864\");\nvar call = __webpack_require__(\"b0dc\");\nvar isArrayIter = __webpack_require__(\"3702\");\nvar anObject = __webpack_require__(\"e4ae\");\nvar toLength = __webpack_require__(\"b447\");\nvar getIterFn = __webpack_require__(\"7cd6\");\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n/***/ }),\n\n/***/ \"a745\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"f410\");\n\n/***/ }),\n\n/***/ \"aa77\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(\"5ca1\");\nvar defined = __webpack_require__(\"be13\");\nvar fails = __webpack_require__(\"79e5\");\nvar spaces = __webpack_require__(\"fdef\");\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"aba2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar macrotask = __webpack_require__(\"4178\").set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = __webpack_require__(\"6b4c\")(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"aebd\":\n/***/ (function(module, exports) {\n\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\n\n/***/ }),\n\n/***/ \"b0dc\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(\"e4ae\");\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n/***/ }),\n\n/***/ \"b447\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"3a38\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"b8ac\":\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_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"d052\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"b8e3\":\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n\n/***/ \"bc13\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"e53d\");\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"bf0b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"355d\");\nvar createDesc = __webpack_require__(\"aebd\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar has = __webpack_require__(\"07e3\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"794b\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"8e60\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"c207\":\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c367\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"8436\");\nvar step = __webpack_require__(\"50ed\");\nvar Iterators = __webpack_require__(\"481b\");\nvar toIObject = __webpack_require__(\"36c3\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"30f1\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"c3a1\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"e6f3\");\nvar enumBugKeys = __webpack_require__(\"1691\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"c5f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(\"7726\");\nvar has = __webpack_require__(\"69a8\");\nvar cof = __webpack_require__(\"2d95\");\nvar inheritIfRequired = __webpack_require__(\"5dbc\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar fails = __webpack_require__(\"79e5\");\nvar gOPN = __webpack_require__(\"9093\").f;\nvar gOPD = __webpack_require__(\"11e9\").f;\nvar dP = __webpack_require__(\"86cc\").f;\nvar $trim = __webpack_require__(\"aa77\").trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(\"2aeb\")(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = __webpack_require__(\"9e1e\") ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n __webpack_require__(\"2aba\")(global, NUMBER, $Number);\n}\n\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\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/***/ \"c8bb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"54a1\");\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ccb9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.f = __webpack_require__(\"5168\");\n\n\n/***/ }),\n\n/***/ \"cd1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(\"e853\");\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n\n\n/***/ }),\n\n/***/ \"cd78\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"e4ae\");\nvar isObject = __webpack_require__(\"f772\");\nvar newPromiseCapability = __webpack_require__(\"656e\");\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d052\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d2d5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1654\");\n__webpack_require__(\"549b\");\nmodule.exports = __webpack_require__(\"584a\").Array.from;\n\n\n/***/ }),\n\n/***/ \"d391\":\n/***/ (function(module) {\n\nmodule.exports = JSON.parse(\"{\\\"AC\\\":\\\"40123\\\",\\\"AD\\\":\\\"312345\\\",\\\"AE\\\":\\\"501234567\\\",\\\"AF\\\":\\\"701234567\\\",\\\"AG\\\":\\\"2684641234\\\",\\\"AI\\\":\\\"2642351234\\\",\\\"AL\\\":\\\"672123456\\\",\\\"AM\\\":\\\"77123456\\\",\\\"AO\\\":\\\"923123456\\\",\\\"AR\\\":\\\"91123456789\\\",\\\"AS\\\":\\\"6847331234\\\",\\\"AT\\\":\\\"664123456\\\",\\\"AU\\\":\\\"412345678\\\",\\\"AW\\\":\\\"5601234\\\",\\\"AX\\\":\\\"412345678\\\",\\\"AZ\\\":\\\"401234567\\\",\\\"BA\\\":\\\"61123456\\\",\\\"BB\\\":\\\"2462501234\\\",\\\"BD\\\":\\\"1812345678\\\",\\\"BE\\\":\\\"470123456\\\",\\\"BF\\\":\\\"70123456\\\",\\\"BG\\\":\\\"48123456\\\",\\\"BH\\\":\\\"36001234\\\",\\\"BI\\\":\\\"79561234\\\",\\\"BJ\\\":\\\"90011234\\\",\\\"BL\\\":\\\"690001234\\\",\\\"BM\\\":\\\"4413701234\\\",\\\"BN\\\":\\\"7123456\\\",\\\"BO\\\":\\\"71234567\\\",\\\"BQ\\\":\\\"3181234\\\",\\\"BR\\\":\\\"11961234567\\\",\\\"BS\\\":\\\"2423591234\\\",\\\"BT\\\":\\\"17123456\\\",\\\"BW\\\":\\\"71123456\\\",\\\"BY\\\":\\\"294911911\\\",\\\"BZ\\\":\\\"6221234\\\",\\\"CA\\\":\\\"5062345678\\\",\\\"CC\\\":\\\"412345678\\\",\\\"CD\\\":\\\"991234567\\\",\\\"CF\\\":\\\"70012345\\\",\\\"CG\\\":\\\"061234567\\\",\\\"CH\\\":\\\"781234567\\\",\\\"CI\\\":\\\"01234567\\\",\\\"CK\\\":\\\"71234\\\",\\\"CL\\\":\\\"221234567\\\",\\\"CM\\\":\\\"671234567\\\",\\\"CN\\\":\\\"13123456789\\\",\\\"CO\\\":\\\"3211234567\\\",\\\"CR\\\":\\\"83123456\\\",\\\"CU\\\":\\\"51234567\\\",\\\"CV\\\":\\\"9911234\\\",\\\"CW\\\":\\\"95181234\\\",\\\"CX\\\":\\\"412345678\\\",\\\"CY\\\":\\\"96123456\\\",\\\"CZ\\\":\\\"601123456\\\",\\\"DE\\\":\\\"15123456789\\\",\\\"DJ\\\":\\\"77831001\\\",\\\"DK\\\":\\\"32123456\\\",\\\"DM\\\":\\\"7672251234\\\",\\\"DO\\\":\\\"8092345678\\\",\\\"DZ\\\":\\\"551234567\\\",\\\"EC\\\":\\\"991234567\\\",\\\"EE\\\":\\\"51234567\\\",\\\"EG\\\":\\\"1001234567\\\",\\\"EH\\\":\\\"650123456\\\",\\\"ER\\\":\\\"7123456\\\",\\\"ES\\\":\\\"612345678\\\",\\\"ET\\\":\\\"911234567\\\",\\\"FI\\\":\\\"412345678\\\",\\\"FJ\\\":\\\"7012345\\\",\\\"FK\\\":\\\"51234\\\",\\\"FM\\\":\\\"3501234\\\",\\\"FO\\\":\\\"211234\\\",\\\"FR\\\":\\\"612345678\\\",\\\"GA\\\":\\\"06031234\\\",\\\"GB\\\":\\\"7400123456\\\",\\\"GD\\\":\\\"4734031234\\\",\\\"GE\\\":\\\"555123456\\\",\\\"GF\\\":\\\"694201234\\\",\\\"GG\\\":\\\"7781123456\\\",\\\"GH\\\":\\\"231234567\\\",\\\"GI\\\":\\\"57123456\\\",\\\"GL\\\":\\\"221234\\\",\\\"GM\\\":\\\"3012345\\\",\\\"GN\\\":\\\"601123456\\\",\\\"GP\\\":\\\"690001234\\\",\\\"GQ\\\":\\\"222123456\\\",\\\"GR\\\":\\\"6912345678\\\",\\\"GT\\\":\\\"51234567\\\",\\\"GU\\\":\\\"6713001234\\\",\\\"GW\\\":\\\"955012345\\\",\\\"GY\\\":\\\"6091234\\\",\\\"HK\\\":\\\"51234567\\\",\\\"HN\\\":\\\"91234567\\\",\\\"HR\\\":\\\"921234567\\\",\\\"HT\\\":\\\"34101234\\\",\\\"HU\\\":\\\"201234567\\\",\\\"ID\\\":\\\"812345678\\\",\\\"IE\\\":\\\"850123456\\\",\\\"IL\\\":\\\"502345678\\\",\\\"IM\\\":\\\"7924123456\\\",\\\"IN\\\":\\\"8123456789\\\",\\\"IO\\\":\\\"3801234\\\",\\\"IQ\\\":\\\"7912345678\\\",\\\"IR\\\":\\\"9123456789\\\",\\\"IS\\\":\\\"6111234\\\",\\\"IT\\\":\\\"3123456789\\\",\\\"JE\\\":\\\"7797712345\\\",\\\"JM\\\":\\\"8762101234\\\",\\\"JO\\\":\\\"790123456\\\",\\\"JP\\\":\\\"9012345678\\\",\\\"KE\\\":\\\"712123456\\\",\\\"KG\\\":\\\"700123456\\\",\\\"KH\\\":\\\"91234567\\\",\\\"KI\\\":\\\"72001234\\\",\\\"KM\\\":\\\"3212345\\\",\\\"KN\\\":\\\"8697652917\\\",\\\"KP\\\":\\\"1921234567\\\",\\\"KR\\\":\\\"1020000000\\\",\\\"KW\\\":\\\"50012345\\\",\\\"KY\\\":\\\"3453231234\\\",\\\"KZ\\\":\\\"7710009998\\\",\\\"LA\\\":\\\"2023123456\\\",\\\"LB\\\":\\\"71123456\\\",\\\"LC\\\":\\\"7582845678\\\",\\\"LI\\\":\\\"660234567\\\",\\\"LK\\\":\\\"712345678\\\",\\\"LR\\\":\\\"770123456\\\",\\\"LS\\\":\\\"50123456\\\",\\\"LT\\\":\\\"61234567\\\",\\\"LU\\\":\\\"628123456\\\",\\\"LV\\\":\\\"21234567\\\",\\\"LY\\\":\\\"912345678\\\",\\\"MA\\\":\\\"650123456\\\",\\\"MC\\\":\\\"612345678\\\",\\\"MD\\\":\\\"62112345\\\",\\\"ME\\\":\\\"67622901\\\",\\\"MF\\\":\\\"690001234\\\",\\\"MG\\\":\\\"321234567\\\",\\\"MH\\\":\\\"2351234\\\",\\\"MK\\\":\\\"72345678\\\",\\\"ML\\\":\\\"65012345\\\",\\\"MM\\\":\\\"92123456\\\",\\\"MN\\\":\\\"88123456\\\",\\\"MO\\\":\\\"66123456\\\",\\\"MP\\\":\\\"6702345678\\\",\\\"MQ\\\":\\\"696201234\\\",\\\"MR\\\":\\\"22123456\\\",\\\"MS\\\":\\\"6644923456\\\",\\\"MT\\\":\\\"96961234\\\",\\\"MU\\\":\\\"52512345\\\",\\\"MV\\\":\\\"7712345\\\",\\\"MW\\\":\\\"991234567\\\",\\\"MX\\\":\\\"12221234567\\\",\\\"MY\\\":\\\"123456789\\\",\\\"MZ\\\":\\\"821234567\\\",\\\"NA\\\":\\\"811234567\\\",\\\"NC\\\":\\\"751234\\\",\\\"NE\\\":\\\"93123456\\\",\\\"NF\\\":\\\"381234\\\",\\\"NG\\\":\\\"8021234567\\\",\\\"NI\\\":\\\"81234567\\\",\\\"NL\\\":\\\"612345678\\\",\\\"NO\\\":\\\"40612345\\\",\\\"NP\\\":\\\"9841234567\\\",\\\"NR\\\":\\\"5551234\\\",\\\"NU\\\":\\\"8884012\\\",\\\"NZ\\\":\\\"211234567\\\",\\\"OM\\\":\\\"92123456\\\",\\\"PA\\\":\\\"61234567\\\",\\\"PE\\\":\\\"912345678\\\",\\\"PF\\\":\\\"87123456\\\",\\\"PG\\\":\\\"70123456\\\",\\\"PH\\\":\\\"9051234567\\\",\\\"PK\\\":\\\"3012345678\\\",\\\"PL\\\":\\\"512345678\\\",\\\"PM\\\":\\\"551234\\\",\\\"PR\\\":\\\"7872345678\\\",\\\"PS\\\":\\\"599123456\\\",\\\"PT\\\":\\\"912345678\\\",\\\"PW\\\":\\\"6201234\\\",\\\"PY\\\":\\\"961456789\\\",\\\"QA\\\":\\\"33123456\\\",\\\"RE\\\":\\\"692123456\\\",\\\"RO\\\":\\\"712034567\\\",\\\"RS\\\":\\\"601234567\\\",\\\"RU\\\":\\\"9123456789\\\",\\\"RW\\\":\\\"720123456\\\",\\\"SA\\\":\\\"512345678\\\",\\\"SB\\\":\\\"7421234\\\",\\\"SC\\\":\\\"2510123\\\",\\\"SD\\\":\\\"911231234\\\",\\\"SE\\\":\\\"701234567\\\",\\\"SG\\\":\\\"81234567\\\",\\\"SH\\\":\\\"51234\\\",\\\"SI\\\":\\\"31234567\\\",\\\"SJ\\\":\\\"41234567\\\",\\\"SK\\\":\\\"912123456\\\",\\\"SL\\\":\\\"25123456\\\",\\\"SM\\\":\\\"66661212\\\",\\\"SN\\\":\\\"701234567\\\",\\\"SO\\\":\\\"71123456\\\",\\\"SR\\\":\\\"7412345\\\",\\\"SS\\\":\\\"977123456\\\",\\\"ST\\\":\\\"9812345\\\",\\\"SV\\\":\\\"70123456\\\",\\\"SX\\\":\\\"7215205678\\\",\\\"SY\\\":\\\"944567890\\\",\\\"SZ\\\":\\\"76123456\\\",\\\"TA\\\":\\\"8999\\\",\\\"TC\\\":\\\"6492311234\\\",\\\"TD\\\":\\\"63012345\\\",\\\"TG\\\":\\\"90112345\\\",\\\"TH\\\":\\\"812345678\\\",\\\"TJ\\\":\\\"917123456\\\",\\\"TK\\\":\\\"7290\\\",\\\"TL\\\":\\\"77212345\\\",\\\"TM\\\":\\\"66123456\\\",\\\"TN\\\":\\\"20123456\\\",\\\"TO\\\":\\\"7715123\\\",\\\"TR\\\":\\\"5012345678\\\",\\\"TT\\\":\\\"8682911234\\\",\\\"TV\\\":\\\"901234\\\",\\\"TW\\\":\\\"912345678\\\",\\\"TZ\\\":\\\"621234567\\\",\\\"UA\\\":\\\"501234567\\\",\\\"UG\\\":\\\"712345678\\\",\\\"US\\\":\\\"2015550123\\\",\\\"UY\\\":\\\"94231234\\\",\\\"UZ\\\":\\\"912345678\\\",\\\"VA\\\":\\\"3123456789\\\",\\\"VC\\\":\\\"7844301234\\\",\\\"VE\\\":\\\"4121234567\\\",\\\"VG\\\":\\\"2843001234\\\",\\\"VI\\\":\\\"3406421234\\\",\\\"VN\\\":\\\"912345678\\\",\\\"VU\\\":\\\"5912345\\\",\\\"WF\\\":\\\"501234\\\",\\\"WS\\\":\\\"7212345\\\",\\\"XK\\\":\\\"43201234\\\",\\\"YE\\\":\\\"712345678\\\",\\\"YT\\\":\\\"639012345\\\",\\\"ZA\\\":\\\"711234567\\\",\\\"ZM\\\":\\\"955123456\\\",\\\"ZW\\\":\\\"712345678\\\"}\");\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d864\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"79aa\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"d9f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"e4ae\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"794b\");\nvar toPrimitive = __webpack_require__(\"1bc3\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"8e60\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"dbdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"584a\");\nvar global = __webpack_require__(\"e53d\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"b8e3\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"e4ae\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"f772\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e508\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export DynamicScroller */\n/* unused harmony export DynamicScrollerItem */\n/* unused harmony export IdState */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return __vue_component__; });\n/* harmony import */ var vue_resize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"252c\");\n/* harmony import */ var vue_observe_visibility__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"85fe\");\n/* harmony import */ var scrollparent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"ed83\");\n/* harmony import */ var scrollparent__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(scrollparent__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"8bbf\");\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nvar config = {\n itemsLimit: 1000\n};\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = o[Symbol.iterator]();\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nvar props = {\n items: {\n type: Array,\n required: true\n },\n keyField: {\n type: String,\n default: 'id'\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: function validator(value) {\n return ['vertical', 'horizontal'].includes(value);\n }\n }\n};\nfunction simpleArray() {\n return this.items.length && _typeof(this.items[0]) !== 'object';\n}\n\nvar supportsPassive = false;\n\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nvar uid = 0;\nvar script = {\n name: 'RecycleScroller',\n components: {\n ResizeObserver: vue_resize__WEBPACK_IMPORTED_MODULE_0__[/* ResizeObserver */ \"a\"]\n },\n directives: {\n ObserveVisibility: vue_observe_visibility__WEBPACK_IMPORTED_MODULE_1__[/* ObserveVisibility */ \"a\"]\n },\n props: _objectSpread2({}, props, {\n itemSize: {\n type: Number,\n default: null\n },\n minItemSize: {\n type: [Number, String],\n default: null\n },\n sizeField: {\n type: String,\n default: 'size'\n },\n typeField: {\n type: String,\n default: 'type'\n },\n buffer: {\n type: Number,\n default: 200\n },\n pageMode: {\n type: Boolean,\n default: false\n },\n prerender: {\n type: Number,\n default: 0\n },\n emitUpdate: {\n type: Boolean,\n default: false\n }\n }),\n data: function data() {\n return {\n pool: [],\n totalSize: 0,\n ready: false,\n hoverKey: null\n };\n },\n computed: {\n sizes: function sizes() {\n if (this.itemSize === null) {\n var sizes = {\n '-1': {\n accumulator: 0\n }\n };\n var items = this.items;\n var field = this.sizeField;\n var minItemSize = this.minItemSize;\n var computedMinSize = 10000;\n var accumulator = 0;\n var current;\n\n for (var i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n\n accumulator += current;\n sizes[i] = {\n accumulator: accumulator,\n size: current\n };\n } // eslint-disable-next-line\n\n\n this.$_computedMinItemSize = computedMinSize;\n return sizes;\n }\n\n return [];\n },\n simpleArray: simpleArray\n },\n watch: {\n items: function items() {\n this.updateVisibleItems(true);\n },\n pageMode: function pageMode() {\n this.applyPageMode();\n this.updateVisibleItems(false);\n },\n sizes: {\n handler: function handler() {\n this.updateVisibleItems(false);\n },\n deep: true\n }\n },\n created: function created() {\n this.$_startIndex = 0;\n this.$_endIndex = 0;\n this.$_views = new Map();\n this.$_unusedViews = new Map();\n this.$_scrollDirty = false;\n this.$_lastUpdateScrollPosition = 0; // In SSR mode, we also prerender the same number of item for the first render\n // to avoir mismatch between server and client templates\n\n if (this.prerender) {\n this.$_prerender = true;\n this.updateVisibleItems(false);\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.applyPageMode();\n this.$nextTick(function () {\n // In SSR mode, render the real number of visible items\n _this.$_prerender = false;\n\n _this.updateVisibleItems(true);\n\n _this.ready = true;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.removeListeners();\n },\n methods: {\n addView: function addView(pool, index, item, key, type) {\n var view = {\n item: item,\n position: 0\n };\n var nonReactive = {\n id: uid++,\n index: index,\n used: true,\n key: key,\n type: type\n };\n Object.defineProperty(view, 'nr', {\n configurable: false,\n value: nonReactive\n });\n pool.push(view);\n return view;\n },\n unuseView: function unuseView(view) {\n var fake = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var unusedViews = this.$_unusedViews;\n var type = view.nr.type;\n var unusedPool = unusedViews.get(type);\n\n if (!unusedPool) {\n unusedPool = [];\n unusedViews.set(type, unusedPool);\n }\n\n unusedPool.push(view);\n\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n this.$_views.delete(view.nr.key);\n }\n },\n handleResize: function handleResize() {\n this.$emit('resize');\n if (this.ready) this.updateVisibleItems(false);\n },\n handleScroll: function handleScroll(event) {\n var _this2 = this;\n\n if (!this.$_scrollDirty) {\n this.$_scrollDirty = true;\n requestAnimationFrame(function () {\n _this2.$_scrollDirty = false;\n\n var _this2$updateVisibleI = _this2.updateVisibleItems(false, true),\n continuous = _this2$updateVisibleI.continuous; // It seems sometimes chrome doesn't fire scroll event :/\n // When non continous scrolling is ending, we force a refresh\n\n\n if (!continuous) {\n clearTimeout(_this2.$_refreshTimout);\n _this2.$_refreshTimout = setTimeout(_this2.handleScroll, 100);\n }\n });\n }\n },\n handleVisibilityChange: function handleVisibilityChange(isVisible, entry) {\n var _this3 = this;\n\n if (this.ready) {\n if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n this.$emit('visible');\n requestAnimationFrame(function () {\n _this3.updateVisibleItems(false);\n });\n } else {\n this.$emit('hidden');\n }\n }\n },\n updateVisibleItems: function updateVisibleItems(checkItem) {\n var checkPositionDiff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var itemSize = this.itemSize;\n var minItemSize = this.$_computedMinItemSize;\n var typeField = this.typeField;\n var keyField = this.simpleArray ? null : this.keyField;\n var items = this.items;\n var count = items.length;\n var sizes = this.sizes;\n var views = this.$_views;\n var unusedViews = this.$_unusedViews;\n var pool = this.pool;\n var startIndex, endIndex;\n var totalSize;\n\n if (!count) {\n startIndex = endIndex = totalSize = 0;\n } else if (this.$_prerender) {\n startIndex = 0;\n endIndex = this.prerender;\n totalSize = null;\n } else {\n var scroll = this.getScroll(); // Skip update if use hasn't scrolled enough\n\n if (checkPositionDiff) {\n var positionDiff = scroll.start - this.$_lastUpdateScrollPosition;\n if (positionDiff < 0) positionDiff = -positionDiff;\n\n if (itemSize === null && positionDiff < minItemSize || positionDiff < itemSize) {\n return {\n continuous: true\n };\n }\n }\n\n this.$_lastUpdateScrollPosition = scroll.start;\n var buffer = this.buffer;\n scroll.start -= buffer;\n scroll.end += buffer; // Variable size mode\n\n if (itemSize === null) {\n var h;\n var a = 0;\n var b = count - 1;\n var i = ~~(count / 2);\n var oldI; // Searching for startIndex\n\n do {\n oldI = i;\n h = sizes[i].accumulator;\n\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n b = i;\n }\n\n i = ~~((a + b) / 2);\n } while (i !== oldI);\n\n i < 0 && (i = 0);\n startIndex = i; // For container style\n\n totalSize = sizes[count - 1].accumulator; // Searching for endIndex\n\n for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++) {\n }\n\n if (endIndex === -1) {\n endIndex = items.length - 1;\n } else {\n endIndex++; // Bounds\n\n endIndex > count && (endIndex = count);\n }\n } else {\n // Fixed size mode\n startIndex = ~~(scroll.start / itemSize);\n endIndex = Math.ceil(scroll.end / itemSize); // Bounds\n\n startIndex < 0 && (startIndex = 0);\n endIndex > count && (endIndex = count);\n totalSize = count * itemSize;\n }\n }\n\n if (endIndex - startIndex > config.itemsLimit) {\n this.itemsLimitError();\n }\n\n this.totalSize = totalSize;\n var view;\n var continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex;\n\n if (this.$_continuous !== continuous) {\n if (continuous) {\n views.clear();\n unusedViews.clear();\n\n for (var _i = 0, l = pool.length; _i < l; _i++) {\n view = pool[_i];\n this.unuseView(view);\n }\n }\n\n this.$_continuous = continuous;\n } else if (continuous) {\n for (var _i2 = 0, _l = pool.length; _i2 < _l; _i2++) {\n view = pool[_i2];\n\n if (view.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = items.findIndex(function (item) {\n return keyField ? item[keyField] === view.item[keyField] : item === view.item;\n });\n } // Check if index is still in visible range\n\n\n if (view.nr.index === -1 || view.nr.index < startIndex || view.nr.index >= endIndex) {\n this.unuseView(view);\n }\n }\n }\n }\n\n var unusedIndex = continuous ? null : new Map();\n var item, type, unusedPool;\n var v;\n\n for (var _i3 = startIndex; _i3 < endIndex; _i3++) {\n item = items[_i3];\n var key = keyField ? item[keyField] : item;\n\n if (key == null) {\n throw new Error(\"Key is \".concat(key, \" on item (keyField is '\").concat(keyField, \"')\"));\n }\n\n view = views.get(key);\n\n if (!itemSize && !sizes[_i3].size) {\n if (view) this.unuseView(view);\n continue;\n } // No view assigned to item\n\n\n if (!view) {\n type = item[typeField];\n unusedPool = unusedViews.get(type);\n\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n view.item = item;\n view.nr.used = true;\n view.nr.index = _i3;\n view.nr.key = key;\n view.nr.type = type;\n } else {\n view = this.addView(pool, _i3, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = this.addView(pool, _i3, item, key, type);\n this.unuseView(view, true);\n unusedPool = unusedViews.get(type);\n }\n\n view = unusedPool[v];\n view.item = item;\n view.nr.used = true;\n view.nr.index = _i3;\n view.nr.key = key;\n view.nr.type = type;\n unusedIndex.set(type, v + 1);\n v++;\n }\n\n views.set(key, view);\n } else {\n view.nr.used = true;\n view.item = item;\n } // Update position\n\n\n if (itemSize === null) {\n view.position = sizes[_i3 - 1].accumulator;\n } else {\n view.position = _i3 * itemSize;\n }\n }\n\n this.$_startIndex = startIndex;\n this.$_endIndex = endIndex;\n if (this.emitUpdate) this.$emit('update', startIndex, endIndex); // After the user has finished scrolling\n // Sort views so text selection is correct\n\n clearTimeout(this.$_sortTimer);\n this.$_sortTimer = setTimeout(this.sortViews, 300);\n return {\n continuous: continuous\n };\n },\n getListenerTarget: function getListenerTarget() {\n var target = scrollparent__WEBPACK_IMPORTED_MODULE_2___default()(this.$el); // Fix global scroll target for Chrome and Safari\n\n if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n target = window;\n }\n\n return target;\n },\n getScroll: function getScroll() {\n var el = this.$el,\n direction = this.direction;\n var isVertical = direction === 'vertical';\n var scrollState;\n\n if (this.pageMode) {\n var bounds = el.getBoundingClientRect();\n var boundsSize = isVertical ? bounds.height : bounds.width;\n var start = -(isVertical ? bounds.top : bounds.left);\n var size = isVertical ? window.innerHeight : window.innerWidth;\n\n if (start < 0) {\n size += start;\n start = 0;\n }\n\n if (start + size > boundsSize) {\n size = boundsSize - start;\n }\n\n scrollState = {\n start: start,\n end: start + size\n };\n } else if (isVertical) {\n scrollState = {\n start: el.scrollTop,\n end: el.scrollTop + el.clientHeight\n };\n } else {\n scrollState = {\n start: el.scrollLeft,\n end: el.scrollLeft + el.clientWidth\n };\n }\n\n return scrollState;\n },\n applyPageMode: function applyPageMode() {\n if (this.pageMode) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n },\n addListeners: function addListeners() {\n this.listenerTarget = this.getListenerTarget();\n this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive ? {\n passive: true\n } : false);\n this.listenerTarget.addEventListener('resize', this.handleResize);\n },\n removeListeners: function removeListeners() {\n if (!this.listenerTarget) {\n return;\n }\n\n this.listenerTarget.removeEventListener('scroll', this.handleScroll);\n this.listenerTarget.removeEventListener('resize', this.handleResize);\n this.listenerTarget = null;\n },\n scrollToItem: function scrollToItem(index) {\n var scroll;\n\n if (this.itemSize === null) {\n scroll = index > 0 ? this.sizes[index - 1].accumulator : 0;\n } else {\n scroll = index * this.itemSize;\n }\n\n this.scrollToPosition(scroll);\n },\n scrollToPosition: function scrollToPosition(position) {\n if (this.direction === 'vertical') {\n this.$el.scrollTop = position;\n } else {\n this.$el.scrollLeft = position;\n }\n },\n itemsLimitError: function itemsLimitError() {\n var _this4 = this;\n\n setTimeout(function () {\n console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', _this4.$el);\n console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.');\n });\n throw new Error('Rendered items limit reached');\n },\n sortViews: function sortViews() {\n this.pool.sort(function (viewA, viewB) {\n return viewA.nr.index - viewB.nr.index;\n });\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nconst __vue_script__ = script;\n/* template */\nvar __vue_render__ = function() {\n var _obj, _obj$1;\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"observe-visibility\",\n rawName: \"v-observe-visibility\",\n value: _vm.handleVisibilityChange,\n expression: \"handleVisibilityChange\"\n }\n ],\n staticClass: \"vue-recycle-scroller\",\n class:\n ((_obj = {\n ready: _vm.ready,\n \"page-mode\": _vm.pageMode\n }),\n (_obj[\"direction-\" + _vm.direction] = true),\n _obj),\n on: {\n \"&scroll\": function($event) {\n return _vm.handleScroll($event)\n }\n }\n },\n [\n _vm.$slots.before\n ? _c(\n \"div\",\n { staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"before\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n ref: \"wrapper\",\n staticClass: \"vue-recycle-scroller__item-wrapper\",\n style:\n ((_obj$1 = {}),\n (_obj$1[_vm.direction === \"vertical\" ? \"minHeight\" : \"minWidth\"] =\n _vm.totalSize + \"px\"),\n _obj$1)\n },\n _vm._l(_vm.pool, function(view) {\n return _c(\n \"div\",\n {\n key: view.nr.id,\n staticClass: \"vue-recycle-scroller__item-view\",\n class: { hover: _vm.hoverKey === view.nr.key },\n style: _vm.ready\n ? {\n transform:\n \"translate\" +\n (_vm.direction === \"vertical\" ? \"Y\" : \"X\") +\n \"(\" +\n view.position +\n \"px)\"\n }\n : null,\n on: {\n mouseenter: function($event) {\n _vm.hoverKey = view.nr.key;\n },\n mouseleave: function($event) {\n _vm.hoverKey = null;\n }\n }\n },\n [\n _vm._t(\"default\", null, {\n item: view.item,\n index: view.nr.index,\n active: view.nr.used\n })\n ],\n 2\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _vm.$slots.after\n ? _c(\n \"div\",\n { staticClass: \"vue-recycle-scroller__slot\" },\n [_vm._t(\"after\")],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"ResizeObserver\", { on: { notify: _vm.handleResize } })\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$1 = {\n name: 'DynamicScroller',\n components: {\n RecycleScroller: __vue_component__\n },\n inheritAttrs: false,\n provide: function provide() {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(function (entries) {\n var _iterator = _createForOfIteratorHelper(entries),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var entry = _step.value;\n\n if (entry.target) {\n var event = new CustomEvent('resize', {\n detail: {\n contentRect: entry.contentRect\n }\n });\n entry.target.dispatchEvent(event);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver\n };\n },\n props: _objectSpread2({}, props, {\n minItemSize: {\n type: [Number, String],\n required: true\n }\n }),\n data: function data() {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n validSizes: {},\n keyField: this.keyField,\n simpleArray: false\n }\n };\n },\n computed: {\n simpleArray: simpleArray,\n itemsWithSize: function itemsWithSize() {\n var result = [];\n var items = this.items,\n keyField = this.keyField,\n simpleArray = this.simpleArray;\n var sizes = this.vscrollData.sizes;\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var id = simpleArray ? i : item[keyField];\n var size = sizes[id];\n\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n\n result.push({\n item: item,\n id: id,\n size: size\n });\n }\n\n return result;\n },\n listeners: function listeners() {\n var listeners = {};\n\n for (var key in this.$listeners) {\n if (key !== 'resize' && key !== 'visible') {\n listeners[key] = this.$listeners[key];\n }\n }\n\n return listeners;\n }\n },\n watch: {\n items: function items() {\n this.forceUpdate(false);\n },\n simpleArray: {\n handler: function handler(value) {\n this.vscrollData.simpleArray = value;\n },\n immediate: true\n },\n direction: function direction(value) {\n this.forceUpdate(true);\n }\n },\n created: function created() {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n },\n activated: function activated() {\n this.vscrollData.active = true;\n },\n deactivated: function deactivated() {\n this.vscrollData.active = false;\n },\n methods: {\n onScrollerResize: function onScrollerResize() {\n var scroller = this.$refs.scroller;\n\n if (scroller) {\n this.forceUpdate();\n }\n\n this.$emit('resize');\n },\n onScrollerVisible: function onScrollerVisible() {\n this.$emit('vscroll:update', {\n force: false\n });\n this.$emit('visible');\n },\n forceUpdate: function forceUpdate() {\n var clear = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (clear || this.simpleArray) {\n this.vscrollData.validSizes = {};\n }\n\n this.$emit('vscroll:update', {\n force: true\n });\n },\n scrollToItem: function scrollToItem(index) {\n var scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n getItemSize: function getItemSize(item) {\n var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n var id = this.simpleArray ? index != null ? index : this.items.indexOf(item) : item[this.keyField];\n return this.vscrollData.sizes[id] || 0;\n },\n scrollToBottom: function scrollToBottom() {\n var _this = this;\n\n if (this.$_scrollingToBottom) return;\n this.$_scrollingToBottom = true;\n var el = this.$el; // Item is inserted to the DOM\n\n this.$nextTick(function () {\n el.scrollTop = el.scrollHeight + 5000; // Item sizes are computed\n\n var cb = function cb() {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(function () {\n el.scrollTop = el.scrollHeight + 5000;\n\n if (_this.$_undefinedSizes === 0) {\n _this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n\n requestAnimationFrame(cb);\n });\n }\n }\n};\n\n/* script */\nconst __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"RecycleScroller\",\n _vm._g(\n _vm._b(\n {\n ref: \"scroller\",\n attrs: {\n items: _vm.itemsWithSize,\n \"min-item-size\": _vm.minItemSize,\n direction: _vm.direction,\n \"key-field\": \"id\"\n },\n on: { resize: _vm.onScrollerResize, visible: _vm.onScrollerVisible },\n scopedSlots: _vm._u(\n [\n {\n key: \"default\",\n fn: function(ref) {\n var itemWithSize = ref.item;\n var index = ref.index;\n var active = ref.active;\n return [\n _vm._t(\"default\", null, null, {\n item: itemWithSize.item,\n index: index,\n active: active,\n itemWithSize: itemWithSize\n })\n ]\n }\n }\n ],\n null,\n true\n )\n },\n \"RecycleScroller\",\n _vm.$attrs,\n false\n ),\n _vm.listeners\n ),\n [\n _vm._v(\" \"),\n _c(\"template\", { slot: \"before\" }, [_vm._t(\"before\")], 2),\n _vm._v(\" \"),\n _c(\"template\", { slot: \"after\" }, [_vm._t(\"after\")], 2)\n ],\n 2\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$1 = undefined;\n /* scoped */\n const __vue_scope_id__$1 = undefined;\n /* module identifier */\n const __vue_module_identifier__$1 = undefined;\n /* functional template */\n const __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$1 = normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$2 = {\n name: 'DynamicScrollerItem',\n inject: ['vscrollData', 'vscrollParent', 'vscrollResizeObserver'],\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true\n },\n watchData: {\n type: Boolean,\n default: false\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true\n },\n index: {\n type: Number,\n default: undefined\n },\n sizeDependencies: {\n type: [Array, Object],\n default: null\n },\n emitResize: {\n type: Boolean,\n default: false\n },\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n id: function id() {\n return this.vscrollData.simpleArray ? this.index : this.item[this.vscrollData.keyField];\n },\n size: function size() {\n return this.vscrollData.validSizes[this.id] && this.vscrollData.sizes[this.id] || 0;\n },\n finalActive: function finalActive() {\n return this.active && this.vscrollData.active;\n }\n },\n watch: {\n watchData: 'updateWatchData',\n id: function id() {\n if (!this.size) {\n this.onDataUpdate();\n }\n },\n finalActive: function finalActive(value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n }\n },\n created: function created() {\n var _this = this;\n\n if (this.$isServer) return;\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n var _loop = function _loop(k) {\n _this.$watch(function () {\n return _this.sizeDependencies[k];\n }, _this.onDataUpdate);\n };\n\n for (var k in this.sizeDependencies) {\n _loop(k);\n }\n\n this.vscrollParent.$on('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$on('vscroll:update-size', this.onVscrollUpdateSize);\n }\n },\n mounted: function mounted() {\n if (this.vscrollData.active) {\n this.updateSize();\n this.observeSize();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.vscrollParent.$off('vscroll:update', this.onVscrollUpdate);\n this.vscrollParent.$off('vscroll:update-size', this.onVscrollUpdateSize);\n this.unobserveSize();\n },\n methods: {\n updateSize: function updateSize() {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n updateWatchData: function updateWatchData() {\n var _this2 = this;\n\n if (this.watchData) {\n this.$_watchData = this.$watch('data', function () {\n _this2.onDataUpdate();\n }, {\n deep: true\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n onVscrollUpdate: function onVscrollUpdate(_ref) {\n var force = _ref.force;\n\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n onDataUpdate: function onDataUpdate() {\n this.updateSize();\n },\n computeSize: function computeSize(id) {\n var _this3 = this;\n\n this.$nextTick(function () {\n if (_this3.id === id) {\n var width = _this3.$el.offsetWidth;\n var height = _this3.$el.offsetHeight;\n\n _this3.applySize(width, height);\n }\n\n _this3.$_pendingSizeUpdate = null;\n });\n },\n applySize: function applySize(width, height) {\n var size = Math.round(this.vscrollParent.direction === 'vertical' ? height : width);\n\n if (size && this.size !== size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n\n this.$set(this.vscrollData.sizes, this.id, size);\n this.$set(this.vscrollData.validSizes, this.id, true);\n if (this.emitResize) this.$emit('resize', this.id);\n }\n },\n observeSize: function observeSize() {\n if (!this.vscrollResizeObserver) return;\n this.vscrollResizeObserver.observe(this.$el.parentNode);\n this.$el.parentNode.addEventListener('resize', this.onResize);\n },\n unobserveSize: function unobserveSize() {\n if (!this.vscrollResizeObserver) return;\n this.vscrollResizeObserver.unobserve(this.$el.parentNode);\n this.$el.parentNode.removeEventListener('resize', this.onResize);\n },\n onResize: function onResize(event) {\n var _event$detail$content = event.detail.contentRect,\n width = _event$detail$content.width,\n height = _event$detail$content.height;\n this.applySize(width, height);\n }\n },\n render: function render(h) {\n return h(this.tag, this.$slots.default);\n }\n};\n\n/* script */\nconst __vue_script__$2 = script$2;\n\n/* template */\n\n /* style */\n const __vue_inject_styles__$2 = undefined;\n /* scoped */\n const __vue_scope_id__$2 = undefined;\n /* module identifier */\n const __vue_module_identifier__$2 = undefined;\n /* functional template */\n const __vue_is_functional_template__$2 = undefined;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$2 = normalizeComponent(\n {},\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\nfunction IdState () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$idProp = _ref.idProp,\n idProp = _ref$idProp === void 0 ? function (vm) {\n return vm.item.id;\n } : _ref$idProp;\n\n var store = {};\n var vm = new vue__WEBPACK_IMPORTED_MODULE_3___default.a({\n data: function data() {\n return {\n store: store\n };\n }\n }); // @vue/component\n\n return {\n data: function data() {\n return {\n idState: null\n };\n },\n created: function created() {\n var _this = this;\n\n this.$_id = null;\n\n if (typeof idProp === 'function') {\n this.$_getId = function () {\n return idProp.call(_this, _this);\n };\n } else {\n this.$_getId = function () {\n return _this[idProp];\n };\n }\n\n this.$watch(this.$_getId, {\n handler: function handler(value) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.$_id = value;\n });\n },\n immediate: true\n });\n this.$_updateIdState();\n },\n beforeUpdate: function beforeUpdate() {\n this.$_updateIdState();\n },\n methods: {\n /**\n * Initialize an idState\n * @param {number|string} id Unique id for the data\n */\n $_idStateInit: function $_idStateInit(id) {\n var factory = this.$options.idState;\n\n if (typeof factory === 'function') {\n var data = factory.call(this, this);\n vm.$set(store, id, data);\n this.$_id = id;\n return data;\n } else {\n throw new Error('[mixin IdState] Missing `idState` function on component definition.');\n }\n },\n\n /**\n * Ensure idState is created and up-to-date\n */\n $_updateIdState: function $_updateIdState() {\n var id = this.$_getId();\n\n if (id == null) {\n console.warn(\"No id found for IdState with idProp: '\".concat(idProp, \"'.\"));\n }\n\n if (id !== this.$_id) {\n if (!store[id]) {\n this.$_idStateInit(id);\n }\n\n this.idState = store[id];\n }\n }\n }\n };\n}\n\nfunction registerComponents(Vue, prefix) {\n Vue.component(\"\".concat(prefix, \"recycle-scroller\"), __vue_component__);\n Vue.component(\"\".concat(prefix, \"RecycleScroller\"), __vue_component__);\n Vue.component(\"\".concat(prefix, \"dynamic-scroller\"), __vue_component__$1);\n Vue.component(\"\".concat(prefix, \"DynamicScroller\"), __vue_component__$1);\n Vue.component(\"\".concat(prefix, \"dynamic-scroller-item\"), __vue_component__$2);\n Vue.component(\"\".concat(prefix, \"DynamicScrollerItem\"), __vue_component__$2);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"1.0.10\",\n install: function install(Vue, options) {\n var finalOptions = Object.assign({}, {\n installComponents: true,\n componentsPrefix: ''\n }, options);\n\n for (var key in finalOptions) {\n if (typeof finalOptions[key] !== 'undefined') {\n config[key] = finalOptions[key];\n }\n }\n\n if (finalOptions.installComponents) {\n registerComponents(Vue, finalOptions.componentsPrefix);\n }\n }\n};\n\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(plugin);\n}\n\n/* unused harmony default export */ var _unused_webpack_default_export = (plugin);\n\n//# sourceMappingURL=vue-virtual-scroller.esm.js.map\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"e53d\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"e6f3\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"07e3\");\nvar toIObject = __webpack_require__(\"36c3\");\nvar arrayIndexOf = __webpack_require__(\"5b4e\")(false);\nvar IE_PROTO = __webpack_require__(\"5559\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"e853\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar isArray = __webpack_require__(\"1169\");\nvar SPECIES = __webpack_require__(\"2b4c\")('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n\n/***/ }),\n\n/***/ \"ebfd\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar META = __webpack_require__(\"62a0\")('meta');\nvar isObject = __webpack_require__(\"f772\");\nvar has = __webpack_require__(\"07e3\");\nvar setDesc = __webpack_require__(\"d9f6\").f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !__webpack_require__(\"294c\")(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n/***/ }),\n\n/***/ \"ed83\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\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__));\n } else {}\n}(this, function () {\n var regex = /(auto|scroll)/;\n\n var parents = function (node, ps) {\n if (node.parentNode === null) { return ps; }\n\n return parents(node.parentNode, ps.concat([node]));\n };\n\n var style = function (node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n };\n\n var overflow = function (node) {\n return style(node, \"overflow\") + style(node, \"overflow-y\") + style(node, \"overflow-x\");\n };\n\n var scroll = function (node) {\n return regex.test(overflow(node));\n };\n\n var scrollParent = function (node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return ;\n }\n\n var ps = parents(node.parentNode, []);\n\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n\n return document.scrollingElement || document.documentElement;\n };\n\n return scrollParent;\n}));\n\n\n/***/ }),\n\n/***/ \"f1ae\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $defineProperty = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n/***/ }),\n\n/***/ \"f201\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = __webpack_require__(\"e4ae\");\nvar aFunction = __webpack_require__(\"79aa\");\nvar SPECIES = __webpack_require__(\"5168\")('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ \"f410\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"1af6\");\nmodule.exports = __webpack_require__(\"584a\").Array.isArray;\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f772\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"f921\":\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(\"014b\");\n__webpack_require__(\"c207\");\n__webpack_require__(\"69d3\");\n__webpack_require__(\"765d\");\nmodule.exports = __webpack_require__(\"584a\").Symbol;\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\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// 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\":\"50dbd2d6-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/VuePhoneNumberInput/index.vue?vue&type=template&id=19c9a1c7&scoped=true&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-phone-number-input flex\",class:[{ 'dark': _vm.dark }, _vm.size],attrs:{\"id\":_vm.id}},[(!_vm.noCountrySelector)?_c('div',{staticClass:\"select-country-container\"},[_c('CountrySelector',{ref:\"CountrySelector\",staticClass:\"input-country-selector\",attrs:{\"id\":(_vm.uniqueId + \"_country_selector\"),\"items\":_vm.codesCountries,\"countries-height\":_vm.countriesHeight,\"error\":_vm.shouldChooseCountry,\"hint\":_vm.shouldChooseCountry ? _vm.t.countrySelectorError : null,\"disabled\":_vm.disabled,\"valid\":_vm.isValid && !_vm.noValidatorState,\"preferred-countries\":_vm.preferredCountries,\"only-countries\":_vm.onlyCountries,\"ignored-countries\":_vm.ignoredCountries,\"label\":_vm.t.countrySelectorLabel,\"no-flags\":_vm.noFlags,\"show-code-on-list\":_vm.showCodeOnList,\"size\":_vm.size,\"dark\":_vm.dark,\"theme\":_vm.theme},model:{value:(_vm.countryCode),callback:function ($$v) {_vm.countryCode=$$v},expression:\"countryCode\"}},[_vm._t(\"arrow\",null,{\"slot\":\"arrow\"})],2)],1):_vm._e(),_c('div',{staticClass:\"flex-1\"},[_c('InputTel',_vm._b({ref:\"PhoneNumberInput\",staticClass:\"input-phone-number\",attrs:{\"id\":(_vm.uniqueId + \"_phone_number\"),\"label\":_vm.t.phoneNumberLabel,\"hint\":_vm.hintValue,\"dark\":_vm.dark,\"disabled\":_vm.disabled,\"size\":_vm.size,\"error\":_vm.error,\"valid\":_vm.isValid && !_vm.noValidatorState,\"required\":_vm.required,\"no-country-selector\":_vm.noCountrySelector,\"theme\":_vm.theme},on:{\"keydown\":function (e) { _vm.lastKeyPressed = e.keyCode },\"focus\":function($event){return _vm.$emit('phone-number-focused')},\"blur\":function($event){return _vm.$emit('phone-number-blur')}},model:{value:(_vm.phoneNumber),callback:function ($$v) {_vm.phoneNumber=$$v},expression:\"phoneNumber\"}},'InputTel',_vm.$attrs,false))],1)])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/index.vue?vue&type=template&id=19c9a1c7&scoped=true&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js\nvar es7_object_get_own_property_descriptors = __webpack_require__(\"8e6e\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.to-string.js\nvar es6_regexp_to_string = __webpack_require__(\"6b54\");\n\n// EXTERNAL MODULE: ./node_modules/regenerator-runtime/runtime.js\nvar runtime = __webpack_require__(\"96cf\");\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/promise.js\nvar promise = __webpack_require__(\"795b\");\nvar promise_default = /*#__PURE__*/__webpack_require__.n(promise);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n promise_default.a.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new promise_default.a(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js\nvar define_property = __webpack_require__(\"85f2\");\nvar define_property_default = /*#__PURE__*/__webpack_require__.n(define_property);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n define_property_default()(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/assets/js/phoneCodeCountries.js\nvar allCountries = [['Afghanistan (افغانستان)', 'af', '93'], ['Albania (Shqipëri)', 'al', '355'], ['Algeria (الجزائر)', 'dz', '213'], ['American Samoa', 'as', '1684'], ['Andorra', 'ad', '376'], ['Angola', 'ao', '244'], ['Anguilla', 'ai', '1264'], ['Antigua and Barbuda', 'ag', '1268'], ['Argentina', 'ar', '54'], ['Armenia (Հայաստան)', 'am', '374'], ['Aruba', 'aw', '297'], ['Australia', 'au', '61', 0], ['Austria (Österreich)', 'at', '43'], ['Azerbaijan (Azərbaycan)', 'az', '994'], ['Bahamas', 'bs', '1242'], ['Bahrain (البحرين)', 'bh', '973'], ['Bangladesh (বাংলাদেশ)', 'bd', '880'], ['Barbados', 'bb', '1246'], ['Belarus (Беларусь)', 'by', '375'], ['Belgium (België)', 'be', '32'], ['Belize', 'bz', '501'], ['Benin (Bénin)', 'bj', '229'], ['Bermuda', 'bm', '1441'], ['Bhutan (འབྲུག)', 'bt', '975'], ['Bolivia', 'bo', '591'], ['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'], ['Botswana', 'bw', '267'], ['Brazil (Brasil)', 'br', '55'], ['British Indian Ocean Territory', 'io', '246'], ['British Virgin Islands', 'vg', '1284'], ['Brunei', 'bn', '673'], ['Bulgaria (България)', 'bg', '359'], ['Burkina Faso', 'bf', '226'], ['Burundi (Uburundi)', 'bi', '257'], ['Cambodia (កម្ពុជា)', 'kh', '855'], ['Cameroon (Cameroun)', 'cm', '237'], ['Canada', 'ca', '1', 1, ['204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905']], ['Cape Verde (Kabu Verdi)', 'cv', '238'], ['Caribbean Netherlands', 'bq', '599', 1], ['Cayman Islands', 'ky', '1345'], ['Central African Republic (République centrafricaine)', 'cf', '236'], ['Chad (Tchad)', 'td', '235'], ['Chile', 'cl', '56'], ['China (中国)', 'cn', '86'], ['Christmas Island', 'cx', '61', 2], ['Cocos (Keeling) Islands', 'cc', '61', 1], ['Colombia', 'co', '57'], ['Comoros (جزر القمر)', 'km', '269'], ['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'], ['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'], ['Cook Islands', 'ck', '682'], ['Costa Rica', 'cr', '506'], ['Côte d’Ivoire', 'ci', '225'], ['Croatia (Hrvatska)', 'hr', '385'], ['Cuba', 'cu', '53'], ['Curaçao', 'cw', '599', 0], ['Cyprus (Κύπρος)', 'cy', '357'], ['Czech Republic (Česká republika)', 'cz', '420'], ['Denmark (Danmark)', 'dk', '45'], ['Djibouti', 'dj', '253'], ['Dominica', 'dm', '1767'], ['Dominican Republic (República Dominicana)', 'do', '1', 2, ['809', '829', '849']], ['Ecuador', 'ec', '593'], ['Egypt (مصر)', 'eg', '20'], ['El Salvador', 'sv', '503'], ['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'], ['Eritrea', 'er', '291'], ['Estonia (Eesti)', 'ee', '372'], ['Ethiopia', 'et', '251'], ['Falkland Islands (Islas Malvinas)', 'fk', '500'], ['Faroe Islands (Føroyar)', 'fo', '298'], ['Fiji', 'fj', '679'], ['Finland (Suomi)', 'fi', '358', 0], ['France', 'fr', '33'], ['French Guiana (Guyane française)', 'gf', '594'], ['French Polynesia (Polynésie française)', 'pf', '689'], ['Gabon', 'ga', '241'], ['Gambia', 'gm', '220'], ['Georgia (საქართველო)', 'ge', '995'], ['Germany (Deutschland)', 'de', '49'], ['Ghana (Gaana)', 'gh', '233'], ['Gibraltar', 'gi', '350'], ['Greece (Ελλάδα)', 'gr', '30'], ['Greenland (Kalaallit Nunaat)', 'gl', '299'], ['Grenada', 'gd', '1473'], ['Guadeloupe', 'gp', '590', 0], ['Guam', 'gu', '1671'], ['Guatemala', 'gt', '502'], ['Guernsey', 'gg', '44', 1], ['Guinea (Guinée)', 'gn', '224'], ['Guinea-Bissau (Guiné Bissau)', 'gw', '245'], ['Guyana', 'gy', '592'], ['Haiti', 'ht', '509'], ['Honduras', 'hn', '504'], ['Hong Kong (香港)', 'hk', '852'], ['Hungary (Magyarország)', 'hu', '36'], ['Iceland (Ísland)', 'is', '354'], ['India (भारत)', 'in', '91'], ['Indonesia', 'id', '62'], ['Iran (ایران)', 'ir', '98'], ['Iraq (العراق)', 'iq', '964'], ['Ireland', 'ie', '353'], ['Isle of Man', 'im', '44', 2], ['Israel (ישראל)', 'il', '972'], ['Italy (Italia)', 'it', '39', 0], ['Jamaica', 'jm', '1876'], ['Japan (日本)', 'jp', '81'], ['Jersey', 'je', '44', 3], ['Jordan (الأردن)', 'jo', '962'], ['Kazakhstan (Казахстан)', 'kz', '7', 1], ['Kenya', 'ke', '254'], ['Kiribati', 'ki', '686'], ['Kosovo', 'xk', '383'], ['Kuwait (الكويت)', 'kw', '965'], ['Kyrgyzstan (Кыргызстан)', 'kg', '996'], ['Laos (ລາວ)', 'la', '856'], ['Latvia (Latvija)', 'lv', '371'], ['Lebanon (لبنان)', 'lb', '961'], ['Lesotho', 'ls', '266'], ['Liberia', 'lr', '231'], ['Libya (ليبيا)', 'ly', '218'], ['Liechtenstein', 'li', '423'], ['Lithuania (Lietuva)', 'lt', '370'], ['Luxembourg', 'lu', '352'], ['Macau (澳門)', 'mo', '853'], ['Macedonia (FYROM) (Македонија)', 'mk', '389'], ['Madagascar (Madagasikara)', 'mg', '261'], ['Malawi', 'mw', '265'], ['Malaysia', 'my', '60'], ['Maldives', 'mv', '960'], ['Mali', 'ml', '223'], ['Malta', 'mt', '356'], ['Marshall Islands', 'mh', '692'], ['Martinique', 'mq', '596'], ['Mauritania (موريتانيا)', 'mr', '222'], ['Mauritius (Moris)', 'mu', '230'], ['Mayotte', 'yt', '262', 1], ['Mexico (México)', 'mx', '52'], ['Micronesia', 'fm', '691'], ['Moldova (Republica Moldova)', 'md', '373'], ['Monaco', 'mc', '377'], ['Mongolia (Монгол)', 'mn', '976'], ['Montenegro (Crna Gora)', 'me', '382'], ['Montserrat', 'ms', '1664'], ['Morocco (المغرب)', 'ma', '212', 0], ['Mozambique (Moçambique)', 'mz', '258'], ['Myanmar (Burma) (မြန်မာ)', 'mm', '95'], ['Namibia (Namibië)', 'na', '264'], ['Nauru', 'nr', '674'], ['Nepal (नेपाल)', 'np', '977'], ['Netherlands (Nederland)', 'nl', '31'], ['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'], ['New Zealand', 'nz', '64'], ['Nicaragua', 'ni', '505'], ['Niger (Nijar)', 'ne', '227'], ['Nigeria', 'ng', '234'], ['Niue', 'nu', '683'], ['Norfolk Island', 'nf', '672'], ['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'], ['Northern Mariana Islands', 'mp', '1670'], ['Norway (Norge)', 'no', '47', 0], ['Oman (عُمان)', 'om', '968'], ['Pakistan (پاکستان)', 'pk', '92'], ['Palau', 'pw', '680'], ['Palestine (فلسطين)', 'ps', '970'], ['Panama (Panamá)', 'pa', '507'], ['Papua New Guinea', 'pg', '675'], ['Paraguay', 'py', '595'], ['Peru (Perú)', 'pe', '51'], ['Philippines', 'ph', '63'], ['Poland (Polska)', 'pl', '48'], ['Portugal', 'pt', '351'], ['Puerto Rico', 'pr', '1', 3, ['787', '939']], ['Qatar (قطر)', 'qa', '974'], ['Réunion (La Réunion)', 're', '262', 0], ['Romania (România)', 'ro', '40'], ['Russia (Россия)', 'ru', '7', 0], ['Rwanda', 'rw', '250'], ['Saint Barthélemy', 'bl', '590', 1], ['Saint Helena', 'sh', '290'], ['Saint Kitts and Nevis', 'kn', '1869'], ['Saint Lucia', 'lc', '1758'], ['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2], ['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'], ['Saint Vincent and the Grenadines', 'vc', '1784'], ['Samoa', 'ws', '685'], ['San Marino', 'sm', '378'], ['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'], ['Saudi Arabia (المملكة العربية السعودية)', 'sa', '966'], ['Senegal (Sénégal)', 'sn', '221'], ['Serbia (Србија)', 'rs', '381'], ['Seychelles', 'sc', '248'], ['Sierra Leone', 'sl', '232'], ['Singapore', 'sg', '65'], ['Sint Maarten', 'sx', '1721'], ['Slovakia (Slovensko)', 'sk', '421'], ['Slovenia (Slovenija)', 'si', '386'], ['Solomon Islands', 'sb', '677'], ['Somalia (Soomaaliya)', 'so', '252'], ['South Africa', 'za', '27'], ['South Korea (대한민국)', 'kr', '82'], ['South Sudan (جنوب السودان)', 'ss', '211'], ['Spain (España)', 'es', '34'], ['Sri Lanka (ශ්රී ලංකාව)', 'lk', '94'], ['Sudan (السودان)', 'sd', '249'], ['Suriname', 'sr', '597'], ['Svalbard and Jan Mayen', 'sj', '47', 1], ['Swaziland', 'sz', '268'], ['Sweden (Sverige)', 'se', '46'], ['Switzerland (Schweiz)', 'ch', '41'], ['Syria (سوريا)', 'sy', '963'], ['Taiwan (台灣)', 'tw', '886'], ['Tajikistan', 'tj', '992'], ['Tanzania', 'tz', '255'], ['Thailand (ไทย)', 'th', '66'], ['Timor-Leste', 'tl', '670'], ['Togo', 'tg', '228'], ['Tokelau', 'tk', '690'], ['Tonga', 'to', '676'], ['Trinidad and Tobago', 'tt', '1868'], ['Tunisia (تونس)', 'tn', '216'], ['Turkey (Türkiye)', 'tr', '90'], ['Turkmenistan', 'tm', '993'], ['Turks and Caicos Islands', 'tc', '1649'], ['Tuvalu', 'tv', '688'], ['U.S. Virgin Islands', 'vi', '1340'], ['Uganda', 'ug', '256'], ['Ukraine (Україна)', 'ua', '380'], ['United Arab Emirates (الإمارات العربية المتحدة)', 'ae', '971'], ['United Kingdom', 'gb', '44', 0], ['United States', 'us', '1', 0], ['Uruguay', 'uy', '598'], ['Uzbekistan (Oʻzbekiston)', 'uz', '998'], ['Vanuatu', 'vu', '678'], ['Vatican City (Città del Vaticano)', 'va', '39', 1], ['Venezuela', 've', '58'], ['Vietnam (Việt Nam)', 'vn', '84'], ['Wallis and Futuna (Wallis-et-Futuna)', 'wf', '681'], ['Western Sahara (الصحراء الغربية)', 'eh', '212', 1], ['Yemen (اليمن)', 'ye', '967'], ['Zambia', 'zm', '260'], ['Zimbabwe', 'zw', '263'], ['Åland Islands', 'ax', '358', 1]];\nvar countriesIso = allCountries.map(function (country) {\n return country[1].toUpperCase();\n});\nvar countries = allCountries.map(function (country) {\n return {\n name: country[0],\n iso2: country[1].toUpperCase(),\n dialCode: country[2],\n priority: country[3] || 0,\n areaCodes: country[4] || null\n };\n});\n// EXTERNAL MODULE: ./node_modules/libphonenumber-js/examples.mobile.json\nvar examples_mobile = __webpack_require__(\"d391\");\n\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/metadata.min.json.js\n// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\n/* harmony default export */ var metadata_min_json = ({\"version\":\"1.7.51\",\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"11\\\\d{8}|(?:[2368]|9\\\\d)\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7,8}|8[0-24-9]\\\\d{7})|(?:[2-478]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{4,7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|[45]\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"0|(183[12])\",0,0,0,[[\"(?:[237]\\\\d{5}|8(?:51(?:0(?:0[03-9]|[1247]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\\\d|4[0-4]))|(?:[6-8]\\\\d{3}|9(?:[02-9]\\\\d\\\\d|1(?:[0-57-9]\\\\d|6[0135-9])))\\\\d))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[01])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"16\\\\d{3,7}\",[5,6,7,8,9]],[\"(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365|46\",\"1[28]|2|365(?:[0-46-9]|5[0-35-9])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"1\\\\d{9}|2\\\\d{7,8}|88\\\\d{4,6}|(?:8[0-79]|9\\\\d)\\\\d{4,8}|(?:[346]\\\\d|[57])\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[025-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[025-7]\"]]]],\"BG\":[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:[2689]\\\\d|51)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25689]\"]]]],\"BL\":[\"590\",\"00\",\"(?:590|69\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"],0,0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d\\\\d|8001)\\\\d{5}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],\"BW\":[\"267\",\"00\",\"90\\\\d{5}|(?:[2-6]|7\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-6]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}\",[10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|6[57])|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47|72)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:35(?:[02-46-9]\\\\d|1[02-9]|5[0-46-9])|45(?:[034]\\\\d|1[02-9]|2[024-9]|5[0-46-9]))\\\\d{4}|52(?:3[2-46-9]|4[2-4])(?:[02-9]\\\\d|1[02-9])\\\\d{4}|(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"],0,0,0,[\"600[2-9]\\\\d{6}\"]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|(?:[148]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{5,7}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[01])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"CD\":[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"801\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[02-9]\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-3]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"(?:[26]\\\\d\\\\d|88)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"1[127]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-689]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79)\\\\d\\\\d)\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:1\\\\d|3)\\\\d{9}|[124-8]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[14][2-9]|[25-8]\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|(?:5|8\\\\d\\\\d)\\\\d{7}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d|8[0-24-9])\\\\d{7}|(?:[148]\\\\d\\\\d|550)\\\\d{6}|1\\\\d{5,7}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:83[0-38]|93[01])\\\\d{5}|4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[06-9]|7[02-9]|8[0-2457-9]|9[0-27-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"(?:14(?:5(?:1[0458]|[23][458])|71\\\\d)|550\\\\d\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[05]\\\\d{10}|[46][1-8]\\\\d{4,9})|49(?:[0-25]\\\\d|3[1-689]|7[1-7])\\\\d{4,8}|49(?:[0-2579]\\\\d|[34][1-9]|6[0-8])\\\\d{3}|49\\\\d{3,4}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"(?:51|[6-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-59]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[12]00|[368]|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[1245]|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"(?:[2-8]\\\\d|90)\\\\d{4}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]],0,0,\"0(11\\\\d{6}|6[256]\\\\d{6}|7[47]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[03])|(?:4[0-5]|5[0-26-9]|6[0-4]|[78][0-49])\\\\d\\\\d)|2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d\\\\d|1(?:[0-7]\\\\d\\\\d|8(?:0\\\\d|20)))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:[56]94|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"[256]\\\\d{7}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-689]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"(?:590|69\\\\d|976)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"],0,0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|(?:[2689]\\\\d|70)\\\\d{8}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]]]],\"GT\":[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],\"HU\":[\"36\",\"00\",\"[2357]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[189]\",\"(?:(?:007803|8\\\\d{4})\\\\d|[1-36])\\\\d{6}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([5-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|83)|73179|807(?:1|9[1-3])|(?:1552|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[124-6])\\\\d|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[245])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1[4679]|[38]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d\\\\d|89(?:2|4[5-9]\\\\d))\\\\d{3}|89[45][0-4]\\\\d\\\\d|(?:1(?:44|6[346])|89(?:5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:0[0-2]|2[356]|34|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[457-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2(?:0|9[02-69])|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[279]|49|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9])|5(?:2|3[045]|4[0-369]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|49|6(?:[0-24]|36|5[0-3589]|72|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:49|55|83)[29]|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[0468][01]|[1-3]|5[0-69]|7[015-9]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17|3[015-9]))|4(?:2(?:[13-79]|2[01]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|36[23]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|72|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:223|8699)[014-9]|(?:48|829(?:2|66)|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3[3-8]|5[2-9])\",\"[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3(?:[3-6][2-9]|7|8[2-5])|5[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]|80\"],\"0$1\"]],\"0\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|(?:[235-8]\\\\d|99)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"(?:18|[2569]\\\\d\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[25]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"33622\\\\d{5}|(?:7\\\\d|80)\\\\d{8}\",[10],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"30[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[7-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[237-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(1001)\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[4-6]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[4-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\",\"5(?:29|38)[89]0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\",\"5(?:2(?:[2-49]|8[235-9])|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:29(?:[189][05]|2[29]|3[01])|38[89][05])\\\\d{4}|5(?:2(?:[015-7]\\\\d|2[02-9]|3[0-578]|4[02-46-8]|8[0235-7]|90)|3(?:[0-47]\\\\d|5[02-9]|6[02-8]|80|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[016-8]|6[1267]|7[0-27]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"592(?:4[0-2]|93)\\\\d{4}\"]]],\"MC\":[\"377\",\"00\",\"870\\\\d{5}|(?:[349]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[39]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"(?:590|69\\\\d|976)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"],0,0,0,0,0,0,[\"976[01]\\\\d{5}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"(?:28|[68]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"69\\\\d{7}|(?:59|97)6\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[569]\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([34]\\\\d{6})$\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[2-468]|5\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[13-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"1\\\\d{6}(?:\\\\d{2})?|(?:[23]1|77|88|99)\\\\d{7}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"(?:1(?:[01467]\\\\d|[2359][1-9]|8[1-79])|[2-9]\\\\d)\\\\d{8}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],0,1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],0,1],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],0,1]],\"01\",0,\"0(?:[12]|4[45])|1\",0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9])|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"[2-57-9]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[0289]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]|5[89]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"9\\\\d{9}|[1-9]\\\\d{7}\",[8,10],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"[1-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:444|(?:55|8\\\\d)\\\\d|666)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-68]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[29]\\\\d{7,9}|50\\\\d{5}(?:\\\\d{2,3})?|6[0-35-9]\\\\d{6}|7\\\\d{7,8}|8\\\\d{4,9}|(?:11\\\\d|[34])\\\\d{7}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"83\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[0367]|[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|8007\\\\d{4,5}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:[1-57-9]|6\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"6\"]]]],\"PE\":[\"51\",\"19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,0,\" Anexo \"],\"PF\":[\"689\",\"00\",\"[48]\\\\d{7}|4\\\\d{5}\",[6,8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[48]\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"1800\\\\d{7,9}|(?:2|[89]\\\\d{4})\\\\d{5}|[2-8]\\\\d{8}|[28]\\\\d{7}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"[1-57-9]\\\\d{6}(?:\\\\d{2})?|6\\\\d{5,8}\",[6,7,8,9],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"39|45|5[0137]|6[0469]|7[02389]|8[08]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-8]|9[145]\"]]]],\"PM\":[\"508\",\"00\",\"[45]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"59\\\\d{4,6}|(?:[2-46-9]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"]],\"0\"],\"QA\":[\"974\",\"00\",\"[2-7]\\\\d{7}|(?:2\\\\d\\\\d|800)\\\\d{4}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]]]],\"RE\":[\"262\",\"00\",\"9769\\\\d{5}|(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"],\"0$1\"]],\"0\",0,0,0,0,\"26[23]|69|[89]\"],\"RO\":[\"40\",\"00\",\"(?:[237]\\\\d|[89]0)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"[347-9]\\\\d{9}\",[10],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",1]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]]],\"0\"],\"SA\":[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:01|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[4589]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[2378]\\\\d|66|99)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d{4}|93330)\\\\d{4}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3478]|64|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[1-35-9]|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"1\\\\d{8,9}|(?:[2-57]|[689]\\\\d)\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"14|[3-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:00|11|[3-579]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"],0,1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"],0,1],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[0457-9]|11\"],0,1]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|[5-8]\\\\d{3})\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-8]\"]]]],\"TR\":[\"90\",\"00\",\"(?:4|8\\\\d{5})\\\\d{6}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[0589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[258]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-47-9])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-47-9])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[45][0-5]|5(?:0|6[37])|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\",\"4[45][0-5]|5(?:0|6(?:3[14-7]|7))|6(?:[12][018]|[36-8])|7|89|9[1-9]|(?:48|57)[0137-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[167]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[0179]|6[0-279]|78|8[0-29])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:35(?:[02-46-9]\\\\d|1[02-9]|5[0-46-9])|45(?:[034]\\\\d|1[02-9]|2[024-9]|5[0-46-9]))\\\\d{4}|52(?:3[2-46-9]|4[2-4])(?:[02-9]\\\\d|1[02-9])\\\\d{4}|5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"(?:[249]\\\\d\\\\d|80)\\\\d{5}|9\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24]\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"810\",\"(?:[679]\\\\d|88)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[6-9]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"(?:[23]\\\\d|[48]8)\\\\d{3}|(?:[57]\\\\d|90)\\\\d{5}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[579]\"]]]],\"WF\":[\"681\",\"00\",\"(?:[45]0|68|72|8\\\\d)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[4-8]\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],\"ZA\":[\"27\",\"00\",\"[1-9]\\\\d{8}|8\\\\d{4,7}\",[5,6,7,8,9],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"(?:63|80)0\\\\d{6}|(?:21|[79]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,[\"[1-9]\\\\d{7}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"[35-7]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[35-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]\\\\d|7[6-8])\\\\d{7}\"]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"[0-36-9]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-36-9]\"]]],0,0,0,0,0,0,[0,[\"[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|285\\\\d{9}|[19]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34[57]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-3]\"]]],0,0,0,0,0,0,[0,[\"3(?:37\\\\d\\\\d|42)\\\\d{4}|3(?:2|47|7\\\\d{3})\\\\d{7}\",[7,9,10,12]],0,0,0,0,0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:(?:285\\\\d\\\\d|3(?:45|[69]\\\\d{3}))\\\\d|9[89])\\\\d{6}\"]]],\"883\":[\"883\",0,\"51\\\\d{7}(?:\\\\d{3})?\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"510\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"51[013]0\\\\d{8}|5100\\\\d{5}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}});\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/constants.js\n// The minimum length of the national significant number.\nvar MIN_LENGTH_FOR_NSN = 2; // The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\n\nvar MAX_LENGTH_FOR_NSN = 17; // The maximum length of the country calling code.\n\nvar MAX_LENGTH_COUNTRY_CODE = 3; // Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\n\nvar VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\"; // `DASHES` will be right after the opening square bracket of the \"character class\"\n\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nvar WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\"; // export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\n\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\"; // Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\n\nvar VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nvar PLUS_CHARS = \"+\\uFF0B\"; // const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/util.js\n/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\nfunction matchesEntirely(text, regular_expression) {\n // If assigning the `''` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n text = text || '';\n return new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\n\nfunction mergeArrays(a, b) {\n var merged = a.slice();\n\n for (var _iterator = b, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var element = _ref;\n\n if (a.indexOf(element) < 0) {\n merged.push(element);\n }\n }\n\n return merged.sort(function (a, b) {\n return a - b;\n }); // ES6 version, requires Set polyfill.\n // let merged = new Set(a)\n // for (const element of b)\n // {\n // \tmerged.add(i)\n // }\n // return Array.from(merged).sort((a, b) => a - b)\n}\n//# sourceMappingURL=util.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/ParseError.js\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://stackoverflow.com/a/46971044/970769\nvar ParseError = function ParseError(code) {\n _classCallCheck(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = code;\n this.stack = new Error(code).stack;\n};\n\n\nParseError.prototype = Object.create(Error.prototype);\nParseError.prototype.constructor = ParseError;\n//# sourceMappingURL=ParseError.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/tools/semver-compare.js\n// Copy-pasted from:\n// https://github.com/substack/semver-compare/blob/master/index.js\n//\n// Inlining this function because some users reported issues with\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\n//\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\n/* harmony default export */ var semver_compare = (function (a, b) {\n a = a.split('-');\n b = b.split('-');\n var pa = a[0].split('.');\n var pb = b[0].split('.');\n\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n\n if (a[1] && b[1]) {\n return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0;\n }\n\n return !a[1] && b[1] ? 1 : a[1] && !b[1] ? -1 : 0;\n});\n//# sourceMappingURL=semver-compare.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/metadata.js\nfunction _typeof(obj) { 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\nfunction metadata_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n // Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\n\nvar V2 = '1.0.18'; // Added \"idd_prefix\" and \"default_idd_prefix\".\n\nvar V3 = '1.2.0'; // Moved `001` country code to \"nonGeographic\" section of metadata.\n\nvar V4 = '1.7.35';\nvar DEFAULT_EXT_PREFIX = ' ext. ';\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\n\nvar Metadata =\n/*#__PURE__*/\nfunction () {\n function Metadata(metadata) {\n metadata_classCallCheck(this, Metadata);\n\n validateMetadata(metadata);\n this.metadata = metadata;\n setVersion.call(this, metadata);\n }\n\n _createClass(Metadata, [{\n key: \"getCountries\",\n value: function getCountries() {\n return Object.keys(this.metadata.countries).filter(function (_) {\n return _ !== '001';\n });\n }\n }, {\n key: \"getCountryMetadata\",\n value: function getCountryMetadata(countryCode) {\n return this.metadata.countries[countryCode];\n }\n }, {\n key: \"nonGeographic\",\n value: function nonGeographic() {\n if (this.v1 || this.v2 || this.v3) return; // `nonGeographical` was a typo.\n // It's present in metadata generated from `1.7.35` to `1.7.37`.\n\n return this.metadata.nonGeographic || this.metadata.nonGeographical;\n }\n }, {\n key: \"hasCountry\",\n value: function hasCountry(country) {\n return this.getCountryMetadata(country) !== undefined;\n }\n }, {\n key: \"hasCallingCode\",\n value: function hasCallingCode(callingCode) {\n if (this.getCountryCodesForCallingCode(callingCode)) {\n return true;\n }\n\n if (this.nonGeographic()) {\n if (this.nonGeographic()[callingCode]) {\n return true;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return true;\n }\n }\n }\n }, {\n key: \"isNonGeographicCallingCode\",\n value: function isNonGeographicCallingCode(callingCode) {\n if (this.nonGeographic()) {\n return this.nonGeographic()[callingCode] ? true : false;\n } else {\n return this.getCountryCodesForCallingCode(callingCode) ? false : true;\n }\n } // Deprecated.\n\n }, {\n key: \"country\",\n value: function country(countryCode) {\n return this.selectNumberingPlan(countryCode);\n }\n }, {\n key: \"selectNumberingPlan\",\n value: function selectNumberingPlan(countryCode, callingCode) {\n if (countryCode && countryCode !== '001') {\n if (!this.hasCountry(countryCode)) {\n throw new Error(\"Unknown country: \".concat(countryCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this);\n } else if (callingCode) {\n if (!this.hasCallingCode(callingCode)) {\n throw new Error(\"Unknown calling code: \".concat(callingCode));\n }\n\n this.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this);\n } else {\n this.numberingPlan = undefined;\n }\n\n return this;\n }\n }, {\n key: \"getCountryCodesForCallingCode\",\n value: function getCountryCodesForCallingCode(callingCode) {\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes) {\n // Metadata before V4 included \"non-geographic entity\" calling codes\n // inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\n // Now the semantics of `country_calling_codes` has changed:\n // it's specifically for \"countries\" now.\n // Older versions of custom metadata will simply skip parsing\n // \"non-geographic entity\" phone numbers with new versions\n // of this library: it's not considered a bug,\n // because such numbers are extremely rare,\n // and developers extremely rarely use custom metadata.\n if (countryCodes.length === 1 && countryCodes[0].length === 3) {\n return;\n }\n\n return countryCodes;\n }\n }\n }, {\n key: \"getCountryCodeForCallingCode\",\n value: function getCountryCodeForCallingCode(callingCode) {\n var countryCodes = this.getCountryCodesForCallingCode(callingCode);\n\n if (countryCodes) {\n return countryCodes[0];\n }\n }\n }, {\n key: \"getNumberingPlanMetadata\",\n value: function getNumberingPlanMetadata(callingCode) {\n var countryCode = this.getCountryCodeForCallingCode(callingCode);\n\n if (countryCode) {\n return this.getCountryMetadata(countryCode);\n }\n\n if (this.nonGeographic()) {\n var metadata = this.nonGeographic()[callingCode];\n\n if (metadata) {\n return metadata;\n }\n } else {\n // A hacky workaround for old custom metadata (generated before V4).\n var countryCodes = this.countryCallingCodes()[callingCode];\n\n if (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\n return this.metadata.countries['001'];\n }\n }\n } // Deprecated.\n\n }, {\n key: \"countryCallingCode\",\n value: function countryCallingCode() {\n return this.numberingPlan.callingCode();\n } // Deprecated.\n\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n return this.numberingPlan.IDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n return this.numberingPlan.defaultIDDPrefix();\n } // Deprecated.\n\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n return this.numberingPlan.nationalNumberPattern();\n } // Deprecated.\n\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n return this.numberingPlan.possibleLengths();\n } // Deprecated.\n\n }, {\n key: \"formats\",\n value: function formats() {\n return this.numberingPlan.formats();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n return this.numberingPlan.nationalPrefixForParsing();\n } // Deprecated.\n\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.numberingPlan.nationalPrefixTransformRule();\n } // Deprecated.\n\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.numberingPlan.leadingDigits();\n } // Deprecated.\n\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n return this.numberingPlan.hasTypes();\n } // Deprecated.\n\n }, {\n key: \"type\",\n value: function type(_type) {\n return this.numberingPlan.type(_type);\n } // Deprecated.\n\n }, {\n key: \"ext\",\n value: function ext() {\n return this.numberingPlan.ext();\n }\n }, {\n key: \"countryCallingCodes\",\n value: function countryCallingCodes() {\n if (this.v1) return this.metadata.country_phone_code_to_countries;\n return this.metadata.country_calling_codes;\n } // Deprecated.\n\n }, {\n key: \"chooseCountryByCountryCallingCode\",\n value: function chooseCountryByCountryCallingCode(callingCode) {\n this.selectNumberingPlan(null, callingCode);\n }\n }, {\n key: \"hasSelectedNumberingPlan\",\n value: function hasSelectedNumberingPlan() {\n return this.numberingPlan !== undefined;\n }\n }]);\n\n return Metadata;\n}();\n\n\n\nvar NumberingPlan =\n/*#__PURE__*/\nfunction () {\n function NumberingPlan(metadata, globalMetadataObject) {\n metadata_classCallCheck(this, NumberingPlan);\n\n this.globalMetadataObject = globalMetadataObject;\n this.metadata = metadata;\n setVersion.call(this, globalMetadataObject.metadata);\n }\n\n _createClass(NumberingPlan, [{\n key: \"callingCode\",\n value: function callingCode() {\n return this.metadata[0];\n } // Formatting information for regions which share\n // a country calling code is contained by only one region\n // for performance reasons. For example, for NANPA region\n // (\"North American Numbering Plan Administration\",\n // which includes USA, Canada, Cayman Islands, Bahamas, etc)\n // it will be contained in the metadata for `US`.\n\n }, {\n key: \"getDefaultCountryMetadataForRegion\",\n value: function getDefaultCountryMetadataForRegion() {\n return this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode());\n }\n }, {\n key: \"IDDPrefix\",\n value: function IDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[1];\n }\n }, {\n key: \"defaultIDDPrefix\",\n value: function defaultIDDPrefix() {\n if (this.v1 || this.v2) return;\n return this.metadata[12];\n }\n }, {\n key: \"nationalNumberPattern\",\n value: function nationalNumberPattern() {\n if (this.v1 || this.v2) return this.metadata[1];\n return this.metadata[2];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.v1) return;\n return this.metadata[this.v2 ? 2 : 3];\n }\n }, {\n key: \"_getFormats\",\n value: function _getFormats(metadata) {\n return metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n } // For countries of the same region (e.g. NANPA)\n // formats are all stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"formats\",\n value: function formats() {\n var _this = this;\n\n var formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n return formats.map(function (_) {\n return new Format(_, _this);\n });\n }\n }, {\n key: \"nationalPrefix\",\n value: function nationalPrefix() {\n return this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n }\n }, {\n key: \"_getNationalPrefixFormattingRule\",\n value: function _getNationalPrefixFormattingRule(metadata) {\n return metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n } // For countries of the same region (e.g. NANPA)\n // national prefix formatting rule is stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"_nationalPrefixForParsing\",\n value: function _nationalPrefixForParsing() {\n return this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7];\n }\n }, {\n key: \"nationalPrefixForParsing\",\n value: function nationalPrefixForParsing() {\n // If `national_prefix_for_parsing` is not set explicitly,\n // then infer it from `national_prefix` (if any)\n return this._nationalPrefixForParsing() || this.nationalPrefix();\n }\n }, {\n key: \"nationalPrefixTransformRule\",\n value: function nationalPrefixTransformRule() {\n return this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n }\n }, {\n key: \"_getNationalPrefixIsOptionalWhenFormatting\",\n value: function _getNationalPrefixIsOptionalWhenFormatting() {\n return !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n } // For countries of the same region (e.g. NANPA)\n // \"national prefix is optional when formatting\" flag is\n // stored in the \"main\" country for that region.\n // E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n }\n }, {\n key: \"leadingDigits\",\n value: function leadingDigits() {\n return this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n }\n }, {\n key: \"types\",\n value: function types() {\n return this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n }\n }, {\n key: \"hasTypes\",\n value: function hasTypes() {\n // Versions 1.2.0 - 1.2.4: can be `[]`.\n\n /* istanbul ignore next */\n if (this.types() && this.types().length === 0) {\n return false;\n } // Versions <= 1.2.4: can be `undefined`.\n // Version >= 1.2.5: can be `0`.\n\n\n return !!this.types();\n }\n }, {\n key: \"type\",\n value: function type(_type2) {\n if (this.hasTypes() && metadata_getType(this.types(), _type2)) {\n return new Type(metadata_getType(this.types(), _type2), this);\n }\n }\n }, {\n key: \"ext\",\n value: function ext() {\n if (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n return this.metadata[13] || DEFAULT_EXT_PREFIX;\n }\n }]);\n\n return NumberingPlan;\n}();\n\nvar Format =\n/*#__PURE__*/\nfunction () {\n function Format(format, metadata) {\n metadata_classCallCheck(this, Format);\n\n this._format = format;\n this.metadata = metadata;\n }\n\n _createClass(Format, [{\n key: \"pattern\",\n value: function pattern() {\n return this._format[0];\n }\n }, {\n key: \"format\",\n value: function format() {\n return this._format[1];\n }\n }, {\n key: \"leadingDigitsPatterns\",\n value: function leadingDigitsPatterns() {\n return this._format[2] || [];\n }\n }, {\n key: \"nationalPrefixFormattingRule\",\n value: function nationalPrefixFormattingRule() {\n return this._format[3] || this.metadata.nationalPrefixFormattingRule();\n }\n }, {\n key: \"nationalPrefixIsOptionalWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsOptionalWhenFormattingInNationalFormat() {\n return !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n }\n }, {\n key: \"nationalPrefixIsMandatoryWhenFormattingInNationalFormat\",\n value: function nationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\n // National prefix is omitted if there's no national prefix formatting rule\n // set for this country, or when the national prefix formatting rule\n // contains no national prefix itself, or when this rule is set but\n // national prefix is optional for this phone number format\n // (and it is not enforced explicitly)\n return this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat();\n } // Checks whether national prefix formatting rule contains national prefix.\n\n }, {\n key: \"usesNationalPrefix\",\n value: function usesNationalPrefix() {\n return this.nationalPrefixFormattingRule() && // Check that national prefix formatting rule is not a \"dummy\" one.\n !FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule()); // Previously, `FIRST_GROUP_ONLY_PREFIX_PATTERN` check was instead done via:\n // // Check that national prefix formatting rule is not a \"dummy\" one.\n // this.nationalPrefixFormattingRule() !== '$1' &&\n // // Check that national prefix formatting rule actually has national prefix digit(s).\n // // Filters out cases like \"($1)\".\n // // Is used in place of `libphonenumber`'s `FIRST_GROUP_ONLY_PREFIX_PATTERN_` regexp.\n // /\\d/.test(this.nationalPrefixFormattingRule().replace('$1', ''))\n }\n }, {\n key: \"internationalFormat\",\n value: function internationalFormat() {\n return this._format[5] || this.format();\n }\n }]);\n\n return Format;\n}();\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\n\n\nvar FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/;\n\nvar Type =\n/*#__PURE__*/\nfunction () {\n function Type(type, metadata) {\n metadata_classCallCheck(this, Type);\n\n this.type = type;\n this.metadata = metadata;\n }\n\n _createClass(Type, [{\n key: \"pattern\",\n value: function pattern() {\n if (this.metadata.v1) return this.type;\n return this.type[0];\n }\n }, {\n key: \"possibleLengths\",\n value: function possibleLengths() {\n if (this.metadata.v1) return;\n return this.type[1] || this.metadata.possibleLengths();\n }\n }]);\n\n return Type;\n}();\n\nfunction metadata_getType(types, type) {\n switch (type) {\n case 'FIXED_LINE':\n return types[0];\n\n case 'MOBILE':\n return types[1];\n\n case 'TOLL_FREE':\n return types[2];\n\n case 'PREMIUM_RATE':\n return types[3];\n\n case 'PERSONAL_NUMBER':\n return types[4];\n\n case 'VOICEMAIL':\n return types[5];\n\n case 'UAN':\n return types[6];\n\n case 'PAGER':\n return types[7];\n\n case 'VOIP':\n return types[8];\n\n case 'SHARED_COST':\n return types[9];\n }\n}\n\nfunction validateMetadata(metadata) {\n if (!metadata) {\n throw new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n } // `country_phone_code_to_countries` was renamed to\n // `country_calling_codes` in `1.0.18`.\n\n\n if (!is_object(metadata) || !is_object(metadata.countries)) {\n throw new Error(\"[libphonenumber-js] `metadata` argument was passed but it's not a valid metadata. Must be an object having `.countries` child object property. Got \".concat(is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata, \".\"));\n }\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar is_object = function is_object(_) {\n return _typeof(_) === 'object';\n}; // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar type_of = function type_of(_) {\n return _typeof(_);\n};\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\n\n\nfunction getExtPrefix(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).ext();\n }\n\n return DEFAULT_EXT_PREFIX;\n}\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\n\nfunction getCountryCallingCode(country, metadata) {\n metadata = new Metadata(metadata);\n\n if (metadata.hasCountry(country)) {\n return metadata.country(country).countryCallingCode();\n }\n\n throw new Error(\"Unknown country: \".concat(country));\n}\nfunction isSupportedCountry(country, metadata) {\n // metadata = new Metadata(metadata)\n // return metadata.hasCountry(country)\n return metadata.countries[country] !== undefined;\n}\n\nfunction setVersion(metadata) {\n this.v1 = !metadata.version;\n this.v2 = metadata.version !== undefined && semver_compare(metadata.version, V3) === -1;\n this.v3 = metadata.version !== undefined && semver_compare(metadata.version, V4) === -1;\n this.v4 = metadata.version !== undefined; // && compare(metadata.version, V5) === -1\n} // const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\n// function isCountryCode(countryCode) {\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\n// }\n//# sourceMappingURL=metadata.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/extension.js\n // The RFC 3966 format for extensions.\n\nvar RFC3966_EXTN_PREFIX = ';ext='; // Pattern to capture digits used in an extension.\n// Places a maximum length of '7' for an extension.\n\nvar CAPTURING_EXTN_DIGITS = '([' + VALID_DIGITS + ']{1,7})';\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\n\nfunction create_extension_pattern(purpose) {\n // One-character symbols that can be used to indicate an extension.\n var single_extension_characters = \"x\\uFF58#\\uFF03~\\uFF5E\";\n\n switch (purpose) {\n // For parsing, we are slightly more lenient in our interpretation than for matching. Here we\n // allow \"comma\" and \"semicolon\" as possible extension indicators. When matching, these are\n case 'parsing':\n single_extension_characters = ',;' + single_extension_characters;\n }\n\n return RFC3966_EXTN_PREFIX + CAPTURING_EXTN_DIGITS + '|' + \"[ \\xA0\\\\t,]*\" + \"(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\" + // \"доб.\"\n \"\\u0434\\u043E\\u0431|\" + '[' + single_extension_characters + \"]|int|anexo|\\uFF49\\uFF4E\\uFF54)\" + \"[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*\" + CAPTURING_EXTN_DIGITS + '#?|' + '[- ]+([' + VALID_DIGITS + ']{1,5})#';\n}\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\n\n\nvar EXTN_PATTERNS_FOR_PARSING = create_extension_pattern('parsing');\nvar EXTN_PATTERNS_FOR_MATCHING = create_extension_pattern('matching'); // Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\n\nvar EXTN_PATTERN = new RegExp('(?:' + EXTN_PATTERNS_FOR_PARSING + ')$', 'i'); // Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\n\nfunction extractExtension(number) {\n var start = number.search(EXTN_PATTERN);\n\n if (start < 0) {\n return {};\n } // If we find a potential extension, and the number preceding this is a viable\n // number, we assume it is an extension.\n\n\n var number_without_extension = number.slice(0, start);\n var matches = number.match(EXTN_PATTERN);\n var i = 1;\n\n while (i < matches.length) {\n if (matches[i] != null && matches[i].length > 0) {\n return {\n number: number_without_extension,\n ext: matches[i]\n };\n }\n\n i++;\n }\n}\n//# sourceMappingURL=extension.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/isViablePhoneNumber.js\n\n // Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\n\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'; //\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\n\nvar VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*'; // The combined regular expression for valid phone numbers:\n//\n\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp( // Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' + // Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER + // Phone number extensions\n'(?:' + EXTN_PATTERNS_FOR_PARSING + ')?' + '$', 'i'); // Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\n\nfunction isViablePhoneNumber(number) {\n return number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n}\n//# sourceMappingURL=isViablePhoneNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parseDigits.js\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nvar DIGITS = {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n \"\\uFF10\": '0',\n // Fullwidth digit 0\n \"\\uFF11\": '1',\n // Fullwidth digit 1\n \"\\uFF12\": '2',\n // Fullwidth digit 2\n \"\\uFF13\": '3',\n // Fullwidth digit 3\n \"\\uFF14\": '4',\n // Fullwidth digit 4\n \"\\uFF15\": '5',\n // Fullwidth digit 5\n \"\\uFF16\": '6',\n // Fullwidth digit 6\n \"\\uFF17\": '7',\n // Fullwidth digit 7\n \"\\uFF18\": '8',\n // Fullwidth digit 8\n \"\\uFF19\": '9',\n // Fullwidth digit 9\n \"\\u0660\": '0',\n // Arabic-indic digit 0\n \"\\u0661\": '1',\n // Arabic-indic digit 1\n \"\\u0662\": '2',\n // Arabic-indic digit 2\n \"\\u0663\": '3',\n // Arabic-indic digit 3\n \"\\u0664\": '4',\n // Arabic-indic digit 4\n \"\\u0665\": '5',\n // Arabic-indic digit 5\n \"\\u0666\": '6',\n // Arabic-indic digit 6\n \"\\u0667\": '7',\n // Arabic-indic digit 7\n \"\\u0668\": '8',\n // Arabic-indic digit 8\n \"\\u0669\": '9',\n // Arabic-indic digit 9\n \"\\u06F0\": '0',\n // Eastern-Arabic digit 0\n \"\\u06F1\": '1',\n // Eastern-Arabic digit 1\n \"\\u06F2\": '2',\n // Eastern-Arabic digit 2\n \"\\u06F3\": '3',\n // Eastern-Arabic digit 3\n \"\\u06F4\": '4',\n // Eastern-Arabic digit 4\n \"\\u06F5\": '5',\n // Eastern-Arabic digit 5\n \"\\u06F6\": '6',\n // Eastern-Arabic digit 6\n \"\\u06F7\": '7',\n // Eastern-Arabic digit 7\n \"\\u06F8\": '8',\n // Eastern-Arabic digit 8\n \"\\u06F9\": '9' // Eastern-Arabic digit 9\n\n};\nfunction parseDigit(character) {\n return DIGITS[character];\n}\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\n\nfunction parseDigits(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n var digit = parseDigit(character);\n\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=parseDigits.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parseIncompletePhoneNumber.js\n\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\n\nfunction parseIncompletePhoneNumber(string) {\n var result = ''; // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n\n for (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var character = _ref;\n result += parsePhoneNumberCharacter(character, result) || '';\n }\n\n return result;\n}\n/**\r\n * `input-format` `parse()` function.\r\n * https://gitlab.com/catamphetamine/input-format\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string} value - The value parsed so far.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\n\nfunction parsePhoneNumberCharacter(character, value) {\n // Only allow a leading `+`.\n if (character === '+') {\n // If this `+` is not the first parsed character\n // then discard it.\n if (value) {\n return;\n }\n\n return '+';\n } // Allow digits.\n\n\n return parseDigit(character);\n}\n//# sourceMappingURL=parseIncompletePhoneNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/getNumberType_.js\n\n\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL']; // Finds out national phone number type (fixed line, mobile, etc)\n\nfunction getNumberType(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {}; // When `parse()` returned `{}`\n // meaning that the phone number is not a valid one.\n\n if (!input.country) {\n return;\n }\n\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(input.country, input.countryCallingCode);\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // The following is copy-pasted from the original function:\n // https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n // Is this national number even valid for this country\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n return;\n } // Is it fixed line number\n\n\n if (is_of_type(nationalNumber, 'FIXED_LINE', metadata)) {\n // Because duplicate regular expressions are removed\n // to reduce metadata size, if \"mobile\" pattern is \"\"\n // then it means it was removed due to being a duplicate of the fixed-line pattern.\n //\n if (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n return 'FIXED_LINE_OR_MOBILE';\n } // v1 metadata.\n // Legacy.\n // Deprecated.\n\n\n if (!metadata.type('MOBILE')) {\n return 'FIXED_LINE_OR_MOBILE';\n } // Check if the number happens to qualify as both fixed line and mobile.\n // (no such country in the minimal metadata set)\n\n /* istanbul ignore if */\n\n\n if (is_of_type(nationalNumber, 'MOBILE', metadata)) {\n return 'FIXED_LINE_OR_MOBILE';\n }\n\n return 'FIXED_LINE';\n }\n\n for (var _i = 0, _NON_FIXED_LINE_PHONE = NON_FIXED_LINE_PHONE_TYPES; _i < _NON_FIXED_LINE_PHONE.length; _i++) {\n var _type = _NON_FIXED_LINE_PHONE[_i];\n\n if (is_of_type(nationalNumber, _type, metadata)) {\n return _type;\n }\n }\n}\nfunction is_of_type(nationalNumber, type, metadata) {\n type = metadata.type(type);\n\n if (!type || !type.pattern()) {\n return false;\n } // Check if any possible number lengths are present;\n // if so, we use them to avoid checking\n // the validation pattern if they don't match.\n // If they are absent, this means they match\n // the general description, which we have\n // already checked before a specific number type.\n\n\n if (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n return false;\n }\n\n return matchesEntirely(nationalNumber, type.pattern());\n} // Should only be called for the \"new\" metadata which has \"possible lengths\".\n\nfunction checkNumberLengthForType(nationalNumber, type, metadata) {\n var type_info = metadata.type(type); // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths(); // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n }\n\n var mobile_type = metadata.type('MOBILE');\n\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths()); // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n // if (local_lengths)\n // {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // }\n // else\n // {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n } // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n\n var actual_length = nationalNumber.length; // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n } // We skip the first element since we've already checked it.\n\n\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=getNumberType_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/isPossibleNumber_.js\n\n\nfunction isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n metadata = new Metadata(metadata);\n\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n\n metadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n }\n }\n\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, undefined, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nfunction isPossibleNumber(nationalNumber, isInternational, metadata) {\n switch (checkNumberLengthForType(nationalNumber, undefined, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossibleNumber_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/IDD.js\n\n\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\n\nvar SINGLE_IDD_PREFIX = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/; // For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\n\nfunction getIDDPrefix(country, callingCode, metadata) {\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n\n if (SINGLE_IDD_PREFIX.test(countryMetadata.IDDPrefix())) {\n return countryMetadata.IDDPrefix();\n }\n\n return countryMetadata.defaultIDDPrefix();\n}\nfunction stripIDDPrefix(number, country, callingCode, metadata) {\n if (!country) {\n return;\n } // Check if the number is IDD-prefixed.\n\n\n var countryMetadata = new Metadata(metadata);\n countryMetadata.selectNumberingPlan(country, callingCode);\n var IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n if (number.search(IDDPrefixPattern) !== 0) {\n return;\n } // Strip IDD prefix.\n\n\n number = number.slice(number.match(IDDPrefixPattern)[0].length); // Some kind of a weird edge case.\n // No explanation from Google given.\n\n var matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n /* istanbul ignore next */\n\n if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n if (matchedGroups[1] === '0') {\n return;\n }\n }\n\n return number;\n}\n//# sourceMappingURL=IDD.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/RFC3966.js\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n // https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\nfunction parseRFC3966(text) {\n var number;\n var ext; // Replace \"tel:\" with \"tel=\" for parsing convenience.\n\n text = text.replace(/^tel:/, 'tel=');\n\n for (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var part = _ref;\n\n var _part$split = part.split('='),\n _part$split2 = _slicedToArray(_part$split, 2),\n name = _part$split2[0],\n value = _part$split2[1];\n\n switch (name) {\n case 'tel':\n number = value;\n break;\n\n case 'ext':\n ext = value;\n break;\n\n case 'phone-context':\n // Only \"country contexts\" are supported.\n // \"Domain contexts\" are ignored.\n if (value[0] === '+') {\n number = value + number;\n }\n\n break;\n }\n } // If the phone number is not viable, then abort.\n\n\n if (!isViablePhoneNumber(number)) {\n return {};\n }\n\n var result = {\n number: number\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\n\nfunction formatRFC3966(_ref2) {\n var number = _ref2.number,\n ext = _ref2.ext;\n\n if (!number) {\n return '';\n }\n\n if (number[0] !== '+') {\n throw new Error(\"\\\"formatRFC3966()\\\" expects \\\"number\\\" to be in E.164 format.\");\n }\n\n return \"tel:\".concat(number).concat(ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/validate_.js\n\n\n\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nfunction isValidNumber(input, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n\n if (!input.country) {\n return false;\n }\n\n metadata.selectNumberingPlan(input.country, input.countryCallingCode); // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n } // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n\n\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n//# sourceMappingURL=validate_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/format_.js\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { format_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction format_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\n\n\n\n\nvar DEFAULT_OPTIONS = {\n formatExtension: function formatExtension(formattedNumber, extension, metadata) {\n return \"\".concat(formattedNumber).concat(metadata.ext()).concat(extension);\n } // Formats a phone number\n //\n // Example use cases:\n //\n // ```js\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n // formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n // formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n // formatNumber('+78005553535', 'NATIONAL')\n // formatNumber('+78005553535', 'NATIONAL', metadata)\n // ```\n //\n\n};\nfunction format_formatNumber(input, format, options, metadata) {\n // Apply default options.\n if (options) {\n options = _objectSpread({}, DEFAULT_OPTIONS, options);\n } else {\n options = DEFAULT_OPTIONS;\n }\n\n metadata = new Metadata(metadata);\n\n if (input.country && input.country !== '001') {\n // Validate `input.country`.\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n\n metadata.country(input.country);\n } else if (input.countryCallingCode) {\n metadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n } else return input.phone || '';\n\n var countryCallingCode = metadata.countryCallingCode();\n var nationalNumber = options.v2 ? input.nationalNumber : input.phone; // This variable should have been declared inside `case`s\n // but Babel has a bug and it says \"duplicate variable declaration\".\n\n var number;\n\n switch (format) {\n case 'NATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return '';\n }\n\n number = formatNationalNumber(nationalNumber, 'NATIONAL', metadata, options);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'INTERNATIONAL':\n // Legacy argument support.\n // (`{ country: ..., phone: '' }`)\n if (!nationalNumber) {\n return \"+\".concat(countryCallingCode);\n }\n\n number = formatNationalNumber(nationalNumber, 'INTERNATIONAL', metadata, options);\n number = \"+\".concat(countryCallingCode, \" \").concat(number);\n return addExtension(number, input.ext, metadata, options.formatExtension);\n\n case 'E.164':\n // `E.164` doesn't define \"phone number extensions\".\n return \"+\".concat(countryCallingCode).concat(nationalNumber);\n\n case 'RFC3966':\n return formatRFC3966({\n number: \"+\".concat(countryCallingCode).concat(nationalNumber),\n ext: input.ext\n });\n\n case 'IDD':\n if (!options.fromCountry) {\n return; // throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n }\n\n var IDDPrefix = getIDDPrefix(options.fromCountry, undefined, metadata.metadata);\n\n if (!IDDPrefix) {\n return;\n }\n\n if (options.humanReadable) {\n var formattedForSameCountryCallingCode = countryCallingCode && formatIDDSameCountryCallingCodeNumber(nationalNumber, metadata.countryCallingCode(), options.fromCountry, metadata, options);\n\n if (formattedForSameCountryCallingCode) {\n number = formattedForSameCountryCallingCode;\n } else {\n number = \"\".concat(IDDPrefix, \" \").concat(countryCallingCode, \" \").concat(formatNationalNumber(nationalNumber, 'INTERNATIONAL', metadata, options));\n }\n\n return addExtension(number, input.ext, metadata, options.formatExtension);\n }\n\n return \"\".concat(IDDPrefix).concat(countryCallingCode).concat(nationalNumber);\n\n default:\n throw new Error(\"Unknown \\\"format\\\" argument passed to \\\"formatNumber()\\\": \\\"\".concat(format, \"\\\"\"));\n }\n} // This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use \\d, so that the first\n// group actually used in the pattern will be matched.\n\nvar FIRST_GROUP_PATTERN = /(\\$\\d)/;\nfunction formatNationalNumberUsingFormat(number, format, useInternationalSeparator, useNationalPrefixFormattingRule, metadata) {\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalSeparator ? format.internationalFormat() : useNationalPrefixFormattingRule && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n if (useInternationalSeparator) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n\n return formattedNumber;\n}\n\nfunction formatNationalNumber(number, formatAs, metadata, options) {\n var format = chooseFormatForNumber(metadata.formats(), number);\n\n if (!format) {\n return number;\n }\n\n return formatNationalNumberUsingFormat(number, format, formatAs === 'INTERNATIONAL', format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && options.nationalPrefix === false ? false : true, metadata);\n}\n\nfunction chooseFormatForNumber(availableFormats, nationalNnumber) {\n for (var _iterator = availableFormats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var format = _ref;\n\n // Validate leading digits\n if (format.leadingDigitsPatterns().length > 0) {\n // The last leading_digits_pattern is used here, as it is the most detailed\n var lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]; // If leading digits don't match then move on to the next phone number format\n\n if (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\n continue;\n }\n } // Check that the national number matches the phone number format regular expression\n\n\n if (matchesEntirely(nationalNnumber, format.pattern())) {\n return format;\n }\n }\n} // Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\n\n\nfunction applyInternationalSeparatorStyle(local) {\n return local.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n return ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDDSameCountryCallingCodeNumber(number, toCountryCallingCode, fromCountry, toCountryMetadata, options) {\n var fromCountryMetadata = new Metadata(toCountryMetadata.metadata);\n fromCountryMetadata.country(fromCountry); // If calling within the same country calling code.\n\n if (toCountryCallingCode === fromCountryMetadata.countryCallingCode()) {\n // For NANPA regions, return the national format for these regions\n // but prefix it with the country calling code.\n if (toCountryCallingCode === '1') {\n return toCountryCallingCode + ' ' + formatNationalNumber(number, 'NATIONAL', toCountryMetadata, options);\n } // If regions share a country calling code, the country calling code need\n // not be dialled. This also applies when dialling within a region, so this\n // if clause covers both these cases. Technically this is the case for\n // dialling from La Reunion to other overseas departments of France (French\n // Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n // this edge case for now and for those cases return the version including\n // country calling code. Details here:\n // http://www.petitfute.com/voyage/225-info-pratiques-reunion\n //\n\n\n return formatNationalNumber(number, 'NATIONAL', toCountryMetadata, options);\n }\n}\n//# sourceMappingURL=format_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/PhoneNumber.js\nfunction PhoneNumber_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { PhoneNumber_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction PhoneNumber_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction PhoneNumber_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction PhoneNumber_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction PhoneNumber_createClass(Constructor, protoProps, staticProps) { if (protoProps) PhoneNumber_defineProperties(Constructor.prototype, protoProps); if (staticProps) PhoneNumber_defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\nvar USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar PhoneNumber_PhoneNumber =\n/*#__PURE__*/\nfunction () {\n function PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n PhoneNumber_classCallCheck(this, PhoneNumber);\n\n if (!countryCallingCode) {\n throw new TypeError('`country` or `countryCallingCode` not passed');\n }\n\n if (!nationalNumber) {\n throw new TypeError('`nationalNumber` not passed');\n }\n\n var _metadata = new Metadata(metadata); // If country code is passed then derive `countryCallingCode` from it.\n // Also store the country code as `.country`.\n\n\n if (isCountryCode(countryCallingCode)) {\n this.country = countryCallingCode;\n\n _metadata.country(countryCallingCode);\n\n countryCallingCode = _metadata.countryCallingCode();\n } else {\n /* istanbul ignore if */\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (_metadata.isNonGeographicCallingCode(countryCallingCode)) {\n this.country = '001';\n }\n }\n }\n\n this.countryCallingCode = countryCallingCode;\n this.nationalNumber = nationalNumber;\n this.number = '+' + this.countryCallingCode + this.nationalNumber;\n this.metadata = metadata;\n }\n\n PhoneNumber_createClass(PhoneNumber, [{\n key: \"isPossible\",\n value: function isPossible() {\n return isPossiblePhoneNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isValid\",\n value: function isValid() {\n return isValidNumber(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"isNonGeographic\",\n value: function isNonGeographic() {\n var metadata = new Metadata(this.metadata);\n return metadata.isNonGeographicCallingCode(this.countryCallingCode);\n }\n }, {\n key: \"isEqual\",\n value: function isEqual(phoneNumber) {\n return this.number === phoneNumber.number && this.ext === phoneNumber.ext;\n } // // Is just an alias for `this.isValid() && this.country === country`.\n // // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n // isValidForRegion(country) {\n // \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n // }\n\n }, {\n key: \"getType\",\n value: function getType() {\n return getNumberType(this, {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"format\",\n value: function format(_format, options) {\n return format_formatNumber(this, _format, options ? PhoneNumber_objectSpread({}, options, {\n v2: true\n }) : {\n v2: true\n }, this.metadata);\n }\n }, {\n key: \"formatNational\",\n value: function formatNational(options) {\n return this.format('NATIONAL', options);\n }\n }, {\n key: \"formatInternational\",\n value: function formatInternational(options) {\n return this.format('INTERNATIONAL', options);\n }\n }, {\n key: \"getURI\",\n value: function getURI(options) {\n return this.format('RFC3966', options);\n }\n }]);\n\n return PhoneNumber;\n}();\n\n\n\nvar isCountryCode = function isCountryCode(value) {\n return /^[A-Z]{2}$/.test(value);\n};\n//# sourceMappingURL=PhoneNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parse_.js\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\n\n\n\n\n\n\n\n\n\n\n\n // We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\n\nvar MAX_INPUT_STRING_LENGTH = 250; // This consists of the plus symbol, digits, and arabic-indic digits.\n\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']'); // Regular expression of trailing characters that we want to remove.\n\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + ']+$');\nvar parse_USE_NON_GEOGRAPHIC_COUNTRY_CODE = false; // `options`:\n// {\n// country:\n// {\n// restrict - (a two-letter country code)\n// the phone number must be in this country\n//\n// default - (a two-letter country code)\n// default country to use for phone number parsing and validation\n// (if no country code could be derived from the phone number)\n// }\n// }\n//\n// Returns `{ country, number }`\n//\n// Example use cases:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nfunction parse(text, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n metadata = new Metadata(metadata); // Validate `defaultCountry`.\n\n if (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n throw new Error(\"Unknown country: \".concat(options.defaultCountry));\n } // Parse the phone number.\n\n\n var _parseInput = parseInput(text, options.v2),\n formattedPhoneNumber = _parseInput.number,\n ext = _parseInput.ext; // If the phone number is not viable then return nothing.\n\n\n if (!formattedPhoneNumber) {\n if (options.v2) {\n throw new ParseError('NOT_A_NUMBER');\n }\n\n return {};\n }\n\n var _parsePhoneNumber = parsePhoneNumber(formattedPhoneNumber, options.defaultCountry, options.defaultCallingCode, metadata),\n country = _parsePhoneNumber.country,\n nationalNumber = _parsePhoneNumber.nationalNumber,\n countryCallingCode = _parsePhoneNumber.countryCallingCode,\n carrierCode = _parsePhoneNumber.carrierCode;\n\n if (!metadata.hasSelectedNumberingPlan()) {\n if (options.v2) {\n throw new ParseError('INVALID_COUNTRY');\n }\n\n return {};\n } // Validate national (significant) number length.\n\n\n if (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n // Won't throw here because the regexp already demands length > 1.\n\n /* istanbul ignore if */\n if (options.v2) {\n throw new ParseError('TOO_SHORT');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n } // Validate national (significant) number length.\n //\n // A sidenote:\n //\n // They say that sometimes national (significant) numbers\n // can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n // https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n // Such numbers will just be discarded.\n //\n\n\n if (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n if (options.v2) {\n throw new ParseError('TOO_LONG');\n } // Google's demo just throws an error in this case.\n\n\n return {};\n }\n\n if (options.v2) {\n var phoneNumber = new PhoneNumber_PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n if (country) {\n phoneNumber.country = country;\n }\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n }\n\n if (ext) {\n phoneNumber.ext = ext;\n }\n\n return phoneNumber;\n } // Check if national phone number pattern matches the number.\n // National number pattern is different for each country,\n // even for those ones which are part of the \"NANPA\" group.\n\n\n var valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ? matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) : false;\n\n if (!options.extended) {\n return valid ? parse_result(country, nationalNumber, ext) : {};\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n carrierCode: carrierCode,\n valid: valid,\n possible: valid ? true : options.extended === true && metadata.possibleLengths() && isPossibleNumber(nationalNumber, countryCallingCode !== undefined, metadata) ? true : false,\n phone: nationalNumber,\n ext: ext\n };\n}\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} throwOnError — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\n\nfunction extractFormattedPhoneNumber(text, throwOnError) {\n if (!text) {\n return;\n }\n\n if (text.length > MAX_INPUT_STRING_LENGTH) {\n if (throwOnError) {\n throw new ParseError('TOO_LONG');\n }\n\n return;\n } // Attempt to extract a possible number from the string passed in\n\n\n var startsAt = text.search(PHONE_NUMBER_START_PATTERN);\n\n if (startsAt < 0) {\n return;\n }\n\n return text // Trim everything to the left of the phone number\n .slice(startsAt) // Remove trailing non-numerical characters\n .replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\nfunction stripNationalPrefixAndCarrierCode(number, metadata) {\n if (number && metadata.nationalPrefixForParsing()) {\n // See METADATA.md for the description of\n // `national_prefix_for_parsing` and `national_prefix_transform_rule`.\n // Attempt to parse the first digits as a national prefix.\n var prefixPattern = new RegExp('^(?:' + metadata.nationalPrefixForParsing() + ')');\n var prefixMatch = prefixPattern.exec(number);\n\n if (prefixMatch) {\n var nationalNumber;\n var carrierCode; // If a \"capturing group\" didn't match\n // then its element in `prefixMatch[]` array will be `undefined`.\n\n var capturedGroupsCount = prefixMatch.length - 1;\n\n if (metadata.nationalPrefixTransformRule() && capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]) {\n nationalNumber = number.replace(prefixPattern, metadata.nationalPrefixTransformRule()); // Carrier code is the last captured group,\n // but only when there's more than one captured group.\n\n if (capturedGroupsCount > 1 && prefixMatch[capturedGroupsCount]) {\n carrierCode = prefixMatch[1];\n }\n } // If it's a simple-enough case then just\n // strip the national prefix from the number.\n else {\n // National prefix is the whole substring matched by\n // the `national_prefix_for_parsing` regexp.\n var nationalPrefix = prefixMatch[0];\n nationalNumber = number.slice(nationalPrefix.length); // Carrier code is the last captured group.\n\n if (capturedGroupsCount > 0) {\n carrierCode = prefixMatch[1];\n }\n } // We require that the national (significant) number remaining after\n // stripping the national prefix and carrier code be long enough\n // to be a possible length for the region. Otherwise, we don't do\n // the stripping, since the original number could be a valid number.\n // For example, in some countries (Russia, Belarus) the same digit\n // could be both a national prefix and a leading digit of a valid\n // national phone number, like `8` is the national prefix for Russia\n // and `800 555 35 35` is a valid national (significant) number.\n\n\n if (matchesEntirely(number, metadata.nationalNumberPattern()) && !matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {// Don't strip national prefix or carrier code.\n } else {\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n }\n }\n }\n\n return {\n nationalNumber: number\n };\n}\nfunction findCountryCode(callingCode, nationalPhoneNumber, metadata) {\n /* istanbul ignore if */\n if (parse_USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(callingCode)) {\n return '001';\n }\n } // Is always non-empty, because `callingCode` is always valid\n\n\n var possibleCountries = metadata.getCountryCodesForCallingCode(callingCode);\n\n if (!possibleCountries) {\n return;\n } // If there's just one country corresponding to the country code,\n // then just return it, without further phone number digits validation.\n\n\n if (possibleCountries.length === 1) {\n return possibleCountries[0];\n }\n\n return _findCountryCode(possibleCountries, nationalPhoneNumber, metadata.metadata);\n} // Changes `metadata` `country`.\n\nfunction _findCountryCode(possibleCountries, nationalPhoneNumber, metadata) {\n metadata = new Metadata(metadata);\n\n for (var _iterator = possibleCountries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var country = _ref;\n metadata.country(country); // Leading digits check would be the simplest one\n\n if (metadata.leadingDigits()) {\n if (nationalPhoneNumber && nationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\n return country;\n }\n } // Else perform full validation with all of those\n // fixed-line/mobile/etc regular expressions.\n else if (getNumberType({\n phone: nationalPhoneNumber,\n country: country\n }, undefined, metadata.metadata)) {\n return country;\n }\n }\n}\n/**\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\n\n\nfunction parseInput(text, v2) {\n // Parse RFC 3966 phone number URI.\n if (text && text.indexOf('tel:') === 0) {\n return parseRFC3966(text);\n }\n\n var number = extractFormattedPhoneNumber(text, v2); // If the phone number is not viable, then abort.\n\n if (!number || !isViablePhoneNumber(number)) {\n return {};\n } // Attempt to parse extension first, since it doesn't require region-specific\n // data and we want to have the non-normalised number here.\n\n\n var withExtensionStripped = extractExtension(number);\n\n if (withExtensionStripped.ext) {\n return withExtensionStripped;\n }\n\n return {\n number: number\n };\n}\n/**\r\n * Creates `parse()` result object.\r\n */\n\n\nfunction parse_result(country, nationalNumber, ext) {\n var result = {\n country: country,\n phone: nationalNumber\n };\n\n if (ext) {\n result.ext = ext;\n }\n\n return result;\n}\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\n\n\nfunction parsePhoneNumber(formattedPhoneNumber, defaultCountry, defaultCallingCode, metadata) {\n // Extract calling code from phone number.\n var _extractCountryCallin = parse_extractCountryCallingCode(parseIncompletePhoneNumber(formattedPhoneNumber), defaultCountry, defaultCallingCode, metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number; // Choose a country by `countryCallingCode`.\n\n\n var country;\n\n if (countryCallingCode) {\n metadata.chooseCountryByCountryCallingCode(countryCallingCode);\n } // If `formattedPhoneNumber` is in \"national\" format\n // then `number` is defined and `countryCallingCode` isn't.\n else if (number && (defaultCountry || defaultCallingCode)) {\n metadata.selectNumberingPlan(defaultCountry, defaultCallingCode);\n\n if (defaultCountry) {\n country = defaultCountry;\n } else {\n /* istanbul ignore if */\n if (parse_USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n country = '001';\n }\n }\n }\n\n countryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata);\n } else return {};\n\n if (!number) {\n return {\n countryCallingCode: countryCallingCode\n };\n }\n\n var _stripNationalPrefixA = stripNationalPrefixAndCarrierCodeFromCompleteNumber(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _stripNationalPrefixA.nationalNumber,\n carrierCode = _stripNationalPrefixA.carrierCode; // Sometimes there are several countries\n // corresponding to the same country phone code\n // (e.g. NANPA countries all having `1` country phone code).\n // Therefore, to reliably determine the exact country,\n // national (significant) number should have been parsed first.\n //\n // When `metadata.json` is generated, all \"ambiguous\" country phone codes\n // get their countries populated with the full set of\n // \"phone number type\" regular expressions.\n //\n\n\n var exactCountry = findCountryCode(countryCallingCode, nationalNumber, metadata);\n\n if (exactCountry) {\n country = exactCountry;\n /* istanbul ignore if */\n\n if (exactCountry === '001') {// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\n // If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\n // then remove the \"istanbul ignore if\".\n } else {\n metadata.country(country);\n }\n }\n\n return {\n country: country,\n countryCallingCode: countryCallingCode,\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\n\n\nfunction stripNationalPrefixAndCarrierCodeFromCompleteNumber(number, metadata) {\n // Parsing national prefixes and carrier codes\n // is only required for local phone numbers\n // but some people don't understand that\n // and sometimes write international phone numbers\n // with national prefixes (or maybe even carrier codes).\n // http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n // Google's original library forgives such mistakes\n // and so does this library, because it has been requested:\n // https://github.com/catamphetamine/libphonenumber-js/issues/127\n var _stripNationalPrefixA2 = stripNationalPrefixAndCarrierCode(parseIncompletePhoneNumber(number), metadata),\n nationalNumber = _stripNationalPrefixA2.nationalNumber,\n carrierCode = _stripNationalPrefixA2.carrierCode; // If a national prefix has been extracted, check to see\n // if the resultant number isn't too short.\n\n\n if (nationalNumber.length !== number.length + (carrierCode ? carrierCode.length : 0)) {\n // If not using legacy generated metadata (before version `1.0.18`)\n // then it has \"possible lengths\", so use those to validate the number length.\n if (metadata.possibleLengths()) {\n // \"We require that the NSN remaining after stripping the national prefix and\n // carrier code be long enough to be a possible length for the region.\n // Otherwise, we don't do the stripping, since the original number could be\n // a valid short number.\"\n // https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\n switch (checkNumberLengthForType(nationalNumber, undefined, metadata)) {\n case 'TOO_SHORT':\n case 'INVALID_LENGTH':\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // Don't strip the national prefix.\n return {\n nationalNumber: number\n };\n }\n }\n }\n\n return {\n nationalNumber: nationalNumber,\n carrierCode: carrierCode\n };\n}\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\n\nfunction parse_extractCountryCallingCode(number, country, callingCode, metadata) {\n if (!number) {\n return {};\n } // If this is not an international phone number,\n // then either extract an \"IDD\" prefix, or extract a\n // country calling code from a number by autocorrecting it\n // by prepending a leading `+` in cases when it starts\n // with the country calling code.\n // https://wikitravel.org/en/International_dialling_prefix\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n\n\n if (number[0] !== '+') {\n // Convert an \"out-of-country\" dialing phone number\n // to a proper international phone number.\n var numberWithoutIDD = stripIDDPrefix(number, country, callingCode, metadata); // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n\n if (numberWithoutIDD && numberWithoutIDD !== number) {\n number = '+' + numberWithoutIDD;\n } else {\n // Check to see if the number starts with the country calling code\n // for the default country. If so, we remove the country calling code,\n // and do some checks on the validity of the number before and after.\n // https://github.com/catamphetamine/libphonenumber-js/issues/376\n if (country || callingCode) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata),\n countryCallingCode = _extractCountryCallin2.countryCallingCode,\n shorterNumber = _extractCountryCallin2.number;\n\n if (countryCallingCode) {\n return {\n countryCallingCode: countryCallingCode,\n number: shorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n }\n } // Fast abortion: country codes do not begin with a '0'\n\n\n if (number[1] === '0') {\n return {};\n }\n\n metadata = new Metadata(metadata); // The thing with country phone codes\n // is that they are orthogonal to each other\n // i.e. there's no such country phone code A\n // for which country phone code B exists\n // where B starts with A.\n // Therefore, while scanning digits,\n // if a valid country code is found,\n // that means that it is the country code.\n //\n\n var i = 2;\n\n while (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n var _countryCallingCode = number.slice(1, i);\n\n if (metadata.hasCallingCode(_countryCallingCode)) {\n metadata.selectNumberingPlan(undefined, _countryCallingCode);\n return {\n countryCallingCode: _countryCallingCode,\n number: number.slice(i)\n };\n }\n\n i++;\n }\n\n return {};\n}\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\n\nfunction extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(number, country, callingCode, metadata) {\n var countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode;\n\n if (number.indexOf(countryCallingCode) === 0) {\n metadata = new Metadata(metadata);\n metadata.selectNumberingPlan(country, callingCode);\n var possibleShorterNumber = number.slice(countryCallingCode.length);\n\n var _stripNationalPrefixA3 = stripNationalPrefixAndCarrierCode(possibleShorterNumber, metadata),\n possibleShorterNationalNumber = _stripNationalPrefixA3.nationalNumber;\n\n var _stripNationalPrefixA4 = stripNationalPrefixAndCarrierCode(number, metadata),\n nationalNumber = _stripNationalPrefixA4.nationalNumber; // If the number was not valid before but is valid now,\n // or if it was too long before, we consider the number\n // with the country calling code stripped to be a better result\n // and keep that instead.\n // For example, in Germany (+49), `49` is a valid area code,\n // so if a number starts with `49`, it could be both a valid\n // national German number or an international number without\n // a leading `+`.\n\n\n if (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) && matchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern()) || checkNumberLengthForType(nationalNumber, undefined, metadata) === 'TOO_LONG') {\n return {\n countryCallingCode: countryCallingCode,\n number: possibleShorterNumber\n };\n }\n }\n\n return {\n number: number\n };\n}\n//# sourceMappingURL=parse_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parsePhoneNumber_.js\nfunction parsePhoneNumber_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { parsePhoneNumber_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction parsePhoneNumber_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nfunction parsePhoneNumber_parsePhoneNumber(text, options, metadata) {\n return parse(text, parsePhoneNumber_objectSpread({}, options, {\n v2: true\n }), metadata);\n}\n//# sourceMappingURL=parsePhoneNumber_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parsePhoneNumber.js\nfunction parsePhoneNumber_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { parsePhoneNumber_typeof = function _typeof(obj) { return typeof obj; }; } else { parsePhoneNumber_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return parsePhoneNumber_typeof(obj); }\n\nfunction es6_parsePhoneNumber_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { es6_parsePhoneNumber_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction es6_parsePhoneNumber_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction parsePhoneNumber_slicedToArray(arr, i) { return parsePhoneNumber_arrayWithHoles(arr) || parsePhoneNumber_iterableToArrayLimit(arr, i) || parsePhoneNumber_nonIterableRest(); }\n\nfunction parsePhoneNumber_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction parsePhoneNumber_iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction parsePhoneNumber_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\nfunction es6_parsePhoneNumber_parsePhoneNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumber_parsePhoneNumber(text, options, metadata);\n}\nfunction normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = parsePhoneNumber_slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var text;\n var options;\n var metadata; // If the phone number is passed as a string.\n // `parsePhoneNumber('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n text = arg_1;\n } else throw new TypeError('A text for parsing must be a string.'); // If \"default country\" argument is being passed then move it to `options`.\n // `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\n\n if (!arg_2 || typeof arg_2 === 'string') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n options = undefined;\n metadata = arg_3;\n }\n\n if (arg_2) {\n options = es6_parsePhoneNumber_objectSpread({\n defaultCountry: arg_2\n }, options);\n }\n } // `defaultCountry` is not passed.\n // Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n else if (isObject(arg_2)) {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new Error(\"Invalid second argument: \".concat(arg_2));\n\n return {\n text: text,\n options: options,\n metadata: metadata\n };\n} // Otherwise istanbul would show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar isObject = function isObject(_) {\n return parsePhoneNumber_typeof(_) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parsePhoneNumberFromString_.js\nfunction parsePhoneNumberFromString_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { parsePhoneNumberFromString_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction parsePhoneNumberFromString_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction parsePhoneNumberFromString(text, options, metadata) {\n // Validate `defaultCountry`.\n if (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n options = parsePhoneNumberFromString_objectSpread({}, options, {\n defaultCountry: undefined\n });\n } // Parse phone number.\n\n\n try {\n return parsePhoneNumber_parsePhoneNumber(text, options, metadata);\n } catch (error) {\n /* istanbul ignore else */\n if (error instanceof ParseError) {//\n } else {\n throw error;\n }\n }\n}\n//# sourceMappingURL=parsePhoneNumberFromString_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parsePhoneNumberFromString.js\n\n\nfunction parsePhoneNumberFromString_parsePhoneNumberFromString() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parsePhoneNumberFromString(text, options, metadata);\n}\n//# sourceMappingURL=parsePhoneNumberFromString.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/parse.js\n\n // `options`:\n// {\n// country:\n// {\n// restrict - (a two-letter country code)\n// the phone number must be in this country\n//\n// default - (a two-letter country code)\n// default country to use for phone number parsing and validation\n// (if no country code could be derived from the phone number)\n// }\n// }\n//\n// Returns `{ country, number }`\n//\n// Example use cases:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\n\nfunction parseNumber() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return parse(text, options, metadata);\n}\n//# sourceMappingURL=parse.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/format.js\nfunction format_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { format_typeof = function _typeof(obj) { return typeof obj; }; } else { format_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return format_typeof(obj); }\n\nfunction format_slicedToArray(arr, i) { return format_arrayWithHoles(arr) || format_iterableToArrayLimit(arr, i) || format_nonIterableRest(); }\n\nfunction format_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction format_iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction format_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\nfunction es6_format_formatNumber() {\n var _normalizeArguments = format_normalizeArguments(arguments),\n input = _normalizeArguments.input,\n format = _normalizeArguments.format,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return format_formatNumber(input, format, options, metadata);\n} // Sort out arguments\n\nfunction format_normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = format_slicedToArray(_Array$prototype$slic, 5),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3],\n arg_5 = _Array$prototype$slic2[4];\n\n var input;\n var format;\n var options;\n var metadata; // Sort out arguments.\n // If the phone number is passed as a string.\n // `format('8005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If country code is supplied.\n // `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\n if (typeof arg_3 === 'string') {\n format = arg_3;\n\n if (arg_5) {\n options = arg_4;\n metadata = arg_5;\n } else {\n metadata = arg_4;\n }\n\n input = parse(arg_1, {\n defaultCountry: arg_2,\n extended: true\n }, metadata);\n } // Just an international phone number is supplied\n // `format('+78005553535', 'NATIONAL', [options], metadata)`.\n else {\n if (typeof arg_2 !== 'string') {\n throw new Error('`format` argument not passed to `formatNumber(number, format)`');\n }\n\n format = arg_2;\n\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n\n input = parse(arg_1, {\n extended: true\n }, metadata);\n }\n } // If the phone number is passed as a parsed number object.\n // `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\n else if (format_is_object(arg_1)) {\n input = arg_1;\n format = arg_2;\n\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.'); // Legacy lowercase formats.\n\n\n if (format === 'International') {\n format = 'INTERNATIONAL';\n } else if (format === 'National') {\n format = 'NATIONAL';\n }\n\n return {\n input: input,\n format: format,\n options: options,\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\n\nvar format_is_object = function is_object(_) {\n return format_typeof(_) === 'object';\n};\n//# sourceMappingURL=format.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/getNumberType.js\nfunction getNumberType_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { getNumberType_typeof = function _typeof(obj) { return typeof obj; }; } else { getNumberType_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return getNumberType_typeof(obj); }\n\nfunction getNumberType_slicedToArray(arr, i) { return getNumberType_arrayWithHoles(arr) || getNumberType_iterableToArrayLimit(arr, i) || getNumberType_nonIterableRest(); }\n\nfunction getNumberType_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction getNumberType_iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction getNumberType_arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n // Finds out national phone number type (fixed line, mobile, etc)\n\nfunction getNumberType_getNumberType() {\n var _normalizeArguments = getNumberType_normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return getNumberType(input, options, metadata);\n} // Sort out arguments\n\nfunction getNumberType_normalizeArguments(args) {\n var _Array$prototype$slic = Array.prototype.slice.call(args),\n _Array$prototype$slic2 = getNumberType_slicedToArray(_Array$prototype$slic, 4),\n arg_1 = _Array$prototype$slic2[0],\n arg_2 = _Array$prototype$slic2[1],\n arg_3 = _Array$prototype$slic2[2],\n arg_4 = _Array$prototype$slic2[3];\n\n var input;\n var options = {};\n var metadata; // If the phone number is passed as a string.\n // `getNumberType('88005553535', ...)`.\n\n if (typeof arg_1 === 'string') {\n // If \"default country\" argument is being passed\n // then convert it to an `options` object.\n // `getNumberType('88005553535', 'RU', metadata)`.\n if (getNumberType_typeof(arg_2) !== 'object') {\n if (arg_4) {\n options = arg_3;\n metadata = arg_4;\n } else {\n metadata = arg_3;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, {\n defaultCountry: arg_2\n }, metadata);\n } else {\n input = {};\n }\n } // No \"resrict country\" argument is being passed.\n // International phone number is passed.\n // `getNumberType('+78005553535', metadata)`.\n else {\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n if (isViablePhoneNumber(arg_1)) {\n input = parse(arg_1, undefined, metadata);\n } else {\n input = {};\n }\n }\n } // If the phone number is passed as a parsed phone number.\n // `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n else if (getNumberType_is_object(arg_1)) {\n input = arg_1;\n\n if (arg_3) {\n options = arg_2;\n metadata = arg_3;\n } else {\n metadata = arg_2;\n }\n } else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.');\n\n return {\n input: input,\n options: options,\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar getNumberType_is_object = function is_object(_) {\n return getNumberType_typeof(_) === 'object';\n};\n//# sourceMappingURL=getNumberType.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/getExampleNumber.js\n\nfunction getExampleNumber(country, examples, metadata) {\n if (examples[country]) {\n return new PhoneNumber_PhoneNumber(country, examples[country], metadata);\n }\n}\n//# sourceMappingURL=getExampleNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/isPossibleNumber.js\n\n\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\n\nfunction isPossibleNumber_isPossibleNumber() {\n var _normalizeArguments = getNumberType_normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return isPossiblePhoneNumber(input, options, metadata);\n}\n//# sourceMappingURL=isPossibleNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/validate.js\n\n // Finds out national phone number type (fixed line, mobile, etc)\n\nfunction validate_isValidNumber() {\n var _normalizeArguments = getNumberType_normalizeArguments(arguments),\n input = _normalizeArguments.input,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return isValidNumber(input, options, metadata);\n}\n//# sourceMappingURL=validate.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/isValidNumberForRegion_.js\n\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\n\nfunction isValidNumberForRegion(input, country, options, metadata) {\n // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n options = options || {};\n return input.country === country && isValidNumber(input, options, metadata);\n}\n//# sourceMappingURL=isValidNumberForRegion_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/isValidNumberForRegion.js\n\n\n\nfunction isValidNumberForRegion_isValidNumberForRegion(number, country, metadata) {\n if (typeof number !== 'string') {\n throw new TypeError('number must be a string');\n }\n\n if (typeof country !== 'string') {\n throw new TypeError('country must be a string');\n } // `parse` extracts phone numbers from raw text,\n // therefore it will cut off all \"garbage\" characters,\n // while this `validate` function needs to verify\n // that the phone number contains no \"garbage\"\n // therefore the explicit `isViablePhoneNumber` check.\n\n\n var input;\n\n if (isViablePhoneNumber(number)) {\n input = parse(number, {\n defaultCountry: country\n }, metadata);\n } else {\n input = {};\n }\n\n return isValidNumberForRegion(input, country, undefined, metadata);\n}\n//# sourceMappingURL=isValidNumberForRegion.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/util.js\n/** Returns a regular expression quantifier with an upper and lower limit. */\nfunction limit(lower, upper) {\n if (lower < 0 || upper <= 0 || upper < lower) {\n throw new TypeError();\n }\n\n return \"{\".concat(lower, \",\").concat(upper, \"}\");\n}\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\n\nfunction trimAfterFirstMatch(regexp, string) {\n var index = string.search(regexp);\n\n if (index >= 0) {\n return string.slice(0, index);\n }\n\n return string;\n}\nfunction startsWith(string, substring) {\n return string.indexOf(substring) === 0;\n}\nfunction endsWith(string, substring) {\n return string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n//# sourceMappingURL=util.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/parsePreCandidate.js\n // Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\n\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\nfunction parsePreCandidate(candidate) {\n // Check for extra numbers at the end.\n // TODO: This is the place to start when trying to support extraction of multiple phone number\n // from split notations (+41 79 123 45 67 / 68).\n return trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/isValidPreCandidate.js\n// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/; // Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\n\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\nfunction isValidPreCandidate(candidate, offset, text) {\n // Skip a match that is more likely to be a date.\n if (SLASH_SEPARATED_DATES.test(candidate)) {\n return false;\n } // Skip potential time-stamps.\n\n\n if (TIME_STAMPS.test(candidate)) {\n var followingText = text.slice(offset + candidate.length);\n\n if (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/utf-8.js\n// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\nvar _pZ = \" \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\";\nvar pZ = \"[\".concat(_pZ, \"]\");\nvar PZ = \"[^\".concat(_pZ, \"]\");\nvar _pN = \"0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\"; // const pN = `[${_pN}]`\n\nvar _pNd = \"0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\";\nvar pNd = \"[\".concat(_pNd, \"]\");\nvar _pL = \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\";\nvar pL = \"[\".concat(_pL, \"]\");\nvar pL_regexp = new RegExp(pL);\nvar _pSc = \"$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6\";\nvar pSc = \"[\".concat(_pSc, \"]\");\nvar pSc_regexp = new RegExp(pSc);\nvar _pMn = \"\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26\";\nvar pMn = \"[\".concat(_pMn, \"]\");\nvar pMn_regexp = new RegExp(pMn);\nvar _InBasic_Latin = \"\\0-\\x7F\";\nvar _InLatin_1_Supplement = \"\\x80-\\xFF\";\nvar _InLatin_Extended_A = \"\\u0100-\\u017F\";\nvar _InLatin_Extended_Additional = \"\\u1E00-\\u1EFF\";\nvar _InLatin_Extended_B = \"\\u0180-\\u024F\";\nvar _InCombining_Diacritical_Marks = \"\\u0300-\\u036F\";\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\n\nfunction isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\nfunction isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n//# sourceMappingURL=utf-8.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/isValidCandidate.js\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n\n\nvar OPENING_PARENS = \"(\\\\[\\uFF08\\uFF3B\";\nvar CLOSING_PARENS = \")\\\\]\\uFF09\\uFF3D\";\nvar NON_PARENS = \"[^\".concat(OPENING_PARENS).concat(CLOSING_PARENS, \"]\");\nvar LEAD_CLASS = \"[\".concat(OPENING_PARENS).concat(PLUS_CHARS, \"]\"); // Punctuation that may be at the start of a phone number - brackets and plus signs.\n\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS); // Limit on the number of pairs of brackets in a phone number.\n\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\n\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n/**\r\n * Matches strings that look like publication pages. Example:\r\n * <pre>Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).</pre>\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\n\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\nfunction isValidCandidate(candidate, offset, text, leniency) {\n // Check the candidate doesn't contain any formatting\n // which would indicate that it really isn't a phone number.\n if (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n return;\n } // If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n // by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\n\n if (leniency !== 'POSSIBLE') {\n // If the candidate is not at the start of the text,\n // and does not start with phone-number punctuation,\n // check the previous character.\n if (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n var previousChar = text[offset - 1]; // We return null if it is a latin letter or an invalid punctuation symbol.\n\n if (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n return false;\n }\n }\n\n var lastCharIndex = offset + candidate.length;\n\n if (lastCharIndex < text.length) {\n var nextChar = text[lastCharIndex];\n\n if (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n return false;\n }\n }\n }\n\n return true;\n}\n//# sourceMappingURL=isValidCandidate.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findPhoneNumbers_.js\nfunction findPhoneNumbers_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction findPhoneNumbers_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction findPhoneNumbers_createClass(Constructor, protoProps, staticProps) { if (protoProps) findPhoneNumbers_defineProperties(Constructor.prototype, protoProps); if (staticProps) findPhoneNumbers_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction findPhoneNumbers_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is a legacy function.\n// Use `findNumbers()` instead.\n\n\n\n\n\n // Copy-pasted from `./parse.js`.\n\nvar findPhoneNumbers_VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\nvar WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+');\nvar PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$'); // // Regular expression for getting opening brackets for a valid number\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\n\nvar VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;\nfunction findPhoneNumbers(text, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n var search = new findPhoneNumbers_PhoneNumberSearch(text, options, metadata);\n var phones = [];\n\n while (search.hasNext()) {\n phones.push(search.next());\n }\n\n return phones;\n}\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nfunction searchPhoneNumbers(text, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n\n var search = new findPhoneNumbers_PhoneNumberSearch(text, options, metadata);\n return findPhoneNumbers_defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (search.hasNext()) {\n return {\n done: false,\n value: search.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\n\nvar findPhoneNumbers_PhoneNumberSearch =\n/*#__PURE__*/\nfunction () {\n // Iteration tristate.\n function PhoneNumberSearch(text, options, metadata) {\n findPhoneNumbers_classCallCheck(this, PhoneNumberSearch);\n\n findPhoneNumbers_defineProperty(this, \"state\", 'NOT_READY');\n\n this.text = text; // If assigning the `{}` default value is moved to the arguments above,\n // code coverage would decrease for some weird reason.\n\n this.options = options || {};\n this.metadata = metadata;\n this.regexp = new RegExp(findPhoneNumbers_VALID_PHONE_NUMBER + // Phone number extensions\n '(?:' + EXTN_PATTERNS_FOR_PARSING + ')?', 'ig'); // this.searching_from = 0\n }\n\n findPhoneNumbers_createClass(PhoneNumberSearch, [{\n key: \"find\",\n value: function find() {\n var matches = this.regexp.exec(this.text);\n\n if (!matches) {\n return;\n }\n\n var number = matches[0];\n var startsAt = matches.index;\n number = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '');\n startsAt += matches[0].length - number.length; // Fixes not parsing numbers with whitespace in the end.\n // Also fixes not parsing numbers with opening parentheses in the end.\n // https://github.com/catamphetamine/libphonenumber-js/issues/252\n\n number = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '');\n number = parsePreCandidate(number);\n var result = this.parseCandidate(number, startsAt);\n\n if (result) {\n return result;\n } // Tail recursion.\n // Try the next one if this one is not a valid phone number.\n\n\n return this.find();\n }\n }, {\n key: \"parseCandidate\",\n value: function parseCandidate(number, startsAt) {\n if (!isValidPreCandidate(number, startsAt, this.text)) {\n return;\n } // Don't parse phone numbers which are non-phone numbers\n // due to being part of something else (e.g. a UUID).\n // https://github.com/catamphetamine/libphonenumber-js/issues/213\n // Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\n\n\n if (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\n return;\n } // // Prepend any opening brackets left behind by the\n // // `PHONE_NUMBER_START_PATTERN` regexp.\n // const text_before_number = text.slice(this.searching_from, startsAt)\n // const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\n // if (full_number_starts_at >= 0)\n // {\n // \tnumber = text_before_number.slice(full_number_starts_at) + number\n // \tstartsAt = full_number_starts_at\n // }\n //\n // this.searching_from = matches.lastIndex\n\n\n var result = parse(number, this.options, this.metadata);\n\n if (!result.phone) {\n return;\n }\n\n result.startsAt = startsAt;\n result.endsAt = startsAt + number.length;\n return result;\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.last_match = this.find();\n\n if (this.last_match) {\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.last_match;\n this.last_match = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberSearch;\n}();\n//# sourceMappingURL=findPhoneNumbers_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findPhoneNumbers.js\n// This is a legacy function.\n// Use `findNumbers()` instead.\n\n\nfunction findPhoneNumbers_findPhoneNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return findPhoneNumbers(text, options, metadata);\n}\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nfunction findPhoneNumbers_searchPhoneNumbers() {\n var _normalizeArguments2 = normalizeArguments(arguments),\n text = _normalizeArguments2.text,\n options = _normalizeArguments2.options,\n metadata = _normalizeArguments2.metadata;\n\n return searchPhoneNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findPhoneNumbers.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/LRUCache.js\nfunction LRUCache_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction LRUCache_createClass(Constructor, protoProps, staticProps) { if (protoProps) LRUCache_defineProperties(Constructor.prototype, protoProps); if (staticProps) LRUCache_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction LRUCache_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\nvar Node = function Node(key, value) {\n var next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var prev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n LRUCache_classCallCheck(this, Node);\n\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n};\n\nvar LRUCache =\n/*#__PURE__*/\nfunction () {\n //set default limit of 10 if limit is not passed.\n function LRUCache() {\n var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n\n LRUCache_classCallCheck(this, LRUCache);\n\n this.size = 0;\n this.limit = limit;\n this.head = null;\n this.tail = null;\n this.cache = {};\n } // Write Node to head of LinkedList\n // update cache with Node key and Node reference\n\n\n LRUCache_createClass(LRUCache, [{\n key: \"put\",\n value: function put(key, value) {\n this.ensureLimit();\n\n if (!this.head) {\n this.head = this.tail = new Node(key, value);\n } else {\n var node = new Node(key, value, this.head);\n this.head.prev = node;\n this.head = node;\n } //Update the cache map\n\n\n this.cache[key] = this.head;\n this.size++;\n } // Read from cache map and make that node as new Head of LinkedList\n\n }, {\n key: \"get\",\n value: function get(key) {\n if (this.cache[key]) {\n var value = this.cache[key].value; // node removed from it's position and cache\n\n this.remove(key); // write node again to the head of LinkedList to make it most recently used\n\n this.put(key, value);\n return value;\n }\n\n console.log(\"Item not available in cache for key \".concat(key));\n }\n }, {\n key: \"ensureLimit\",\n value: function ensureLimit() {\n if (this.size === this.limit) {\n this.remove(this.tail.key);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(key) {\n var node = this.cache[key];\n\n if (node.prev !== null) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n\n if (node.next !== null) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n\n delete this.cache[key];\n this.size--;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = null;\n this.tail = null;\n this.size = 0;\n this.cache = {};\n } // // Invokes the callback function with every node of the chain and the index of the node.\n // forEach(fn) {\n // let node = this.head;\n // let counter = 0;\n // while (node) {\n // fn(node, counter);\n // node = node.next;\n // counter++;\n // }\n // }\n // // To iterate over LRU with a 'for...of' loop\n // *[Symbol.iterator]() {\n // let node = this.head;\n // while (node) {\n // yield node;\n // node = node.next;\n // }\n // }\n\n }]);\n\n return LRUCache;\n}();\n\n\n//# sourceMappingURL=LRUCache.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/RegExpCache.js\nfunction RegExpCache_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction RegExpCache_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction RegExpCache_createClass(Constructor, protoProps, staticProps) { if (protoProps) RegExpCache_defineProperties(Constructor.prototype, protoProps); if (staticProps) RegExpCache_defineProperties(Constructor, staticProps); return Constructor; }\n\n // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n// that use-case won't have a lot of benefit.\n\nvar RegExpCache_RegExpCache =\n/*#__PURE__*/\nfunction () {\n function RegExpCache(size) {\n RegExpCache_classCallCheck(this, RegExpCache);\n\n this.cache = new LRUCache(size);\n }\n\n RegExpCache_createClass(RegExpCache, [{\n key: \"getPatternForRegExp\",\n value: function getPatternForRegExp(pattern) {\n var regExp = this.cache.get(pattern);\n\n if (!regExp) {\n regExp = new RegExp('^' + pattern);\n this.cache.put(pattern, regExp);\n }\n\n return regExp;\n }\n }]);\n\n return RegExpCache;\n}();\n\n\n//# sourceMappingURL=RegExpCache.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers/Leniency.js\n\n\n\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\n\n/* harmony default export */ var Leniency = ({\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n } // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n\n\n return true;\n },\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped, regExpCache);\n },\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n * <p>\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata, regExpCache) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent, regExpCache);\n }\n});\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n } // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n\n if (metadata == null) {\n return true;\n } // Check if a national prefix should be present when formatting this number.\n\n\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber); // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n } // Normalize the remainder.\n\n\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput()); // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nfunction containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n } // Now look for a second one.\n\n\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n } // If the first slash is after the country calling code, this is permitted.\n\n\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups, regExpCache) {\n var normalizedCandidate = normalizeDigits(candidate, true\n /* keep non-digits */\n );\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n } // If this didn't pass, see if there are any alternate formats that match, and try them instead.\n\n\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n\n if (alternateFormats) {\n for (var _iterator = alternateFormats.numberFormats(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var alternateFormat = _ref;\n\n if (alternateFormat.leadingDigitsPatterns().length > 0) {\n // There is only one leading digits pattern for alternate formats.\n var leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0]);\n\n if (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\n // Leading digits don't match; try another one.\n continue;\n }\n }\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\n\n\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n } // This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\n\n\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata); // We remove the extension part from the formatted string before splitting it into different\n // groups.\n\n var endIndex = rfc3966Format.indexOf(';');\n\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n } // The country-code will have a '-' following it.\n\n\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN); // Set this to the last group, skipping it if the number has an extension.\n\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1; // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n } // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n\n\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n } // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n\n\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n } // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n\n\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n\n if (fromIndex < 0) {\n return false;\n } // Moves {@code fromIndex} forward.\n\n\n fromIndex += formattedNumberGroups[i].length();\n\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n } // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n\n\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n//# sourceMappingURL=Leniency.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/PhoneNumberMatcher.js\nfunction PhoneNumberMatcher_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { PhoneNumberMatcher_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction PhoneNumberMatcher_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction PhoneNumberMatcher_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction PhoneNumberMatcher_createClass(Constructor, protoProps, staticProps) { if (protoProps) PhoneNumberMatcher_defineProperties(Constructor.prototype, protoProps); if (staticProps) PhoneNumberMatcher_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction PhoneNumberMatcher_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\n\n\n\n\n\n\n\n\n\n\n\n\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\n\nvar INNER_MATCHES = [// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/', // Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)', // Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n\"(?:\".concat(pZ, \"-|-\").concat(pZ, \")\").concat(pZ, \"*(.+)\"), // Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n\"[\\u2012-\\u2015\\uFF0D]\".concat(pZ, \"*(.+)\"), // Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n\"\\\\.+\".concat(pZ, \"*([^.]+)\"), // Breaks on space - e.g. \"3324451234 8002341234\"\n\"\".concat(pZ, \"+(\").concat(PZ, \"+)\")]; // Limit on the number of leading (plus) characters.\n\nvar leadLimit = limit(0, 2); // Limit on the number of consecutive punctuation characters.\n\nvar punctuationLimit = limit(0, 4);\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\n\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE; // Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\n\nvar blockLimit = limit(0, digitBlockLimit);\n/* A punctuation sequence allowing white space. */\n\nvar punctuation = \"[\".concat(VALID_PUNCTUATION, \"]\") + punctuationLimit; // A digits block without punctuation.\n\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n * <ul>\r\n * <li>All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n * <ul>\r\n * <li>Leading punctuation / plus signs are limited.\r\n * <li>Consecutive occurrences of punctuation are limited.\r\n * <li>Number of digits is limited.\r\n * </ul>\r\n * <li>No whitespace is allowed at the start or end.\r\n * <li>No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n * </ul>\r\n */\n\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'; // Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\n\nvar UNWANTED_END_CHAR_PATTERN = new RegExp(\"[^\".concat(_pN).concat(_pL, \"#]+$\"));\nvar PhoneNumberMatcher_NON_DIGITS_PATTERN = /(\\D+)/;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n * <p>Vanity numbers (phone numbers using alphabetic digits such as <tt>1-800-SIX-FLAGS</tt> are\r\n * not found.\r\n *\r\n * <p>This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher_PhoneNumberMatcher =\n/*#__PURE__*/\nfunction () {\n /** The iteration tristate. */\n\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\n // that use-case won't have a lot of benefit.\n\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments.length > 2 ? arguments[2] : undefined;\n\n PhoneNumberMatcher_classCallCheck(this, PhoneNumberMatcher);\n\n PhoneNumberMatcher_defineProperty(this, \"state\", 'NOT_READY');\n\n PhoneNumberMatcher_defineProperty(this, \"searchIndex\", 0);\n\n PhoneNumberMatcher_defineProperty(this, \"regExpCache\", new RegExpCache_RegExpCache(32));\n\n options = PhoneNumberMatcher_objectSpread({}, options, {\n defaultCallingCode: options.defaultCallingCode,\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n /** The degree of validation requested. */\n\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError(\"Unknown leniency: \".concat(options.leniency, \".\"));\n }\n /** The maximum number of retries after matching an invalid number. */\n\n\n this.maxTries = options.maxTries;\n this.PATTERN = new RegExp(PATTERN, 'ig');\n }\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n PhoneNumberMatcher_createClass(PhoneNumberMatcher, [{\n key: \"find\",\n value: function find() // (index)\n {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n var matches;\n\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match = // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text) // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber_PhoneNumber(match.country || match.countryCallingCode, match.phone, this.metadata);\n\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n /**\r\n * Attempts to extract a match from `candidate`\r\n * if the whole candidate does not qualify as a match.\r\n */\n\n }, {\n key: \"extractInnerMatch\",\n value: function extractInnerMatch(candidate, offset, text) {\n for (var _i = 0, _INNER_MATCHES = INNER_MATCHES; _i < _INNER_MATCHES.length; _i++) {\n var innerMatchPattern = _INNER_MATCHES[_i];\n var isFirstMatch = true;\n var matches = void 0;\n var possibleInnerMatch = new RegExp(innerMatchPattern, 'g');\n\n while ((matches = possibleInnerMatch.exec(candidate)) !== null && this.maxTries > 0) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidate.slice(0, matches.index));\n\n var _match = this.parseAndVerify(_group, offset, text);\n\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, matches[1]); // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a group match start index,\n // therefore using the overall match start index `matches.index`.\n\n var match = this.parseAndVerify(group, offset + matches.index, text);\n\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: \"parseAndVerify\",\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parse(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry,\n defaultCallingCode: this.options.defaultCallingCode\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata, this.regExpCache)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n phone: number.phone\n };\n\n if (number.country && number.country !== '001') {\n result.country = number.country;\n } else {\n result.countryCallingCode = number.countryCallingCode;\n }\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: \"hasNext\",\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: \"next\",\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n } // Don't retain that memory any longer than necessary.\n\n\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\n\n//# sourceMappingURL=PhoneNumberMatcher.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers_.js\n\nfunction findNumbers(text, options, metadata) {\n var matcher = new PhoneNumberMatcher_PhoneNumberMatcher(text, options, metadata);\n var results = [];\n\n while (matcher.hasNext()) {\n results.push(matcher.next());\n }\n\n return results;\n}\n//# sourceMappingURL=findNumbers_.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findNumbers.js\n\n\nfunction findNumbers_findNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n return findNumbers(text, options, metadata);\n}\n//# sourceMappingURL=findNumbers.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/searchNumbers.js\nfunction searchNumbers_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\n\nfunction searchNumbers() {\n var _normalizeArguments = normalizeArguments(arguments),\n text = _normalizeArguments.text,\n options = _normalizeArguments.options,\n metadata = _normalizeArguments.metadata;\n\n var matcher = new PhoneNumberMatcher_PhoneNumberMatcher(text, options, metadata);\n return searchNumbers_defineProperty({}, Symbol.iterator, function () {\n return {\n next: function next() {\n if (matcher.hasNext()) {\n return {\n done: false,\n value: matcher.next()\n };\n }\n\n return {\n done: true\n };\n }\n };\n });\n}\n//# sourceMappingURL=searchNumbers.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/findPhoneNumbersInText.js\nfunction findPhoneNumbersInText_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { findPhoneNumbersInText_typeof = function _typeof(obj) { return typeof obj; }; } else { findPhoneNumbersInText_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return findPhoneNumbersInText_typeof(obj); }\n\nfunction findPhoneNumbersInText_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { findPhoneNumbersInText_defineProperty(target, key, source[key]); }); } return target; }\n\nfunction findPhoneNumbersInText_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nfunction findPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return findNumbers_findNumbers(text, args.options, args.metadata);\n}\nfunction getArguments(defaultCountry, options, metadata) {\n if (metadata) {\n if (defaultCountry) {\n options = findPhoneNumbersInText_objectSpread({}, options, {\n defaultCountry: defaultCountry\n });\n }\n } else {\n if (options) {\n metadata = options;\n\n if (defaultCountry) {\n if (findPhoneNumbersInText_is_object(defaultCountry)) {\n options = defaultCountry;\n } else {\n options = {\n defaultCountry: defaultCountry\n };\n }\n } else {\n options = undefined;\n }\n } else {\n metadata = defaultCountry;\n options = undefined;\n }\n }\n\n return {\n options: findPhoneNumbersInText_objectSpread({}, options, {\n v2: true\n }),\n metadata: metadata\n };\n} // Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n\n/* istanbul ignore next */\n\nvar findPhoneNumbersInText_is_object = function is_object(_) {\n return findPhoneNumbersInText_typeof(_) === 'object';\n};\n//# sourceMappingURL=findPhoneNumbersInText.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/searchPhoneNumbersInText.js\n\n\nfunction searchPhoneNumbersInText(text, defaultCountry, options, metadata) {\n var args = getArguments(defaultCountry, options, metadata);\n return searchNumbers(text, args.options, args.metadata);\n}\n//# sourceMappingURL=searchPhoneNumbersInText.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/AsYouType.js\nfunction AsYouType_typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { AsYouType_typeof = function _typeof(obj) { return typeof obj; }; } else { AsYouType_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return AsYouType_typeof(obj); }\n\nfunction AsYouType_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction AsYouType_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction AsYouType_createClass(Constructor, protoProps, staticProps) { if (protoProps) AsYouType_defineProperties(Constructor.prototype, protoProps); if (staticProps) AsYouType_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction AsYouType_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// This is an enhanced port of Google Android `libphonenumber`'s\n// `asyoutypeformatter.js` of December 31th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/blob/8d21a365061de2ba0675c878a710a7b24f74d2ae/javascript/i18n/phonenumbers/asyoutypeformatter.js\n//\n// Simplified: does not differentiate between \"local-only\" numbers\n// and \"internationally dialable\" numbers.\n// For example, doesn't include changes like this:\n// https://github.com/googlei18n/libphonenumber/commit/865da605da12b01053c4f053310bac7c5fbb7935\n\n\n\n\n\n\n\n\n // Used in phone number format template creation.\n// Could be any digit, I guess.\n\nvar DUMMY_DIGIT = '9'; // I don't know why is it exactly `15`\n\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15; // Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\n\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH); // The digits that have not been entered yet will be represented by a \\u2008,\n// the punctuation space.\n\nvar DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\n\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER); // A set of characters that, if found in a national prefix formatting rules, are an indicator to\n// us that we should separate the national prefix from the number when formatting.\n\nvar NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/; // Deprecated: Google has removed some formatting pattern related code from their repo.\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\n// Because this library supports generating custom metadata\n// some users may still be using old metadata so the relevant\n// code seems to stay until some next major version update.\n\nvar SUPPORT_LEGACY_FORMATTING_PATTERNS = true; // A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\n\nvar CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\[([^\\[\\]])*\\]/g;\n}; // Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\n\n\nvar CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && function () {\n return /\\d(?=[^,}][^,}])/g;\n}; // A pattern that is used to determine if a `format` is eligible\n// to be used by the \"as you type formatter\".\n// It is eligible when the `format` contains groups of the dollar sign\n// followed by a single digit, separated by valid phone number punctuation.\n// This prevents invalid punctuation (such as the star sign in Israeli star numbers)\n// getting into the output of the \"as you type formatter\".\n\n\nvar ELIGIBLE_FORMAT_PATTERN = new RegExp('^' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)+' + '$'); // This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\n\nvar MIN_LEADING_DIGITS_LENGTH = 3;\nvar VALID_FORMATTED_PHONE_NUMBER_PART = '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+';\nvar VALID_FORMATTED_PHONE_NUMBER_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_PART + '$', 'i');\nvar AsYouType_VALID_PHONE_NUMBER = '(?:' + '[' + PLUS_CHARS + ']' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*' + '|' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + ')';\nvar AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp('[^' + VALID_PUNCTUATION + VALID_DIGITS + ']+' + '.*' + '$');\nvar AsYouType_USE_NON_GEOGRAPHIC_COUNTRY_CODE = false;\n\nvar AsYouType_AsYouType =\n/*#__PURE__*/\nfunction () {\n // Not setting `options` to a constructor argument\n // not to break backwards compatibility\n // for older versions of the library.\n\n /**\r\n * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n * @param {Object} metadata\r\n */\n function AsYouType(optionsOrDefaultCountry, metadata) {\n AsYouType_classCallCheck(this, AsYouType);\n\n AsYouType_defineProperty(this, \"options\", {});\n\n this.metadata = new Metadata(metadata); // Set `defaultCountry` and `defaultCallingCode` options.\n\n var defaultCountry;\n var defaultCallingCode; // Turns out `null` also has type \"object\". Weird.\n\n if (optionsOrDefaultCountry) {\n if (AsYouType_typeof(optionsOrDefaultCountry) === 'object') {\n defaultCountry = optionsOrDefaultCountry.defaultCountry;\n defaultCallingCode = optionsOrDefaultCountry.defaultCallingCode;\n } else {\n defaultCountry = optionsOrDefaultCountry;\n }\n }\n\n if (defaultCountry && this.metadata.hasCountry(defaultCountry)) {\n this.defaultCountry = defaultCountry;\n }\n\n if (defaultCallingCode) {\n /* istanbul ignore if */\n if (AsYouType_USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\n this.defaultCountry = '001';\n }\n }\n\n this.defaultCallingCode = defaultCallingCode;\n } // Reset.\n\n\n this.reset();\n }\n\n AsYouType_createClass(AsYouType, [{\n key: \"reset\",\n value: function reset() {\n this.formattedOutput = '';\n this.international = false;\n this.internationalPrefix = undefined;\n this.countryCallingCode = undefined;\n this.digits = '';\n this.nationalNumberDigits = '';\n this.nationalPrefix = '';\n this.carrierCode = '';\n this.setCountry(this.defaultCountry, this.defaultCallingCode);\n return this;\n }\n }, {\n key: \"resetFormat\",\n value: function resetFormat() {\n this.chosenFormat = undefined;\n this.template = undefined;\n this.populatedNationalNumberTemplate = undefined;\n this.populatedNationalNumberTemplatePosition = -1;\n }\n /**\r\n * Returns `true` if the phone number is being input in international format.\r\n * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isInternational\",\n value: function isInternational() {\n return this.international;\n }\n /**\r\n * Returns the \"country calling code\" part of the phone number.\r\n * Returns `undefined` if the number is not being input in international format.\r\n * Returns \"country calling code\" for \"non-geographic\" phone numbering plans too.\r\n * @return {string} [countryCallingCode]\r\n */\n\n }, {\n key: \"getCountryCallingCode\",\n value: function getCountryCallingCode() {\n return this.countryCallingCode;\n }\n /**\r\n * Returns a two-letter country code of the phone number.\r\n * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n * Returns `undefined` if no phone number has been input yet.\r\n * @return {string} [country]\r\n */\n\n }, {\n key: \"getCountry\",\n value: function getCountry() {\n // If no digits have been input yet,\n // then `this.country` is the `defaultCountry`.\n // Won't return the `defaultCountry` in such case.\n if (!this.digits) {\n return;\n }\n\n var countryCode = this.country;\n /* istanbul ignore if */\n\n if (AsYouType_USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\n if (this.country === '001') {\n countryCode = undefined;\n }\n }\n\n return countryCode;\n }\n }, {\n key: \"setCountry\",\n value: function setCountry(country, callingCode) {\n this.country = country;\n this.metadata.selectNumberingPlan(country, callingCode);\n\n if (this.metadata.hasSelectedNumberingPlan()) {\n this.initializePhoneNumberFormatsForCountry();\n } else {\n this.matchingFormats = [];\n }\n\n this.resetFormat();\n }\n /**\r\n * Inputs \"next\" phone number characters.\r\n * @param {string} text\r\n * @return {string} Formatted phone number characters that have been input so far.\r\n */\n\n }, {\n key: \"input\",\n value: function input(text) {\n var formattedDigits = this.extractFormattedDigits(text); // If the extracted phone number part\n // can possibly be a part of some valid phone number\n // then parse phone number characters from a formatted phone number.\n\n if (VALID_FORMATTED_PHONE_NUMBER_PART_PATTERN.test(formattedDigits)) {\n this.formattedOutput = this.getFullNumber(this.inputDigits(parseDigits(formattedDigits)) || this.getNonFormattedNationalNumber());\n }\n\n return this.formattedOutput;\n }\n /**\r\n * Extracts formatted phone number digits from text (if there're any).\r\n * @param {string} text\r\n * @return {string}\r\n */\n\n }, {\n key: \"extractFormattedDigits\",\n value: function extractFormattedDigits(text) {\n // Extract a formatted phone number part from text.\n var extractedNumber = AsYouType_extractFormattedPhoneNumber(text) || ''; // Trim a `+`.\n\n if (extractedNumber[0] === '+') {\n // Trim the `+`.\n extractedNumber = extractedNumber.slice('+'.length);\n\n if (this.digits) {// If an out of position `+` is detected\n // (or a second `+`) then just ignore it.\n } else {\n this.formattedOutput = '+';\n this.startInternationalNumber();\n }\n }\n\n return extractedNumber;\n }\n }, {\n key: \"startInternationalNumber\",\n value: function startInternationalNumber() {\n // Prepend the `+` to parsed input.\n this.international = true; // If a default country was set then reset it\n // because an explicitly international phone\n // number is being entered.\n\n this.setCountry();\n }\n /**\r\n * Inputs \"next\" phone number digits.\r\n * @param {string} digits\r\n * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n */\n\n }, {\n key: \"inputDigits\",\n value: function inputDigits(nextDigits) {\n // Some users input their phone number in \"out-of-country\"\n // dialing format instead of using the leading `+`.\n // https://github.com/catamphetamine/libphonenumber-js/issues/185\n // Detect such numbers.\n if (!this.digits) {\n var numberWithoutIDD = stripIDDPrefix(nextDigits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata);\n\n if (numberWithoutIDD && numberWithoutIDD !== nextDigits) {\n // If an IDD prefix was stripped then\n // convert the number to international one\n // for subsequent parsing.\n this.internationalPrefix = nextDigits.slice(0, nextDigits.length - numberWithoutIDD.length);\n nextDigits = numberWithoutIDD;\n this.startInternationalNumber();\n }\n } // Append phone number digits.\n\n\n this.digits += nextDigits; // Try to format the parsed input\n\n if (this.isInternational()) {\n if (this.countryCallingCode) {\n this.nationalNumberDigits += nextDigits; // `this.country` could be `undefined`, for example, when there is\n // ambiguity in a form of several different countries,\n // each corresponding to the same country phone code\n // (e.g. NANPA: USA, Canada, etc), and there's not enough digits\n // to reliably determine the country the phone number belongs to.\n // Therefore, in cases of such ambiguity, each time something is input,\n // try to determine the country (if it hasn't been determined yet).\n\n if (!this.country || this.isCountryCallingCodeAmbiguous()) {\n this.determineTheCountry();\n }\n } else {\n // Extract country calling code from the digits entered so far.\n // There must be some digits in order to extract anything from them.\n //\n // If one looks at country phone codes\n // then they can notice that no one country phone code\n // is ever a (leftmost) substring of another country phone code.\n // So if a valid country code is extracted so far\n // then it means that this is the country code.\n //\n // If no country phone code could be extracted so far,\n // then don't format the phone number.\n //\n if (!this.extractCountryCallingCode()) {\n // Don't format the phone number.\n return;\n } // Possibly extract a national prefix.\n // Some people incorrectly input national prefix\n // in an international phone number.\n // For example, some people write British phone numbers as `+44(0)...`.\n // Also, mobile phone numbers in Mexico are supposed to be dialled\n // internationally using a `15` national prefix.\n //\n // https://www.mexperience.com/dialing-cell-phones-in-mexico/\n //\n // \"Dialing a Mexican cell phone from abroad\n // When you are calling a cell phone number in Mexico from outside Mexico,\n // it’s necessary to dial an additional “1” after Mexico’s country code\n // (which is “52”) and before the area code.\n // You also ignore the 045, and simply dial the area code and the\n // cell phone’s number.\n //\n // If you don’t add the “1”, you’ll receive a recorded announcement\n // asking you to redial using it.\n //\n // For example, if you are calling from the USA to a cell phone\n // in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\n // (Note that this is different to calling a land line in Mexico City\n // from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\n //\n\n\n this.nationalNumberDigits = this.digits.slice(this.countryCallingCode.length); // this.extractNationalPrefix()\n //\n // Determine the country from country calling code and national number.\n\n this.determineTheCountry();\n }\n } else {\n this.nationalNumberDigits += nextDigits; // If `defaultCallingCode` is set,\n // see if the `country` could be derived.\n\n if (!this.country) {\n this.determineTheCountry();\n } // Some national prefixes are substrings of other national prefixes\n // (for the same country), therefore try to extract national prefix each time\n // because a longer national prefix might be available at some point in time.\n\n\n var previousNationalPrefix = this.nationalPrefix;\n this.nationalNumberDigits = this.nationalPrefix + this.nationalNumberDigits; // Re-extract national prefix.\n\n this.extractNationalPrefix(); // If another national prefix has been extracted.\n\n if (this.nationalPrefix !== previousNationalPrefix) {\n // National number has changed\n // (due to another national prefix been extracted)\n // therefore national number has changed\n // therefore reset all previous formatting data.\n // (and leading digits matching state)\n this.initializePhoneNumberFormatsForCountry();\n this.resetFormat();\n }\n }\n\n if (this.nationalNumberDigits) {\n // Match the available formats by the currently available leading digits.\n this.matchFormats(this.nationalNumberDigits);\n } // Format the phone number (given the next digits)\n\n\n return this.formatNationalNumberWithNextDigits(nextDigits);\n }\n }, {\n key: \"formatNationalNumberWithNextDigits\",\n value: function formatNationalNumberWithNextDigits(nextDigits) {\n // See if the phone number digits can be formatted as a complete phone number.\n // If not, use the results from `formatNextNationalNumberDigits()`,\n // which formats based on the chosen formatting pattern.\n // Attempting to format complete phone number first is how it's done\n // in Google's `libphonenumber`.\n var formattedNumber = this.attemptToFormatCompletePhoneNumber(); // Just because a phone number doesn't have a suitable format\n // that doesn't mean that the phone number is invalid,\n // because phone number formats only format phone numbers,\n // they don't validate them and some (rare) phone numbers\n // are meant to stay non-formatted.\n\n if (formattedNumber) {\n return formattedNumber;\n } // Format the next phone number digits\n // using the previously chosen phone number format.\n //\n // This is done here because if `attemptToFormatCompletePhoneNumber`\n // was placed before this call then the `template`\n // wouldn't reflect the situation correctly (and would therefore be inconsistent)\n //\n\n\n var previouslyChosenFormat = this.chosenFormat; // Choose a format from the list of matching ones.\n\n var newlyChosenFormat = this.chooseFormat();\n\n if (newlyChosenFormat) {\n if (newlyChosenFormat === previouslyChosenFormat) {\n // If could format the next (current) digit\n // using the previously chosen phone number format\n // then return the formatted number so far.\n //\n // If no new phone number format could be chosen,\n // and couldn't format the supplied national number\n // using the previously chosen phone number pattern,\n // then return `undefined`.\n //\n return this.formatNextNationalNumberDigits(nextDigits);\n } else {\n // If a more appropriate phone number format\n // has been chosen for these \"leading digits\",\n // then format the national phone number (so far)\n // using the newly selected format.\n //\n // Will return `undefined` if it couldn't format\n // the supplied national number\n // using the selected phone number pattern.\n //\n return this.reformatNationalNumber();\n }\n }\n }\n }, {\n key: \"chooseFormat\",\n value: function chooseFormat() {\n // When there are multiple available formats, the formatter uses the first\n // format where a formatting template could be created.\n for (var _iterator = this.matchingFormats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var format = _ref;\n\n // If this format is currently being used\n // and is still possible, then stick to it.\n if (this.chosenFormat === format) {\n break;\n }\n\n if (!this.createFormattingTemplate(format)) {\n continue;\n }\n\n this.chosenFormat = format; // With a new formatting template, the matched position\n // using the old template needs to be reset.\n\n this.populatedNationalNumberTemplatePosition = -1;\n break;\n }\n\n if (!this.chosenFormat) {\n // No format matches the national phone number entered.\n this.resetFormat();\n }\n\n return this.chosenFormat;\n } // Formats each digit of the national phone number (so far)\n // using the selected format.\n\n }, {\n key: \"reformatNationalNumber\",\n value: function reformatNationalNumber() {\n return this.formatNextNationalNumberDigits(this.nationalPrefix + this.nationalNumberDigits);\n }\n }, {\n key: \"initializePhoneNumberFormatsForCountry\",\n value: function initializePhoneNumberFormatsForCountry() {\n // Get all \"eligible\" phone number formats for this country\n this.matchingFormats = this.metadata.formats().filter(function (format) {\n // Compared to `libphonenumber`'s code, the two \"Discard a few formats\n // that we know are not relevant based on the presence of the national prefix\"\n // checks have changed: the first one has been moved to `.matchFormats()`,\n // and the second one doesn't apply to this library because it doesn't deal with\n // \"incomplete\" phone numbers (for example, phone numbers, entered without \"area code\").\n return ELIGIBLE_FORMAT_PATTERN.test(format.internationalFormat());\n });\n }\n }, {\n key: \"matchFormats\",\n value: function matchFormats(leadingDigits) {\n var _this = this;\n\n // \"leading digits\" pattern list starts with a\n // \"leading digits\" pattern fitting a maximum of 3 leading digits.\n // So, after a user inputs 3 digits of a national (significant) phone number\n // this national (significant) number can already be formatted.\n // The next \"leading digits\" pattern is for 4 leading digits max,\n // and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n // This implementation is different from Google's\n // in that it searches for a fitting format\n // even if the user has entered less than\n // `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n // Because some leading digit patterns already match for a single first digit.\n var leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH;\n\n if (leadingDigitsPatternIndex < 0) {\n leadingDigitsPatternIndex = 0;\n }\n\n this.matchingFormats = this.matchingFormats.filter(function (format) {\n // If national prefix is mandatory for this phone number format\n // and the user didn't input the national prefix\n // then this phone number format isn't suitable.\n if (!_this.isInternational() && !_this.nationalPrefix && format.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\n return false;\n }\n\n var leadingDigitsPatternsCount = format.leadingDigitsPatterns().length; // If this format is not restricted to a certain\n // leading digits pattern then it fits.\n\n if (leadingDigitsPatternsCount === 0) {\n return true;\n } // Start excluding any non-matching formats only when the\n // national number entered so far is at least 3 digits long,\n // otherwise format matching would give false negatives.\n // For example, when the digits entered so far are `2`\n // and the leading digits pattern is `21` –\n // it's quite obvious in this case that the format could be the one\n // but due to the absence of further digits it would give false negative.\n\n\n if (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\n return true;\n } // If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are available\n // then format matching starts narrowing down the list of possible formats\n // (only previously matched formats are considered for next digits).\n\n\n leadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1);\n var leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]; // Brackets are required for `^` to be applied to\n // all or-ed (`|`) parts, not just the first one.\n\n return new RegExp(\"^(\".concat(leadingDigitsPattern, \")\")).test(leadingDigits);\n }); // If there was a phone number format chosen\n // and it no longer holds given the new leading digits then reset it.\n // The test for this `if` condition is marked as:\n // \"Reset a chosen format when it no longer holds given the new leading digits\".\n // To construct a valid test case for this one can find a country\n // in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\n // and yielding another format for 4 `<leadingDigits>` (Australia in this case).\n\n if (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\n this.resetFormat();\n }\n }\n }, {\n key: \"getSeparatorAfterNationalPrefix\",\n value: function getSeparatorAfterNationalPrefix(format) {\n if (this.metadata.countryCallingCode() === '1') {\n return ' ';\n }\n\n if (format && format.nationalPrefixFormattingRule() && NATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\n return ' ';\n }\n\n return '';\n } // This is in accordance to how Google's `libphonenumber` does it.\n // \"Check to see if there is an exact pattern match for these digits.\n // If so, we should use this instead of any other formatting template\n // whose `leadingDigitsPattern` also matches the input.\"\n\n }, {\n key: \"attemptToFormatCompletePhoneNumber\",\n value: function attemptToFormatCompletePhoneNumber() {\n for (var _iterator2 = this.matchingFormats, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var format = _ref2;\n var matcher = new RegExp(\"^(?:\".concat(format.pattern(), \")$\"));\n\n if (!matcher.test(this.nationalNumberDigits)) {\n continue;\n } // Here, national number is formatted without \"national prefix\n // formatting rule\", because otherwise there'd be a bug\n // when \"area code\" is \"duplicated\" during input:\n // https://github.com/catamphetamine/libphonenumber-js/issues/318\n\n\n var formattedNationalNumber = formatNationalNumberUsingFormat(this.nationalNumberDigits, format, this.isInternational(), false, // Don't prepend national prefix (it will be prepended manually).\n this.metadata); // Check if this `format` preserves all digits.\n // This is how it's done in Google's `libphonenumber`.\n // Also, it fixes the bug when \"area code\" is \"duplicated\" during input:\n // https://github.com/catamphetamine/libphonenumber-js/issues/318\n //\n // \"Check that we didn't remove nor add any extra digits when we matched\n // this formatting pattern. This usually happens after we entered the last\n // digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\n // formatted but AYTF should retain all the number entered and not change\n // in order to match a format (of same leading digits and length) display\n // in that way.\"\n // \"If it's the same (i.e entered number and format is same), then it's\n // safe to return this in formatted number as nothing is lost / added.\"\n // Otherwise, don't use this format.\n // https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\n // https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\n //\n\n if (parseDigits(formattedNationalNumber) !== this.nationalNumberDigits) {\n continue;\n } // Prepend national prefix (if any).\n\n\n if (this.nationalPrefix) {\n // Here, national number is formatted with \"national prefix\n // formatting rule\". The reason is that \"national prefix\n // formatting rule\" often adds parentheses, and while Google's\n // `libphonenumber` dismisses those preferring simply prepending\n // national prefix followed by a \" \" character, this library\n // looks if the national prefix could be formatted better.\n var formattedNationalNumberWithNationalPrefix = formatNationalNumberUsingFormat(this.nationalNumberDigits, format, this.isInternational(), true, // Prepend national prefix.\n this.metadata);\n\n if (parseDigits(formattedNationalNumberWithNationalPrefix) === this.nationalPrefix + this.nationalNumberDigits) {\n formattedNationalNumber = formattedNationalNumberWithNationalPrefix;\n } else {\n formattedNationalNumber = this.nationalPrefix + this.getSeparatorAfterNationalPrefix(format) + formattedNationalNumber;\n }\n } // formats national number (probably) without national prefix.\n // Formatting a national number with national prefix could result in\n // bugs when \"area code\" is \"duplicated\" during input:\n // https://github.com/catamphetamine/libphonenumber-js/issues/318\n // The \"are all digits preserved\" check fixes that type of bug.\n // To leave the formatter in a consistent state\n\n\n this.resetFormat();\n this.chosenFormat = format; // Set `this.template` and `this.populatedNationalNumberTemplate`.\n\n /* istanbul ignore else */\n\n if (this.createFormattingTemplate(format)) {\n // Populate `this.populatedNationalNumberTemplate` with phone number digits.\n this.reformatNationalNumber();\n } else {\n // If the formatting template couldn't be created for a format,\n // create it manually from the formatted phone number.\n // This case doesn't ever happen with the current metadata.\n this.template = this.getFullNumber(formattedNationalNumber).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER);\n this.populatedNationalNumberTemplate = formattedNationalNumber;\n this.populatedNationalNumberTemplatePosition = this.populatedNationalNumberTemplate.length - 1;\n }\n\n return formattedNationalNumber;\n }\n }\n }, {\n key: \"getInternationalPrefix\",\n value: function getInternationalPrefix(options) {\n return this.internationalPrefix ? options && options.spacing === false ? this.internationalPrefix : this.internationalPrefix + ' ' : '+';\n } // Prepends `+CountryCode ` in case of an international phone number\n\n }, {\n key: \"getFullNumber\",\n value: function getFullNumber(formattedNationalNumber) {\n if (this.isInternational()) {\n var prefix = this.getInternationalPrefix();\n\n if (!this.countryCallingCode) {\n return \"\".concat(prefix).concat(this.digits);\n }\n\n if (!formattedNationalNumber) {\n return \"\".concat(prefix).concat(this.countryCallingCode);\n }\n\n return \"\".concat(prefix).concat(this.countryCallingCode, \" \").concat(formattedNationalNumber);\n }\n\n return formattedNationalNumber;\n }\n }, {\n key: \"getNonFormattedNationalNumber\",\n value: function getNonFormattedNationalNumber() {\n return this.nationalPrefix + (this.nationalPrefix && this.nationalNumberDigits && this.getSeparatorAfterNationalPrefix()) + this.nationalNumberDigits;\n } // Extracts the country calling code from the beginning\n // of the entered `national_number` (so far),\n // and places the remaining input into the `national_number`.\n\n }, {\n key: \"extractCountryCallingCode\",\n value: function extractCountryCallingCode() {\n var _extractCountryCallin = parse_extractCountryCallingCode('+' + this.digits, this.defaultCountry, this.defaultCallingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin.countryCallingCode,\n number = _extractCountryCallin.number;\n\n if (!countryCallingCode) {\n return;\n }\n\n this.nationalNumberDigits = number;\n this.countryCallingCode = countryCallingCode;\n this.metadata.chooseCountryByCountryCallingCode(countryCallingCode);\n this.initializePhoneNumberFormatsForCountry();\n this.resetFormat();\n return this.metadata.hasSelectedNumberingPlan();\n }\n }, {\n key: \"extractNationalPrefix\",\n value: function extractNationalPrefix() {\n this.nationalPrefix = '';\n\n if (!this.metadata.hasSelectedNumberingPlan()) {\n return;\n } // Only strip national prefixes for non-international phone numbers\n // because national prefixes can't be present in international phone numbers.\n // While `parseNumber()` is forgiving is such cases, `AsYouType` is not.\n\n\n var _stripNationalPrefixA = stripNationalPrefixAndCarrierCode(this.nationalNumberDigits, this.metadata),\n nationalNumber = _stripNationalPrefixA.nationalNumber,\n carrierCode = _stripNationalPrefixA.carrierCode; // Sometimes `stripNationalPrefixAndCarrierCode()` won't actually\n // strip national prefix and will instead prepend some digits to the `number`:\n // for example, when number `2345678` is passed with `VI` country selected,\n // it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\n // So check if the `nationalNumber` is actually at the end of `this.nationalNumberDigits`.\n\n\n if (nationalNumber) {\n var index = this.nationalNumberDigits.indexOf(nationalNumber);\n\n if (index < 0 || index !== this.nationalNumberDigits.length - nationalNumber.length) {\n return;\n }\n }\n\n if (carrierCode) {\n this.carrierCode = carrierCode;\n }\n\n this.nationalPrefix = this.nationalNumberDigits.slice(0, this.nationalNumberDigits.length - nationalNumber.length);\n this.nationalNumberDigits = nationalNumber;\n return this.nationalPrefix;\n } // isPossibleNumber(number) {\n // \tswitch (checkNumberLengthForType(number, undefined, this.metadata)) {\n // \t\tcase 'IS_POSSIBLE':\n // \t\t\treturn true\n // \t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n // \t\t// \treturn !this.isInternational()\n // \t\tdefault:\n // \t\t\treturn false\n // \t}\n // }\n\n }, {\n key: \"isCountryCallingCodeAmbiguous\",\n value: function isCountryCallingCodeAmbiguous() {\n var countryCodes = this.metadata.getCountryCodesForCallingCode(this.countryCallingCode);\n return countryCodes && countryCodes.length > 1;\n }\n }, {\n key: \"createFormattingTemplate\",\n value: function createFormattingTemplate(format) {\n // The formatter doesn't format numbers when numberPattern contains '|', e.g.\n // (20|3)\\d{4}. In those cases we quickly return.\n // (Though there's no such format in current metadata)\n\n /* istanbul ignore if */\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\n return;\n } // Get formatting template for this phone number format\n\n\n var template = this.getTemplateForNumberFormatPattern(format, this.nationalPrefix); // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (!template) {\n return;\n }\n\n this.template = template;\n this.populatedNationalNumberTemplate = template; // For convenience, the public `.template` property\n // contains the whole international number\n // if the phone number being input is international:\n // 'x' for the '+' sign, 'x'es for the country phone code,\n // a spacebar and then the template for the formatted national number.\n\n if (this.isInternational()) {\n this.template = this.getInternationalPrefix().replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) + repeat(DIGIT_PLACEHOLDER, this.countryCallingCode.length) + ' ' + template;\n }\n\n return this.template;\n }\n /**\r\n * Generates formatting template for a national phone number,\r\n * optionally containing a national prefix, for a format.\r\n * @param {Format} format\r\n * @param {string} nationalPrefix\r\n * @return {string}\r\n */\n\n }, {\n key: \"getTemplateForNumberFormatPattern\",\n value: function getTemplateForNumberFormatPattern(format, nationalPrefix) {\n var pattern = format.pattern();\n /* istanbul ignore else */\n\n if (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\n pattern = pattern // Replace anything in the form of [..] with \\d\n .replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d') // Replace any standalone digit (not the one in `{}`) with \\d\n .replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n } // Generate a dummy national number (consisting of `9`s)\n // that fits this format's `pattern`.\n //\n // This match will always succeed,\n // because the \"longest dummy phone number\"\n // has enough length to accomodate any possible\n // national phone number format pattern.\n //\n\n\n var digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]; // If the national number entered is too long\n // for any phone number format, then abort.\n\n if (this.nationalNumberDigits.length > digits.length) {\n return;\n } // Get a formatting template which can be used to efficiently format\n // a partial number where digits are added one by one.\n // Below `strictPattern` is used for the\n // regular expression (with `^` and `$`).\n // This wasn't originally in Google's `libphonenumber`\n // and I guess they don't really need it\n // because they're not using \"templates\" to format phone numbers\n // but I added `strictPattern` after encountering\n // South Korean phone number formatting bug.\n //\n // Non-strict regular expression bug demonstration:\n //\n // this.nationalNumberDigits : `111111111` (9 digits)\n //\n // pattern : (\\d{2})(\\d{3,4})(\\d{4})\n // format : `$1 $2 $3`\n // digits : `9999999999` (10 digits)\n //\n // '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n //\n // template : xx xxxx xxxx\n //\n // But the correct template in this case is `xx xxx xxxx`.\n // The template was generated incorrectly because of the\n // `{3,4}` variability in the `pattern`.\n //\n // The fix is, if `this.nationalNumberDigits` has already sufficient length\n // to satisfy the `pattern` completely then `this.nationalNumberDigits`\n // is used instead of `digits`.\n\n\n var strictPattern = new RegExp('^' + pattern + '$');\n var nationalNumberDummyDigits = this.nationalNumberDigits.replace(/\\d/g, DUMMY_DIGIT); // If `this.nationalNumberDigits` has already sufficient length\n // to satisfy the `pattern` completely then use it\n // instead of `digits`.\n\n if (strictPattern.test(nationalNumberDummyDigits)) {\n digits = nationalNumberDummyDigits;\n }\n\n var numberFormat = this.getFormatFormat(format);\n var includesNationalPrefix;\n\n if (nationalPrefix) {\n if (format.nationalPrefixFormattingRule()) {\n var numberFormatWithNationalPrefix = numberFormat.replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule());\n\n if (parseDigits(numberFormatWithNationalPrefix) === nationalPrefix + parseDigits(numberFormat)) {\n numberFormat = numberFormatWithNationalPrefix;\n includesNationalPrefix = true;\n var i = nationalPrefix.length;\n\n while (i > 0) {\n numberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER);\n i--;\n }\n }\n }\n } // Generate formatting template for this phone number format.\n\n\n var template = digits // Format the dummy phone number according to the format.\n .replace(new RegExp(pattern), numberFormat) // Replace each dummy digit with a DIGIT_PLACEHOLDER.\n .replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER);\n\n if (nationalPrefix) {\n if (!includesNationalPrefix) {\n // Prepend national prefix to the template manually.\n template = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) + this.getSeparatorAfterNationalPrefix(format) + template;\n }\n }\n\n return template;\n }\n }, {\n key: \"formatNextNationalNumberDigits\",\n value: function formatNextNationalNumberDigits(digits) {\n // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for `digits` it is safe.\n // for (const digit of digits)\n for (var _iterator3 = digits.split(''), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var digit = _ref3;\n\n // If there is room for more digits in current `template`,\n // then set the next digit in the `template`,\n // and return the formatted digits so far.\n // If more digits are entered than the current format could handle.\n if (this.populatedNationalNumberTemplate.slice(this.populatedNationalNumberTemplatePosition + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\n // Reset the format.\n this.resetFormat();\n return;\n }\n\n this.populatedNationalNumberTemplatePosition = this.populatedNationalNumberTemplate.search(DIGIT_PLACEHOLDER_MATCHER);\n this.populatedNationalNumberTemplate = this.populatedNationalNumberTemplate.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n } // Return the formatted phone number so far.\n\n\n return cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1); // The old way which was good for `input-format` but is not so good\n // for `react-phone-number-input`'s default input (`InputBasic`).\n // return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\n // \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\n }\n }, {\n key: \"getFormatFormat\",\n value: function getFormatFormat(format) {\n if (this.isInternational()) {\n return applyInternationalSeparatorStyle(format.internationalFormat());\n }\n\n return format.format();\n } // Determines the country of the phone number\n // entered so far based on the country phone code\n // and the national phone number.\n\n }, {\n key: \"determineTheCountry\",\n value: function determineTheCountry() {\n this.country = findCountryCode(this.isInternational() ? this.countryCallingCode : this.defaultCallingCode, this.nationalNumberDigits, this.metadata);\n }\n /**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n }, {\n key: \"getNumber\",\n value: function getNumber() {\n if (this.isInternational()) {\n if (!this.countryCallingCode) {\n return;\n }\n } else {\n if (!this.country && !this.defaultCallingCode) {\n return;\n }\n }\n\n if (!this.nationalNumberDigits) {\n return undefined;\n }\n\n var countryCode = this.getCountry();\n var callingCode = this.getCountryCallingCode() || this.defaultCallingCode;\n var nationalNumber = this.nationalNumberDigits;\n var carrierCode = this.carrierCode; // When an international number without a leading `+` has been autocorrected,\n // extract country calling code, because normally it's only extracted\n // for international numbers with a leading `+`.\n // Could also just use `parsePhoneNumberFromString()` here\n // instead of hacking around this single case.\n\n if (!this.isInternational() && this.nationalNumberDigits === this.digits) {\n var _extractCountryCallin2 = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(this.digits, countryCode, callingCode, this.metadata.metadata),\n countryCallingCode = _extractCountryCallin2.countryCallingCode,\n number = _extractCountryCallin2.number;\n\n if (countryCallingCode) {\n var _stripNationalPrefixA2 = stripNationalPrefixAndCarrierCodeFromCompleteNumber(number, this.metadata),\n shorterNationalNumber = _stripNationalPrefixA2.nationalNumber,\n newCarrierCode = _stripNationalPrefixA2.carrierCode;\n\n nationalNumber = shorterNationalNumber;\n carrierCode = newCarrierCode;\n }\n }\n\n var phoneNumber = new PhoneNumber_PhoneNumber(countryCode || callingCode, nationalNumber, this.metadata.metadata);\n\n if (carrierCode) {\n phoneNumber.carrierCode = carrierCode;\n } // Phone number extensions are not supported by \"As You Type\" formatter.\n\n\n return phoneNumber;\n }\n /**\r\n * Returns `true` if the phone number is \"possible\".\r\n * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isPossible\",\n value: function isPossible() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isPossible();\n }\n /**\r\n * Returns `true` if the phone number is \"valid\".\r\n * Is just a shortcut for `PhoneNumber.isValid()`.\r\n * @return {boolean}\r\n */\n\n }, {\n key: \"isValid\",\n value: function isValid() {\n var phoneNumber = this.getNumber();\n\n if (!phoneNumber) {\n return false;\n }\n\n return phoneNumber.isValid();\n }\n /**\r\n * @deprecated\r\n * This method is used in `react-phone-number-input/source/input-control.js`\r\n * in versions before `3.0.16`.\r\n */\n\n }, {\n key: \"getNationalNumber\",\n value: function getNationalNumber() {\n return this.nationalNumberDigits;\n }\n }, {\n key: \"getNonFormattedTemplate\",\n value: function getNonFormattedTemplate() {\n return this.getFullNumber(this.getNonFormattedNationalNumber()).replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER);\n }\n /**\r\n * Returns formatted phone number template.\r\n * @return {string} [template]\r\n */\n\n }, {\n key: \"getTemplate\",\n value: function getTemplate() {\n if (!this.template) {\n return this.getNonFormattedTemplate();\n }\n\n var index = -1;\n var i = 0;\n\n while (i < (this.isInternational() ? this.getInternationalPrefix({\n spacing: false\n }).length : 0) + this.digits.length) {\n index = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n i++;\n }\n\n return cutAndStripNonPairedParens(this.template, index + 1);\n }\n }]);\n\n return AsYouType;\n}();\n\n\nfunction stripNonPairedParens(string) {\n var dangling_braces = [];\n var i = 0;\n\n while (i < string.length) {\n if (string[i] === '(') {\n dangling_braces.push(i);\n } else if (string[i] === ')') {\n dangling_braces.pop();\n }\n\n i++;\n }\n\n var start = 0;\n var cleared_string = '';\n dangling_braces.push(string.length);\n\n for (var _i4 = 0, _dangling_braces = dangling_braces; _i4 < _dangling_braces.length; _i4++) {\n var index = _dangling_braces[_i4];\n cleared_string += string.slice(start, index);\n start = index + 1;\n }\n\n return cleared_string;\n}\nfunction cutAndStripNonPairedParens(string, cutBeforeIndex) {\n if (string[cutBeforeIndex] === ')') {\n cutBeforeIndex++;\n }\n\n return stripNonPairedParens(string.slice(0, cutBeforeIndex));\n}\nfunction closeNonPairedParens(template, cut_before) {\n var retained_template = template.slice(0, cut_before);\n var opening_braces = countOccurences('(', retained_template);\n var closing_braces = countOccurences(')', retained_template);\n var dangling_braces = opening_braces - closing_braces;\n\n while (dangling_braces > 0 && cut_before < template.length) {\n if (template[cut_before] === ')') {\n dangling_braces--;\n }\n\n cut_before++;\n }\n\n return template.slice(0, cut_before);\n} // Counts all occurences of a symbol in a string.\n// Unicode-unsafe (because using `.split()`).\n\nfunction countOccurences(symbol, string) {\n var count = 0; // Using `.split('')` to iterate through a string here\n // to avoid requiring `Symbol.iterator` polyfill.\n // `.split('')` is generally not safe for Unicode,\n // but in this particular case for counting brackets it is safe.\n // for (const character of string)\n\n for (var _iterator4 = string.split(''), _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i5 >= _iterator4.length) break;\n _ref4 = _iterator4[_i5++];\n } else {\n _i5 = _iterator4.next();\n if (_i5.done) break;\n _ref4 = _i5.value;\n }\n\n var character = _ref4;\n\n if (character === symbol) {\n count++;\n }\n }\n\n return count;\n} // Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\n\nfunction repeat(string, times) {\n if (times < 1) {\n return '';\n }\n\n var result = '';\n\n while (times > 1) {\n if (times & 1) {\n result += string;\n }\n\n times >>= 1;\n string += string;\n }\n\n return result + string;\n}\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\n\nfunction AsYouType_extractFormattedPhoneNumber(text) {\n // Attempt to extract a possible number from the string passed in.\n var startsAt = text.search(AsYouType_VALID_PHONE_NUMBER);\n\n if (startsAt < 0) {\n return;\n } // Trim everything to the left of the phone number.\n\n\n text = text.slice(startsAt); // Trim the `+`.\n\n var hasPlus;\n\n if (text[0] === '+') {\n hasPlus = true;\n text = text.slice('+'.length);\n } // Trim everything to the right of the phone number.\n\n\n text = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, ''); // Re-add the previously trimmed `+`.\n\n if (hasPlus) {\n text = '+' + text;\n }\n\n return text;\n}\n//# sourceMappingURL=AsYouType.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/getCountries.js\n\nfunction getCountries(metadata) {\n return new Metadata(metadata).getCountries();\n}\n//# sourceMappingURL=getCountries.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/es6/formatIncompletePhoneNumber.js\n\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\n\nfunction formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n\n return new AsYouType_AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map\n// CONCATENATED MODULE: ./node_modules/libphonenumber-js/index.es6.js\n// Deprecated.\r\n// Use `libphonenumber-js/min` or `libphonenumber-js/max` or `libphonenumber-js/core` instead.\r\n\r\n// Importing from `.json.js` a workaround for a bug in web browsers' \"native\"\r\n// ES6 importing system which is uncapable of importing \"*.json\" files.\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Deprecated\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Deprecated: remove DIGITS export in 2.0.0.\r\n// (it was used in `react-phone-number-input`)\r\n\r\n\r\n\r\nfunction index_es6_parsePhoneNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn es6_parsePhoneNumber_parsePhoneNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_parsePhoneNumberFromString()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn parsePhoneNumberFromString_parsePhoneNumberFromString.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_parseNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn parseNumber.apply(this, parameters)\r\n}\r\n\r\n// Deprecated: remove `parse()` export in 2.0.0.\r\n// (renamed to `parseNumber()`)\r\nfunction index_es6_parse()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn parseNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_formatNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn es6_format_formatNumber.apply(this, parameters)\r\n}\r\n\r\n// Deprecated: remove `format()` export in 2.0.0.\r\n// (renamed to `formatNumber()`)\r\nfunction index_es6_format()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn es6_format_formatNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_getNumberType()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn getNumberType_getNumberType.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_getExampleNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn getExampleNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_isPossibleNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn isPossibleNumber_isPossibleNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_isValidNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn validate_isValidNumber.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_isValidNumberForRegion()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn isValidNumberForRegion_isValidNumberForRegion.apply(this, parameters)\r\n}\r\n\r\n// Deprecated.\r\nfunction index_es6_findPhoneNumbers()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn findPhoneNumbers_findPhoneNumbers.apply(this, parameters)\r\n}\r\n\r\n// Deprecated.\r\nfunction index_es6_searchPhoneNumbers()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn findPhoneNumbers_searchPhoneNumbers.apply(this, parameters)\r\n}\r\n\r\n// Deprecated.\r\nfunction index_es6_PhoneNumberSearch(text, options)\r\n{\r\n\tfindPhoneNumbers_PhoneNumberSearch.call(this, text, options, metadata_min_json)\r\n}\r\n\r\n// Deprecated.\r\nindex_es6_PhoneNumberSearch.prototype = Object.create(findPhoneNumbers_PhoneNumberSearch.prototype, {})\r\nindex_es6_PhoneNumberSearch.prototype.constructor = index_es6_PhoneNumberSearch\r\n\r\nfunction index_es6_findNumbers()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn findNumbers_findNumbers.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_searchNumbers()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn searchNumbers.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_findPhoneNumbersInText()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn findPhoneNumbersInText.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_searchPhoneNumbersInText()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn searchPhoneNumbersInText.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_PhoneNumberMatcher(text, options)\r\n{\r\n\tPhoneNumberMatcher_PhoneNumberMatcher.call(this, text, options, metadata_min_json)\r\n}\r\n\r\nindex_es6_PhoneNumberMatcher.prototype = Object.create(PhoneNumberMatcher_PhoneNumberMatcher.prototype, {})\r\nindex_es6_PhoneNumberMatcher.prototype.constructor = index_es6_PhoneNumberMatcher\r\n\r\nfunction index_es6_AsYouType(country)\r\n{\r\n\tAsYouType_AsYouType.call(this, country, metadata_min_json)\r\n}\r\n\r\nindex_es6_AsYouType.prototype = Object.create(AsYouType_AsYouType.prototype, {})\r\nindex_es6_AsYouType.prototype.constructor = index_es6_AsYouType\r\n\r\nfunction index_es6_isSupportedCountry()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn isSupportedCountry.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_getExtPrefix()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn getExtPrefix.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_parseRFC3966()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn parseRFC3966.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_formatRFC3966()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn formatRFC3966.apply(this, parameters)\r\n}\r\n\r\nfunction index_es6_formatIncompletePhoneNumber()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments)\r\n\tparameters.push(metadata_min_json)\r\n\treturn formatIncompletePhoneNumber.apply(this, parameters)\r\n}\r\n\r\n// Deprecated: remove this in 2.0.0 and make `custom.js` in ES6\r\n// (the old `custom.js` becomes `custom.commonjs.js`).\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction index_es6_getCountries()\r\n{\r\n\treturn getCountries(metadata_min_json)\r\n}\r\n\r\nfunction index_es6_getCountryCallingCode(country)\r\n{\r\n\treturn getCountryCallingCode(country, metadata_min_json)\r\n}\r\n\r\n// `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead.\r\nfunction getPhoneCode(country)\r\n{\r\n\treturn index_es6_getCountryCallingCode(country)\r\n}\r\n\r\n// `getPhoneCodeCustom` name is deprecated, use `getCountryCallingCodeCustom` instead.\r\nfunction getPhoneCodeCustom(country, metadata)\r\n{\r\n\treturn getCountryCallingCode(country, metadata)\r\n}\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"50dbd2d6-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/VuePhoneNumberInput/InputTel/index.vue?vue&type=template&id=e59be3b4&scoped=true&\nvar InputTelvue_type_template_id_e59be3b4_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"parent\",staticClass:\"input-tel\",class:[{\n 'is-focused': _vm.isFocus,\n 'is-valid': _vm.valid,\n 'has-value': _vm.value,\n 'has-error': _vm.error,\n 'is-disabled': _vm.disabled,\n 'is-dark': _vm.dark,\n 'has-hint': _vm.hint\n }, _vm.size],on:{\"click\":_vm.focusInput,\"mouseenter\":function($event){return _vm.updateHoverState(true)},\"mouseleave\":function($event){return _vm.updateHoverState(false)}}},[((_vm.type)==='checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"InputTel\",staticClass:\"input-tel__input\",class:{ 'no-country-selector': _vm.noCountrySelector },style:([\n _vm.noCountrySelector ? _vm.radiusStyle : _vm.radiusRightStyle,\n _vm.inputCaretStyle,\n _vm.inputBorderStyle,\n _vm.inputBoxShadowStyle,\n _vm.inputBgColor,\n _vm.textColor\n ]),attrs:{\"id\":_vm.id,\"placeholder\":_vm.labelValue,\"disabled\":_vm.disabled,\"required\":_vm.required,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputValue)?_vm._i(_vm.inputValue,null)>-1:(_vm.inputValue)},on:{\"keydown\":_vm.keyDown,\"keyup\":_vm.keyUp,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"click\":function($event){return _vm.$emit('click', $event)},\"change\":function($event){var $$a=_vm.inputValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.inputValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.inputValue=$$c}}}},'input',_vm.$attrs,false)):((_vm.type)==='radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"InputTel\",staticClass:\"input-tel__input\",class:{ 'no-country-selector': _vm.noCountrySelector },style:([\n _vm.noCountrySelector ? _vm.radiusStyle : _vm.radiusRightStyle,\n _vm.inputCaretStyle,\n _vm.inputBorderStyle,\n _vm.inputBoxShadowStyle,\n _vm.inputBgColor,\n _vm.textColor\n ]),attrs:{\"id\":_vm.id,\"placeholder\":_vm.labelValue,\"disabled\":_vm.disabled,\"required\":_vm.required,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputValue,null)},on:{\"keydown\":_vm.keyDown,\"keyup\":_vm.keyUp,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"click\":function($event){return _vm.$emit('click', $event)},\"change\":function($event){_vm.inputValue=null}}},'input',_vm.$attrs,false)):_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"InputTel\",staticClass:\"input-tel__input\",class:{ 'no-country-selector': _vm.noCountrySelector },style:([\n _vm.noCountrySelector ? _vm.radiusStyle : _vm.radiusRightStyle,\n _vm.inputCaretStyle,\n _vm.inputBorderStyle,\n _vm.inputBoxShadowStyle,\n _vm.inputBgColor,\n _vm.textColor\n ]),attrs:{\"id\":_vm.id,\"placeholder\":_vm.labelValue,\"disabled\":_vm.disabled,\"required\":_vm.required,\"type\":_vm.type},domProps:{\"value\":(_vm.inputValue)},on:{\"keydown\":_vm.keyDown,\"keyup\":_vm.keyUp,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"click\":function($event){return _vm.$emit('click', $event)},\"input\":function($event){if($event.target.composing){ return; }_vm.inputValue=$event.target.value}}},'input',_vm.$attrs,false)),_c('label',{ref:\"label\",staticClass:\"input-tel__label\",class:_vm.error ? 'text-danger' : null,style:([_vm.labelColorStyle]),attrs:{\"for\":_vm.id},on:{\"click\":_vm.focusInput}},[_vm._v(\" \"+_vm._s(_vm.hintValue || _vm.labelValue)+\" \")]),(_vm.clearable && _vm.inputValue)?_c('button',{staticClass:\"input-tel__clear\",attrs:{\"title\":\"clear\",\"type\":\"button\",\"tabindex\":\"-1\"},on:{\"click\":_vm.clear}},[_c('span',{staticClass:\"input-tel__clear__effect\"}),_c('span',[_vm._v(\" ✕ \")])]):_vm._e(),(_vm.loader)?_c('div',{staticClass:\"input-tel__loader\"},[_c('div',{staticClass:\"input-tel__loader__progress-bar\",style:([_vm.loaderBgColor])})]):_vm._e()])}\nvar InputTelvue_type_template_id_e59be3b4_scoped_true_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/InputTel/index.vue?vue&type=template&id=e59be3b4&scoped=true&\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/mixins/StylesHandler.js\n/* harmony default export */ var StylesHandler = ({\n props: {\n theme: {\n type: Object,\n required: true\n }\n },\n computed: {\n labelColorStyle: function labelColorStyle() {\n if (this.error) return this.theme.errorColor;else if (this.valid) return this.theme.validColor;else if (this.isFocus) return this.theme.color;else if (this.dark) return this.theme.textDarkColor;\n return null;\n },\n inputBorderStyle: function inputBorderStyle() {\n if (this.error) return this.theme.borderErrorColor;else if (this.valid) return this.theme.borderValidColor;else if (this.isHover || this.isFocus) return this.theme.borderColor;\n return null;\n },\n inputBoxShadowStyle: function inputBoxShadowStyle() {\n if (this.isFocus) {\n if (this.error) return this.theme.boxShadowError;else if (this.valid) return this.theme.boxShadowValid;\n return this.theme.boxShadowColor;\n }\n\n return null;\n },\n inputBgColor: function inputBgColor() {\n return !this.dark ? null : this.theme.bgDarkColor;\n },\n textColor: function textColor() {\n return this.dark ? this.theme.textDarkColor : null;\n },\n inputCaretStyle: function inputCaretStyle() {\n return {\n caretColor: this.theme.colorValue\n };\n },\n radiusStyle: function radiusStyle() {\n return this.theme.borderRadius;\n },\n radiusLeftStyle: function radiusLeftStyle() {\n return this.theme.borderLeftRadius;\n },\n radiusRightStyle: function radiusRightStyle() {\n return this.theme.borderRightRadius;\n },\n bgItemSelectedStyle: function bgItemSelectedStyle() {\n return this.theme.bgColor;\n },\n loaderBgColor: function loaderBgColor() {\n return this.theme.bgColor;\n }\n }\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/VuePhoneNumberInput/InputTel/index.vue?vue&type=script&lang=js&\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var InputTelvue_type_script_lang_js_ = ({\n name: 'InputTel',\n mixins: [StylesHandler],\n props: {\n value: {\n type: [String, Number],\n default: null\n },\n label: {\n type: String,\n default: 'Enter text'\n },\n hint: {\n type: String,\n default: null\n },\n error: {\n type: Boolean,\n default: Boolean\n },\n disabled: {\n type: Boolean,\n default: false\n },\n dark: {\n type: Boolean,\n default: false\n },\n id: {\n type: String,\n default: 'InputTel'\n },\n size: {\n type: String,\n default: null\n },\n type: {\n type: String,\n default: 'tel'\n },\n readonly: {\n type: Boolean,\n default: false\n },\n valid: {\n type: Boolean,\n default: false\n },\n required: {\n type: Boolean,\n default: false\n },\n loader: {\n type: Boolean,\n default: false\n },\n clearable: {\n type: Boolean,\n default: false\n },\n noCountrySelector: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n isFocus: false,\n isHover: false\n };\n },\n computed: {\n inputValue: {\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.$emit('input', value);\n }\n },\n labelValue: function labelValue() {\n var label = this.label;\n return this.required && label ? \"\".concat(label, \" *\") : label;\n },\n hintValue: function hintValue() {\n var hint = this.hint;\n return this.required && hint ? \"\".concat(hint, \" *\") : hint;\n }\n },\n methods: {\n updateHoverState: function updateHoverState(value) {\n this.isHover = value;\n },\n focusInput: function focusInput() {\n this.$refs.InputTel.focus();\n },\n onFocus: function onFocus() {\n this.$emit('focus');\n this.isFocus = true;\n },\n onBlur: function onBlur() {\n this.$emit('blur');\n this.isFocus = false;\n },\n clear: function clear() {\n this.$emit('input', null);\n this.$emit('clear');\n },\n keyUp: function keyUp(e) {\n this.$emit('keyup', e);\n },\n keyDown: function keyDown(e) {\n this.$emit('keydown', e);\n }\n }\n});\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/InputTel/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var VuePhoneNumberInput_InputTelvue_type_script_lang_js_ = (InputTelvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/VuePhoneNumberInput/InputTel/index.vue?vue&type=style&index=0&id=e59be3b4&lang=scss&scoped=true&\nvar InputTelvue_type_style_index_0_id_e59be3b4_lang_scss_scoped_true_ = __webpack_require__(\"b8ac\");\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 () { injectStyles.call(this, this.$root.$options.shadowRoot) }\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/VuePhoneNumberInput/InputTel/index.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar component = normalizeComponent(\n VuePhoneNumberInput_InputTelvue_type_script_lang_js_,\n InputTelvue_type_template_id_e59be3b4_scoped_true_render,\n InputTelvue_type_template_id_e59be3b4_scoped_true_staticRenderFns,\n false,\n null,\n \"e59be3b4\",\n null\n \n)\n\n/* harmony default export */ var InputTel = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"50dbd2d6-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/VuePhoneNumberInput/CountrySelector/index.vue?vue&type=template&id=46e105de&scoped=true&\nvar CountrySelectorvue_type_template_id_46e105de_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"parent\",staticClass:\"country-selector\",class:[{\n 'is-focused': _vm.isFocus,\n 'has-value': _vm.value,\n 'has-hint': _vm.hint,\n 'has-error': _vm.error,\n 'is-disabled': _vm.disabled,\n 'is-dark': _vm.dark,\n 'no-flags': _vm.noFlags,\n 'has-list-open': _vm.hasListOpen,\n 'is-valid': _vm.valid\n }, _vm.size],on:{\"!blur\":function($event){return _vm.handleBlur($event)},\"mouseenter\":function($event){return _vm.updateHoverState(true)},\"mouseleave\":function($event){return _vm.updateHoverState(false)}}},[(_vm.value && !_vm.noFlags)?_c('div',{staticClass:\"country-selector__country-flag\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleList($event)}}},[_c('div',{class:(\"iti-flag-small iti-flag \" + (_vm.value.toLowerCase()))})]):_vm._e(),_c('input',{ref:\"CountrySelector\",staticClass:\"country-selector__input\",style:([_vm.radiusLeftStyle, _vm.inputBorderStyle, _vm.inputBoxShadowStyle, _vm.inputBgColor]),attrs:{\"id\":_vm.id,\"placeholder\":_vm.label,\"disabled\":_vm.disabled,\"readonly\":\"\"},domProps:{\"value\":_vm.callingCode},on:{\"focus\":function($event){_vm.isFocus = true},\"keydown\":_vm.keyboardNav,\"click\":function($event){$event.stopPropagation();return _vm.toggleList($event)}}}),_c('div',{staticClass:\"country-selector__toggle\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleList($event)}}},[_vm._t(\"arrow\",[_c('svg',{staticClass:\"country-selector__toggle__arrow\",attrs:{\"mlns\":\"http://www.w3.org/2000/svg\",\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{staticClass:\"arrow\",attrs:{\"d\":\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"}}),_c('path',{attrs:{\"fill\":\"none\",\"d\":\"M0 0h24v24H0V0z\"}})])])],2),_c('label',{ref:\"label\",staticClass:\"country-selector__label\",style:([_vm.labelColorStyle]),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleList($event)}}},[_vm._v(\" \"+_vm._s(_vm.hint || _vm.label)+\" \")]),_c('Transition',{attrs:{\"name\":\"slide\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasListOpen),expression:\"hasListOpen\"}],ref:\"countriesList\",staticClass:\"country-selector__list\",class:{ 'has-calling-code': _vm.showCodeOnList },style:([_vm.radiusStyle, _vm.listHeight, _vm.inputBgColor])},[_c('RecycleScroller',{attrs:{\"items\":_vm.countriesSorted,\"item-size\":1,\"key-field\":\"iso2\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var item = ref.item;\nreturn [_c('button',{key:(\"item-\" + (item.code)),staticClass:\"flex align-center country-selector__list__item\",class:[\n { 'selected': _vm.value === item.iso2 },\n { 'keyboard-selected': _vm.value !== item.iso2 && _vm.tmpValue === item.iso2 }\n ],style:([\n _vm.itemHeight,\n _vm.value === item.iso2 ? _vm.bgItemSelectedStyle : null\n ]),attrs:{\"tabindex\":\"-1\",\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.updateValue(item.iso2)}}},[(!_vm.noFlags)?_c('div',{staticClass:\"country-selector__list__item__flag-container\"},[_c('div',{class:(\"iti-flag-small iti-flag \" + (item.iso2.toLowerCase()))})]):_vm._e(),(_vm.showCodeOnList)?_c('span',{staticClass:\"country-selector__list__item__calling-code flex-fixed\"},[_vm._v(\"+\"+_vm._s(item.dialCode))]):_vm._e(),_c('div',{staticClass:\"dots-text\"},[_vm._v(\" \"+_vm._s(item.name)+\" \")])])]}}])})],1)])],1)}\nvar CountrySelectorvue_type_template_id_46e105de_scoped_true_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/CountrySelector/index.vue?vue&type=template&id=46e105de&scoped=true&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find-index.js\nvar es6_array_find_index = __webpack_require__(\"20d6\");\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js\nvar is_array = __webpack_require__(\"a745\");\nvar is_array_default = /*#__PURE__*/__webpack_require__.n(is_array);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js\n\n\nfunction _arrayWithoutHoles(arr) {\n if (is_array_default()(arr)) return _arrayLikeToArray(arr);\n}\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/array/from.js\nvar from = __webpack_require__(\"774e\");\nvar from_default = /*#__PURE__*/__webpack_require__.n(from);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/is-iterable.js\nvar is_iterable = __webpack_require__(\"c8bb\");\nvar is_iterable_default = /*#__PURE__*/__webpack_require__.n(is_iterable);\n\n// EXTERNAL MODULE: ./node_modules/@babel/runtime-corejs2/core-js/symbol.js\nvar symbol = __webpack_require__(\"67bb\");\nvar symbol_default = /*#__PURE__*/__webpack_require__.n(symbol);\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js\n\n\n\nfunction _iterableToArray(iter) {\n if (typeof symbol_default.a !== \"undefined\" && is_iterable_default()(Object(iter))) return from_default()(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/unsupportedIterableToArray.js\n\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return from_default()(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find.js\nvar es6_array_find = __webpack_require__(\"7514\");\n\n// EXTERNAL MODULE: ./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js\nvar vue_virtual_scroller_esm = __webpack_require__(\"e508\");\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/VuePhoneNumberInput/CountrySelector/index.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var CountrySelectorvue_type_script_lang_js_ = ({\n name: 'CountrySelector',\n components: {\n RecycleScroller: vue_virtual_scroller_esm[\"a\" /* RecycleScroller */]\n },\n mixins: [StylesHandler],\n props: {\n id: {\n type: String,\n default: 'CountrySelector'\n },\n value: {\n type: [String, Object],\n default: null\n },\n label: {\n type: String,\n default: 'Choose country'\n },\n hint: {\n type: String,\n default: String\n },\n size: {\n type: String,\n default: String\n },\n error: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n valid: {\n type: Boolean,\n default: false\n },\n dark: {\n type: Boolean,\n default: false\n },\n items: {\n type: Array,\n default: Array,\n required: true\n },\n preferredCountries: {\n type: Array,\n default: null\n },\n onlyCountries: {\n type: Array,\n default: null\n },\n ignoredCountries: {\n type: Array,\n default: null\n },\n noFlags: {\n type: Boolean,\n default: false\n },\n countriesHeight: {\n type: Number,\n default: 35\n },\n showCodeOnList: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n isFocus: false,\n hasListOpen: false,\n selectedIndex: null,\n tmpValue: this.value,\n query: '',\n indexItemToShow: 0,\n isHover: false\n };\n },\n computed: {\n itemHeight: function itemHeight() {\n return {\n height: \"\".concat(this.countriesHeight, \"px\")\n };\n },\n listHeight: function listHeight() {\n return {\n height: \"\".concat((this.countriesHeight + 1) * 7, \"px\"),\n maxHeight: \"\".concat((this.countriesHeight + 1) * 7, \"px\")\n };\n },\n countriesList: function countriesList() {\n var _this = this;\n\n return this.items.filter(function (item) {\n return !_this.ignoredCountries.includes(item.iso2);\n });\n },\n countriesFiltered: function countriesFiltered() {\n var _this2 = this;\n\n var countries = this.onlyCountries || this.preferredCountries;\n return countries.map(function (country) {\n return _this2.countriesList.find(function (item) {\n return item.iso2.includes(country);\n });\n });\n },\n otherCountries: function otherCountries() {\n var _this3 = this;\n\n return this.countriesList.filter(function (item) {\n return !_this3.preferredCountries.includes(item.iso2);\n });\n },\n countriesSorted: function countriesSorted() {\n return this.preferredCountries ? [].concat(_toConsumableArray(this.countriesFiltered), _toConsumableArray(this.otherCountries)) : this.onlyCountries ? this.countriesFiltered : this.countriesList;\n },\n selectedValueIndex: function selectedValueIndex() {\n var _this4 = this;\n\n return this.value ? this.countriesSorted.findIndex(function (c) {\n return c.iso2 === _this4.value;\n }) : null;\n },\n tmpValueIndex: function tmpValueIndex() {\n var _this5 = this;\n\n return this.countriesSorted.findIndex(function (c) {\n return c.iso2 === _this5.tmpValue;\n });\n },\n callingCode: function callingCode() {\n return this.value ? \"+\".concat(index_es6_getCountryCallingCode(this.value)) : null;\n }\n },\n methods: {\n updateHoverState: function updateHoverState(value) {\n this.isHover = value;\n },\n handleBlur: function handleBlur(e) {\n if (this.$el.contains(e.relatedTarget)) return;\n this.isFocus = false;\n this.closeList();\n },\n toggleList: function toggleList() {\n this.$refs.countriesList.offsetParent ? this.closeList() : this.openList();\n },\n openList: function openList() {\n if (!this.disabled) {\n this.$refs.CountrySelector.focus();\n this.$emit('open');\n this.isFocus = true;\n this.hasListOpen = true;\n if (this.value) this.scrollToSelectedOnFocus(this.selectedValueIndex);\n }\n },\n closeList: function closeList() {\n this.$emit('close');\n this.hasListOpen = false;\n },\n updateValue: function () {\n var _updateValue = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(val) {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.tmpValue = val;\n this.$emit('input', val || null);\n _context.next = 4;\n return this.$nextTick();\n\n case 4:\n this.closeList();\n\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function updateValue(_x) {\n return _updateValue.apply(this, arguments);\n }\n\n return updateValue;\n }(),\n scrollToSelectedOnFocus: function scrollToSelectedOnFocus(arrayIndex) {\n var _this6 = this;\n\n this.$nextTick(function () {\n // this.indexItemToShow = arrayIndex - 3\n _this6.$refs.countriesList.scrollTop = arrayIndex * (_this6.countriesHeight + 1) - (_this6.countriesHeight + 1) * 3;\n });\n },\n keyboardNav: function keyboardNav(e) {\n var code = e.keyCode;\n\n if (code === 40 || code === 38) {\n // arrow up down\n if (e.view && e.view.event) {\n // TODO : It's not compatible with FireFox\n e.view.event.preventDefault();\n }\n\n if (!this.hasListOpen) this.openList();\n var index = code === 40 ? this.tmpValueIndex + 1 : this.tmpValueIndex - 1;\n\n if (index === -1 || index >= this.countriesSorted.length) {\n index = index === -1 ? this.countriesSorted.length - 1 : 0;\n }\n\n this.tmpValue = this.countriesSorted[index].iso2;\n this.scrollToSelectedOnFocus(index);\n } else if (code === 13) {\n // enter\n this.hasListOpen ? this.updateValue(this.tmpValue) : this.openList();\n } else if (code === 27) {\n // escape\n this.closeList();\n } else {\n // typing a country's name\n this.searching(e);\n }\n },\n searching: function searching(e) {\n var _this7 = this;\n\n var code = e.keyCode;\n clearTimeout(this.queryTimer);\n this.queryTimer = setTimeout(function () {\n _this7.query = '';\n }, 1000);\n var q = String.fromCharCode(code);\n\n if (code === 8 && this.query !== '') {\n this.query = this.query.substring(0, this.query.length - 1);\n } else if (/[a-zA-Z-e ]/.test(q)) {\n if (!this.hasListOpen) this.openList();\n this.query += e.key;\n var countries = this.preferredCountries ? this.countriesSorted.slice(this.preferredCountries.length) : this.countriesSorted;\n var resultIndex = countries.findIndex(function (c) {\n _this7.tmpValue = c.iso2;\n return c.name.toLowerCase().startsWith(_this7.query);\n });\n\n if (resultIndex !== -1) {\n this.scrollToSelectedOnFocus(resultIndex + (this.preferredCountries ? this.preferredCountries.length : 0));\n }\n }\n }\n }\n});\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/CountrySelector/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var VuePhoneNumberInput_CountrySelectorvue_type_script_lang_js_ = (CountrySelectorvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/VuePhoneNumberInput/CountrySelector/index.vue?vue&type=style&index=0&id=46e105de&lang=scss&scoped=true&\nvar CountrySelectorvue_type_style_index_0_id_46e105de_lang_scss_scoped_true_ = __webpack_require__(\"3314\");\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/CountrySelector/index.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar CountrySelector_component = normalizeComponent(\n VuePhoneNumberInput_CountrySelectorvue_type_script_lang_js_,\n CountrySelectorvue_type_template_id_46e105de_scoped_true_render,\n CountrySelectorvue_type_template_id_46e105de_scoped_true_staticRenderFns,\n false,\n null,\n \"46e105de\",\n null\n \n)\n\n/* harmony default export */ var CountrySelector = (CountrySelector_component.exports);\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/assets/locales/index.js\n/* harmony default export */ var locales = ({\n countrySelectorLabel: 'Country code',\n countrySelectorError: 'Choose country',\n phoneNumberLabel: 'Phone number',\n example: 'Example:'\n});\n// EXTERNAL MODULE: ./node_modules/color-transformer-ui/lib/index.min.js\nvar index_min = __webpack_require__(\"4883\");\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/VuePhoneNumberInput/index.vue?vue&type=script&lang=js&\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction VuePhoneNumberInputvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\nvar VuePhoneNumberInputvue_type_script_lang_js_getShadowColor = function getShadowColor(color) {\n return Object(index_min[\"isColorName\"])(color) ? Object(index_min[\"HexToRgba\"])(Object(index_min[\"colorNameToHex\"])(color), 0.7) : Object(index_min[\"HexToRgba\"])(color, 0.7);\n};\n\nvar browserLocale = function browserLocale() {\n if (!window) return null;\n var browserLocale = window.navigator.userLanguage || window.navigator.language;\n var locale = browserLocale ? browserLocale.substr(3, 4).toUpperCase() : null;\n if (locale === '') locale = browserLocale.substr(0, 2).toUpperCase();\n return locale;\n};\n\nvar VuePhoneNumberInputvue_type_script_lang_js_isCountryAvailable = function isCountryAvailable(locale) {\n return countriesIso.includes(locale);\n};\n\n/* harmony default export */ var VuePhoneNumberInputvue_type_script_lang_js_ = ({\n name: 'MazPhoneNumberInput',\n components: {\n InputTel: InputTel,\n CountrySelector: CountrySelector\n },\n props: {\n value: {\n type: String,\n default: null\n },\n id: {\n type: String,\n default: 'MazPhoneNumberInput'\n },\n color: {\n type: String,\n default: 'dodgerblue'\n },\n validColor: {\n type: String,\n default: 'yellowgreen'\n },\n errorColor: {\n type: String,\n default: 'orangered'\n },\n darkColor: {\n type: String,\n default: '#424242'\n },\n disabled: {\n type: Boolean,\n default: false\n },\n defaultCountryCode: {\n type: String,\n default: null\n },\n size: {\n type: String,\n default: null\n },\n preferredCountries: {\n type: Array,\n default: null\n },\n onlyCountries: {\n type: Array,\n default: null\n },\n ignoredCountries: {\n type: Array,\n default: Array\n },\n translations: {\n type: Object,\n default: null\n },\n noValidatorState: {\n type: Boolean,\n default: false\n },\n noFlags: {\n type: Boolean,\n default: false\n },\n error: {\n type: Boolean,\n default: false\n },\n noExample: {\n type: Boolean,\n default: false\n },\n required: {\n type: Boolean,\n default: false\n },\n countriesHeight: {\n type: Number,\n default: 30\n },\n noUseBrowserLocale: {\n type: Boolean,\n default: false\n },\n fetchCountry: {\n type: Boolean,\n default: false\n },\n noCountrySelector: {\n type: Boolean,\n default: false\n },\n showCodeOnList: {\n type: Boolean,\n default: false\n },\n dark: {\n type: Boolean,\n default: false\n },\n borderRadius: {\n type: Number,\n default: 4\n }\n },\n data: function data() {\n return {\n results: {},\n userLocale: this.defaultCountryCode,\n lastKeyPressed: null\n };\n },\n computed: {\n uniqueId: function uniqueId() {\n return \"\".concat(this.id, \"-\").concat(this._uid);\n },\n t: function t() {\n return VuePhoneNumberInputvue_type_script_lang_js_objectSpread({}, locales, {}, this.translations);\n },\n codesCountries: function codesCountries() {\n return countries;\n },\n countryCode: {\n get: function get() {\n return this.userLocale || this.results.countryCode;\n },\n set: function set(newCountry) {\n this.setLocale(newCountry);\n this.$refs.PhoneNumberInput.$el.querySelector('input').focus();\n }\n },\n phoneNumber: {\n get: function get() {\n return this.value;\n },\n set: function set(newPhone) {\n this.emitValues({\n countryCode: this.countryCode,\n phoneNumber: newPhone\n });\n }\n },\n shouldChooseCountry: function shouldChooseCountry() {\n return !this.countryCode && !!this.phoneNumber;\n },\n phoneFormatted: function phoneFormatted() {\n return this.results.formatInternational;\n },\n isValid: function isValid() {\n return this.results.isValid;\n },\n phoneNumberExample: function phoneNumberExample() {\n var phoneNumber = this.countryCode ? index_es6_getExampleNumber(this.countryCode, examples_mobile) : null;\n return phoneNumber ? phoneNumber.formatNational() : null;\n },\n hasEmptyPhone: function hasEmptyPhone() {\n return this.phoneNumber === '' || this.phoneNumber === null;\n },\n hintValue: function hintValue() {\n return this.noExample || !this.phoneNumberExample ? null : this.hasEmptyPhone || this.isValid ? null : \"\".concat(this.t.example, \" \").concat(this.phoneNumberExample);\n },\n theme: function theme() {\n return {\n colorValue: this.color,\n color: {\n color: this.color\n },\n textColor: {\n color: '#747474'\n },\n textDarkColor: {\n color: 'rgba(255, 255, 255, 0.7)'\n },\n validColor: {\n color: this.validColor\n },\n errorColor: {\n color: this.errorColor\n },\n darkColor: {\n color: this.darkColor\n },\n bgColor: {\n backgroundColor: this.color\n },\n bgValidColor: {\n backgroundColor: this.validColor\n },\n bgErrorColor: {\n backgroundColor: this.errorColor\n },\n bgDarkColor: {\n backgroundColor: this.darkColor\n },\n borderColor: {\n borderColor: this.color\n },\n borderValidColor: {\n borderColor: this.validColor\n },\n borderErrorColor: {\n borderColor: this.errorColor\n },\n borderDarkColor: {\n borderColor: this.darkColor\n },\n boxShadowColor: {\n boxShadow: \"0 0 0 0.125rem \".concat(VuePhoneNumberInputvue_type_script_lang_js_getShadowColor(this.color))\n },\n boxShadowValid: {\n boxShadow: \"0 0 0 0.125rem \".concat(VuePhoneNumberInputvue_type_script_lang_js_getShadowColor(this.validColor))\n },\n boxShadowError: {\n boxShadow: \"0 0 0 0.125rem \".concat(VuePhoneNumberInputvue_type_script_lang_js_getShadowColor(this.errorColor))\n },\n borderRadius: {\n borderRadius: \"\".concat(this.borderRadius, \"px\")\n },\n borderLeftRadius: {\n borderTopLeftRadius: \"\".concat(this.borderRadius, \"px\"),\n borderBottomLeftRadius: \"\".concat(this.borderRadius, \"px\")\n },\n borderRightRadius: {\n borderTopRightRadius: \"\".concat(this.borderRadius, \"px\"),\n borderBottomRightRadius: \"\".concat(this.borderRadius, \"px\")\n }\n };\n }\n },\n watch: {\n defaultCountryCode: function defaultCountryCode(newValue, oldValue) {\n if (newValue === oldValue) return;\n this.setLocale(newValue);\n },\n phoneNumber: {\n handler: function handler(newValue, oldValue) {\n // init component (countryCode & phoneNumber) if phone number is provide\n if (newValue && newValue !== oldValue) {\n var phoneNumber = index_es6_parsePhoneNumberFromString(newValue);\n\n if (phoneNumber) {\n this.emitValues({\n phoneNumber: phoneNumber.nationalNumber,\n countryCode: this.countryCode ? this.countryCode : phoneNumber.country\n });\n }\n }\n },\n immediate: true\n }\n },\n mounted: function () {\n var _mounted = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee() {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n if (this.phoneNumber && this.defaultCountryCode) this.emitValues({\n countryCode: this.defaultCountryCode,\n phoneNumber: this.phoneNumber\n });\n\n if (!(this.defaultCountryCode && this.fetchCountry)) {\n _context.next = 4;\n break;\n }\n\n throw new Error('MazPhoneNumberInput: Do not use \"fetch-country\" and \"default-country-code\" options in the same time');\n\n case 4:\n if (!(this.defaultCountryCode && this.noUseBrowserLocale)) {\n _context.next = 6;\n break;\n }\n\n throw new Error('MazPhoneNumberInput: If you use a \"default-country-code\", do not use \"no-use-browser-locale\" options');\n\n case 6:\n if (!this.defaultCountryCode) {\n _context.next = 8;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 8:\n this.fetchCountry ? this.fetchCountryCode() : !this.noUseBrowserLocale ? this.setLocale(browserLocale()) : null;\n _context.next = 14;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context[\"catch\"](0);\n throw new Error(_context.t0);\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 11]]);\n }));\n\n function mounted() {\n return _mounted.apply(this, arguments);\n }\n\n return mounted;\n }(),\n methods: {\n getAsYouTypeFormat: function getAsYouTypeFormat(payload) {\n var countryCode = payload.countryCode,\n phoneNumber = payload.phoneNumber;\n var asYouType = new index_es6_AsYouType(countryCode);\n return phoneNumber ? asYouType.input(phoneNumber) : null;\n },\n getParsePhoneNumberFromString: function getParsePhoneNumberFromString(_ref) {\n var phoneNumber = _ref.phoneNumber,\n countryCode = _ref.countryCode;\n var parsing = phoneNumber && countryCode ? index_es6_parsePhoneNumberFromString(phoneNumber, countryCode) : null;\n return VuePhoneNumberInputvue_type_script_lang_js_objectSpread({\n countryCode: countryCode,\n isValid: false\n }, phoneNumber && phoneNumber !== '' ? {\n phoneNumber: phoneNumber\n } : null, {}, parsing ? {\n countryCallingCode: parsing.countryCallingCode,\n formattedNumber: parsing.number,\n nationalNumber: parsing.nationalNumber,\n isValid: parsing.isValid(),\n type: parsing.getType(),\n formatInternational: parsing.formatInternational(),\n formatNational: parsing.formatNational(),\n uri: parsing.getURI(),\n e164: parsing.format('E.164')\n } : null);\n },\n emitValues: function emitValues(payload) {\n var _this = this;\n\n var asYouType = this.getAsYouTypeFormat(payload);\n var backSpacePressed = this.lastKeyPressed === 8;\n this.$nextTick(function () {\n var lastCharacOfPhoneNumber = _this.phoneNumber ? _this.phoneNumber.trim().slice(-1) : false;\n\n if (backSpacePressed && lastCharacOfPhoneNumber && lastCharacOfPhoneNumber.slice(-1) === ')') {\n asYouType = _this.phoneNumber.slice(0, -2);\n payload.phoneNumber = _this.phoneNumber.slice(0, -2);\n }\n\n _this.results = _this.getParsePhoneNumberFromString(payload);\n\n _this.$emit('update', _this.results);\n\n _this.$emit('input', asYouType);\n });\n },\n setLocale: function setLocale(locale) {\n var countryAvailable = VuePhoneNumberInputvue_type_script_lang_js_isCountryAvailable(locale);\n\n if (countryAvailable && locale) {\n this.userLocale = countryAvailable ? locale : null;\n this.emitValues({\n countryCode: locale,\n phoneNumber: this.phoneNumber\n });\n } else if (!countryAvailable && locale) {\n window.console.warn(\"The locale \".concat(locale, \" is not available\"));\n }\n },\n fetchCountryCode: function () {\n var _fetchCountryCode = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee2() {\n var response, responseText, result;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return fetch('https://ip2c.org/s');\n\n case 3:\n response = _context2.sent;\n _context2.next = 6;\n return response.text();\n\n case 6:\n responseText = _context2.sent;\n result = (responseText || '').toString();\n if (result && result[0] === '1') this.setLocale(result.substr(2, 2));\n _context2.next = 14;\n break;\n\n case 11:\n _context2.prev = 11;\n _context2.t0 = _context2[\"catch\"](0);\n throw new Error(_context2.t0);\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 11]]);\n }));\n\n function fetchCountryCode() {\n return _fetchCountryCode.apply(this, arguments);\n }\n\n return fetchCountryCode;\n }()\n }\n});\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/index.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_VuePhoneNumberInputvue_type_script_lang_js_ = (VuePhoneNumberInputvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/VuePhoneNumberInput/index.vue?vue&type=style&index=0&id=19c9a1c7&lang=scss&scoped=true&\nvar VuePhoneNumberInputvue_type_style_index_0_id_19c9a1c7_lang_scss_scoped_true_ = __webpack_require__(\"6996\");\n\n// CONCATENATED MODULE: ./src/VuePhoneNumberInput/index.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar VuePhoneNumberInput_component = normalizeComponent(\n src_VuePhoneNumberInputvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n \"19c9a1c7\",\n null\n \n)\n\n/* harmony default export */ var VuePhoneNumberInput = (VuePhoneNumberInput_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\"] = (VuePhoneNumberInput);\n\n\n\n/***/ }),\n\n/***/ \"fdef\":\n/***/ (function(module, exports) {\n\nmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ })\n\n/******/ })[\"default\"];\n//# sourceMappingURL=vue-phone-number-input.common.js.map","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"VueRavePayment\",[],t):\"object\"==typeof exports?exports.VueRavePayment=t():e.VueRavePayment=t()}(window,function(){return r={},o.m=n=[function(e,t,n){var r=n(2);\"string\"==typeof r&&(r=[[e.i,r,\"\"]]),r.locals&&(e.exports=r.locals);(0,n(5).default)(\"7ce5ac5d\",r,!0,{})},function(e,t,n){\"use strict\";n(0)},function(e,t,n){(e.exports=n(3)(!1)).push([e.i,\"\\n.payButton{\\n color: #61DAFB;\\n width: 250px;\\n height: 50px;\\n font-weight: 800;\\n}\\n\",\"\"])},function(e){\"use strict\";function r(e,t){var n=e[1]||\"\",r=e[3];if(!r)return n;if(t&&\"function\"==typeof btoa){var o=function(e){var t=btoa(unescape(encodeURIComponent(JSON.stringify(e))));return\"/*# \".concat(\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(t),\" */\")}(r),a=r.sources.map(function(e){return\"/*# sourceURL=\".concat(r.sourceRoot).concat(e,\" */\")});return[n].concat(a).concat([o]).join(\"\\n\")}return\"\"+n}e.exports=function(n){var u=[];return u.toString=function(){return this.map(function(e){var t=r(e,n);return e[2]?\"@media \".concat(e[2],\"{\").concat(t,\"}\"):t}).join(\"\")},u.i=function(e,t){\"string\"==typeof e&&(e=[[null,e,\"\"]]);for(var n={},r=0;r<this.length;r++){var o=this[r][0];null!=o&&(n[o]=!0)}for(var a=0;a<e.length;a++){var i=e[a];null!=i[0]&&n[i[0]]||(t&&!i[2]?i[2]=t:t&&(i[2]=\"(\".concat(i[2],\") and (\").concat(t,\")\")),u.push(i))}},u}},function(e,t,n){\"use strict\";n.r(t);var r={props:{styleClass:{type:String,default:\"payButton\"},email:{type:String,required:!0},amount:{type:Number,required:!0},raveKey:{type:String,required:!0},reference:{type:String,required:!0},callback:{type:Function,required:!0,default:function(){}},close:{type:Function,required:!0,default:function(){}},metadata:{type:Array,default:function(){return[]}},currency:{type:String,default:\"NGN\"},country:{type:String,default:\"NG\"},customerFirstname:{type:String,default:\"\"},customerLastname:{type:String,default:\"\"},customTitle:{type:String,default:\"\"},customDescription:{type:String,default:\"\"},customLogo:{type:String,default:\"\"},redirectUrl:{type:String,default:\"\"},paymentOptions:{type:String,default:\"card\"},paymentPlan:{type:Number,default:0},hostedPayment:{type:Number,default:0},subaccounts:{type:Array,default:function(){return[]}}},created:function(){var e=document.createElement(\"script\");e.src=\"https://api.ravepay.co/flwv3-pug/getpaidx/api/flwpbf-inline.js\",document.getElementsByTagName(\"head\")[0].appendChild(e)},methods:{payWithRave:function(){var t=this;window.getpaidSetup({customer_email:this.email,amount:this.amount,txref:this.reference,PBFPubKey:this.raveKey,onclose:function(){return t.close()},callback:function(e){return t.callback(e)},meta:this.metadata,currency:this.currency,country:this.country,customer_firstname:this.customerFirstname,customer_lastname:this.customerLastname,custom_title:this.customTitle,custom_logo:this.customLogo,redirect_url:this.redirectUrl,payment_plan:this.paymentPlan,payment_options:this.paymentOptions,subaccounts:this.subaccounts,hosted_payment:this.hostedPayment})}}},o=(n(1),function(e,t,n,r,o,a,i,u){var s,c=\"function\"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=n,c._compiled=!0),r&&(c.functional=!0),a&&(c._scopeId=\"data-v-\"+a),i?c._ssrRegister=s=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),o&&o.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(i)}:o&&(s=u?function(){o.call(this,this.$root.$options.shadowRoot)}:o),s)if(c.functional){c._injectStyles=s;var l=c.render;c.render=function(e,t){return s.call(t),l(e,t)}}else{var f=c.beforeCreate;c.beforeCreate=f?[].concat(f,s):[s]}return{exports:e,options:c}}(r,function(){var e=this;return(e._self._c||e.$createElement)(\"button\",{class:e.styleClass,on:{click:e.payWithRave}},[e._t(\"default\",[e._v(\"Make Payment\")])],2)},[],!1,null,null,null));t.default=o.exports},function(e,t,n){\"use strict\";function u(e,t){for(var n=[],r={},o=0;o<t.length;o++){var a=t[o],i=a[0],u={id:e+\":\"+o,css:a[1],media:a[2],sourceMap:a[3]};r[i]?r[i].parts.push(u):n.push(r[i]={id:i,parts:[u]})}return n}function r(a,e,t,n){y=t,v=n||{};var i=u(a,e);return s(i),function(e){for(var t=[],n=0;n<i.length;n++){(r=f[i[n].id]).refs--,t.push(r)}e?s(i=u(a,e)):i=[];for(n=0;n<t.length;n++){var r;if(0===(r=t[n]).refs){for(var o=0;o<r.parts.length;o++)r.parts[o]();delete f[r.id]}}}}function s(e){for(var t=0;t<e.length;t++){var n=e[t],r=f[n.id];if(r){r.refs++;for(var o=0;o<r.parts.length;o++)r.parts[o](n.parts[o]);for(;o<n.parts.length;o++)r.parts.push(i(n.parts[o]));n.parts.length<r.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(o=0;o<n.parts.length;o++)a.push(i(n.parts[o]));f[n.id]={id:n.id,refs:1,parts:a}}}}function a(){var e=document.createElement(\"style\");return e.type=\"text/css\",d.appendChild(e),e}function i(t){var n,r,e=document.querySelector(\"style[\"+g+'~=\"'+t.id+'\"]');if(e){if(y)return h;e.parentNode.removeChild(e)}if(b){var o=m++;e=p=p||a(),n=c.bind(null,e,o,!1),r=c.bind(null,e,o,!0)}else e=a(),n=function(e,t){var n=t.css,r=t.media,o=t.sourceMap;r&&e.setAttribute(\"media\",r);v.ssrId&&e.setAttribute(g,t.id);o&&(n+=\"\\n/*# sourceURL=\"+o.sources[0]+\" */\",n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\");if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}.bind(null,e),r=function(){e.parentNode.removeChild(e)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else r()}}function c(e,t,n,r){var o=n?\"\":r.css;if(e.styleSheet)e.styleSheet.cssText=_(t,o);else{var a=document.createTextNode(o),i=e.childNodes;i[t]&&e.removeChild(i[t]),i.length?e.insertBefore(a,i[t]):e.appendChild(a)}}n.r(t),n.d(t,\"default\",function(){return r});var o=\"undefined\"!=typeof document;if(\"undefined\"!=typeof DEBUG&&DEBUG&&!o)throw Error(\"vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\");var l,f={},d=o&&(document.head||document.getElementsByTagName(\"head\")[0]),p=null,m=0,y=!1,h=function(){},v=null,g=\"data-vue-ssr-id\",b=\"undefined\"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase()),_=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join(\"\\n\")})}],o.c=r,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p=\"/dist/\",o(o.s=4);function o(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}var n,r});","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","import firebase from '@firebase/app';(function() {/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar k,aa=\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};function ba(a){a=[\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global,a];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}return globalThis}var ca=ba(this);\nfunction da(a,b){if(b){var c=ca;a=a.split(\".\");for(var d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&aa(c,a,{configurable:!0,writable:!0,value:b})}}function ea(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}function fa(a){var b=\"undefined\"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:ea(a)}}\nda(\"Promise\",function(a){function b(g){this.b=0;this.c=void 0;this.a=[];var h=this.f();try{g(h.resolve,h.reject)}catch(m){h.reject(m)}}function c(){this.a=null}function d(g){return g instanceof b?g:new b(function(h){h(g)})}if(a)return a;c.prototype.b=function(g){if(null==this.a){this.a=[];var h=this;this.c(function(){h.g()})}this.a.push(g)};var e=ca.setTimeout;c.prototype.c=function(g){e(g,0)};c.prototype.g=function(){for(;this.a&&this.a.length;){var g=this.a;this.a=[];for(var h=0;h<g.length;++h){var m=\ng[h];g[h]=null;try{m()}catch(p){this.f(p)}}}this.a=null};c.prototype.f=function(g){this.c(function(){throw g;})};b.prototype.f=function(){function g(p){return function(v){m||(m=!0,p.call(h,v))}}var h=this,m=!1;return{resolve:g(this.m),reject:g(this.g)}};b.prototype.m=function(g){if(g===this)this.g(new TypeError(\"A Promise cannot resolve to itself\"));else if(g instanceof b)this.s(g);else{a:switch(typeof g){case \"object\":var h=null!=g;break a;case \"function\":h=!0;break a;default:h=!1}h?this.u(g):this.h(g)}};\nb.prototype.u=function(g){var h=void 0;try{h=g.then}catch(m){this.g(m);return}\"function\"==typeof h?this.w(h,g):this.h(g)};b.prototype.g=function(g){this.i(2,g)};b.prototype.h=function(g){this.i(1,g)};b.prototype.i=function(g,h){if(0!=this.b)throw Error(\"Cannot settle(\"+g+\", \"+h+\"): Promise already settled in state\"+this.b);this.b=g;this.c=h;this.l()};b.prototype.l=function(){if(null!=this.a){for(var g=0;g<this.a.length;++g)f.b(this.a[g]);this.a=null}};var f=new c;b.prototype.s=function(g){var h=this.f();\ng.Oa(h.resolve,h.reject)};b.prototype.w=function(g,h){var m=this.f();try{g.call(h,m.resolve,m.reject)}catch(p){m.reject(p)}};b.prototype.then=function(g,h){function m(A,Q){return\"function\"==typeof A?function(xa){try{p(A(xa))}catch(ud){v(ud)}}:Q}var p,v,C=new b(function(A,Q){p=A;v=Q});this.Oa(m(g,p),m(h,v));return C};b.prototype.catch=function(g){return this.then(void 0,g)};b.prototype.Oa=function(g,h){function m(){switch(p.b){case 1:g(p.c);break;case 2:h(p.c);break;default:throw Error(\"Unexpected state: \"+\np.b);}}var p=this;null==this.a?f.b(m):this.a.push(m)};b.resolve=d;b.reject=function(g){return new b(function(h,m){m(g)})};b.race=function(g){return new b(function(h,m){for(var p=fa(g),v=p.next();!v.done;v=p.next())d(v.value).Oa(h,m)})};b.all=function(g){var h=fa(g),m=h.next();return m.done?d([]):new b(function(p,v){function C(xa){return function(ud){A[xa]=ud;Q--;0==Q&&p(A)}}var A=[],Q=0;do A.push(void 0),Q++,d(m.value).Oa(C(A.length-1),v),m=h.next();while(!m.done)})};return b});\nvar ha=ha||{},l=this||self,ia=/^[\\w+/_-]+[=]{0,2}$/,ja=null;function ka(){}\nfunction la(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return\"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return\"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return\"function\"}else return\"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return\"object\";return b}function ma(a){var b=la(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length}function n(a){return\"function\"==la(a)}function q(a){var b=typeof a;return\"object\"==b&&null!=a||\"function\"==b}function na(a){return Object.prototype.hasOwnProperty.call(a,oa)&&a[oa]||(a[oa]=++pa)}var oa=\"closure_uid_\"+(1E9*Math.random()>>>0),pa=0;function qa(a,b,c){return a.call.apply(a.bind,arguments)}\nfunction ra(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function r(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?r=qa:r=ra;return r.apply(null,arguments)}\nfunction sa(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}var ta=Date.now||function(){return+new Date};function t(a,b){function c(){}c.prototype=b.prototype;a.Za=b.prototype;a.prototype=new c;a.prototype.constructor=a};/*\n\n Copyright 2017 Google Inc.\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 u(a,b,c){this.code=ua+a;this.message=b||va[a]||\"\";this.a=c||null}t(u,Error);u.prototype.v=function(){var a={code:this.code,message:this.message};this.a&&(a.serverResponse=this.a);return a};u.prototype.toJSON=function(){return this.v()};function wa(a){var b=a&&a.code;return b?new u(b.substring(ua.length),a.message,a.serverResponse):null}\nvar ua=\"auth/\",va={\"admin-restricted-operation\":\"This operation is restricted to administrators only.\",\"argument-error\":\"\",\"app-not-authorized\":\"This app, identified by the domain where it's hosted, is not authorized to use Firebase Authentication with the provided API key. Review your key configuration in the Google API console.\",\"app-not-installed\":\"The requested mobile application corresponding to the identifier (Android package name or iOS bundle ID) provided is not installed on this device.\",\n\"captcha-check-failed\":\"The reCAPTCHA response token provided is either invalid, expired, already used or the domain associated with it does not match the list of whitelisted domains.\",\"code-expired\":\"The SMS code has expired. Please re-send the verification code to try again.\",\"cordova-not-ready\":\"Cordova framework is not ready.\",\"cors-unsupported\":\"This browser is not supported.\",\"credential-already-in-use\":\"This credential is already associated with a different user account.\",\"custom-token-mismatch\":\"The custom token corresponds to a different audience.\",\n\"requires-recent-login\":\"This operation is sensitive and requires recent authentication. Log in again before retrying this request.\",\"dynamic-link-not-activated\":\"Please activate Dynamic Links in the Firebase Console and agree to the terms and conditions.\",\"email-change-needs-verification\":\"Multi-factor users must always have a verified email.\",\"email-already-in-use\":\"The email address is already in use by another account.\",\"expired-action-code\":\"The action code has expired. \",\"cancelled-popup-request\":\"This operation has been cancelled due to another conflicting popup being opened.\",\n\"internal-error\":\"An internal error has occurred.\",\"invalid-app-credential\":\"The phone verification request contains an invalid application verifier. The reCAPTCHA token response is either invalid or expired.\",\"invalid-app-id\":\"The mobile app identifier is not registed for the current project.\",\"invalid-user-token\":\"This user's credential isn't valid for this project. This can happen if the user's token has been tampered with, or if the user isn't for the project associated with this API key.\",\"invalid-auth-event\":\"An internal error has occurred.\",\n\"invalid-verification-code\":\"The SMS verification code used to create the phone auth credential is invalid. Please resend the verification code sms and be sure use the verification code provided by the user.\",\"invalid-continue-uri\":\"The continue URL provided in the request is invalid.\",\"invalid-cordova-configuration\":\"The following Cordova plugins must be installed to enable OAuth sign-in: cordova-plugin-buildinfo, cordova-universal-links-plugin, cordova-plugin-browsertab, cordova-plugin-inappbrowser and cordova-plugin-customurlscheme.\",\n\"invalid-custom-token\":\"The custom token format is incorrect. Please check the documentation.\",\"invalid-dynamic-link-domain\":\"The provided dynamic link domain is not configured or authorized for the current project.\",\"invalid-email\":\"The email address is badly formatted.\",\"invalid-api-key\":\"Your API key is invalid, please check you have copied it correctly.\",\"invalid-cert-hash\":\"The SHA-1 certificate hash provided is invalid.\",\"invalid-credential\":\"The supplied auth credential is malformed or has expired.\",\n\"invalid-message-payload\":\"The email template corresponding to this action contains invalid characters in its message. Please fix by going to the Auth email templates section in the Firebase Console.\",\"invalid-multi-factor-session\":\"The request does not contain a valid proof of first factor successful sign-in.\",\"invalid-oauth-provider\":\"EmailAuthProvider is not supported for this operation. This operation only supports OAuth providers.\",\"invalid-oauth-client-id\":\"The OAuth client ID provided is either invalid or does not match the specified API key.\",\n\"unauthorized-domain\":\"This domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.\",\"invalid-action-code\":\"The action code is invalid. This can happen if the code is malformed, expired, or has already been used.\",\"wrong-password\":\"The password is invalid or the user does not have a password.\",\"invalid-persistence-type\":\"The specified persistence type is invalid. It can only be local, session or none.\",\"invalid-phone-number\":\"The format of the phone number provided is incorrect. Please enter the phone number in a format that can be parsed into E.164 format. E.164 phone numbers are written in the format [+][country code][subscriber number including area code].\",\n\"invalid-provider-id\":\"The specified provider ID is invalid.\",\"invalid-recipient-email\":\"The email corresponding to this action failed to send as the provided recipient email address is invalid.\",\"invalid-sender\":\"The email template corresponding to this action contains an invalid sender email or name. Please fix by going to the Auth email templates section in the Firebase Console.\",\"invalid-verification-id\":\"The verification ID used to create the phone auth credential is invalid.\",\"invalid-tenant-id\":\"The Auth instance's tenant ID is invalid.\",\n\"multi-factor-info-not-found\":\"The user does not have a second factor matching the identifier provided.\",\"multi-factor-auth-required\":\"Proof of ownership of a second factor is required to complete sign-in.\",\"missing-android-pkg-name\":\"An Android Package Name must be provided if the Android App is required to be installed.\",\"auth-domain-config-required\":\"Be sure to include authDomain when calling firebase.initializeApp(), by following the instructions in the Firebase console.\",\"missing-app-credential\":\"The phone verification request is missing an application verifier assertion. A reCAPTCHA response token needs to be provided.\",\n\"missing-verification-code\":\"The phone auth credential was created with an empty SMS verification code.\",\"missing-continue-uri\":\"A continue URL must be provided in the request.\",\"missing-iframe-start\":\"An internal error has occurred.\",\"missing-ios-bundle-id\":\"An iOS Bundle ID must be provided if an App Store ID is provided.\",\"missing-multi-factor-info\":\"No second factor identifier is provided.\",\"missing-multi-factor-session\":\"The request is missing proof of first factor successful sign-in.\",\"missing-or-invalid-nonce\":\"The request does not contain a valid nonce. This can occur if the SHA-256 hash of the provided raw nonce does not match the hashed nonce in the ID token payload.\",\n\"missing-phone-number\":\"To send verification codes, provide a phone number for the recipient.\",\"missing-verification-id\":\"The phone auth credential was created with an empty verification ID.\",\"app-deleted\":\"This instance of FirebaseApp has been deleted.\",\"account-exists-with-different-credential\":\"An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address.\",\"network-request-failed\":\"A network error (such as timeout, interrupted connection or unreachable host) has occurred.\",\n\"no-auth-event\":\"An internal error has occurred.\",\"no-such-provider\":\"User was not linked to an account with the given provider.\",\"null-user\":\"A null user object was provided as the argument for an operation which requires a non-null user object.\",\"operation-not-allowed\":\"The given sign-in provider is disabled for this Firebase project. Enable it in the Firebase console, under the sign-in method tab of the Auth section.\",\"operation-not-supported-in-this-environment\":'This operation is not supported in the environment this application is running on. \"location.protocol\" must be http, https or chrome-extension and web storage must be enabled.',\n\"popup-blocked\":\"Unable to establish a connection with the popup. It may have been blocked by the browser.\",\"popup-closed-by-user\":\"The popup has been closed by the user before finalizing the operation.\",\"provider-already-linked\":\"User can only be linked to one identity for the given provider.\",\"quota-exceeded\":\"The project's quota for this operation has been exceeded.\",\"redirect-cancelled-by-user\":\"The redirect operation has been cancelled by the user before finalizing.\",\"redirect-operation-pending\":\"A redirect sign-in operation is already pending.\",\n\"rejected-credential\":\"The request contains malformed or mismatching credentials.\",\"second-factor-already-in-use\":\"The second factor is already enrolled on this account.\",\"maximum-second-factor-count-exceeded\":\"The maximum allowed number of second factors on a user has been exceeded.\",\"tenant-id-mismatch\":\"The provided tenant ID does not match the Auth instance's tenant ID\",timeout:\"The operation has timed out.\",\"user-token-expired\":\"The user's credential is no longer valid. The user must sign in again.\",\n\"too-many-requests\":\"We have blocked all requests from this device due to unusual activity. Try again later.\",\"unauthorized-continue-uri\":\"The domain of the continue URL is not whitelisted. Please whitelist the domain in the Firebase console.\",\"unsupported-first-factor\":\"Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.\",\"unsupported-persistence-type\":\"The current environment does not support the specified persistence type.\",\"unsupported-tenant-operation\":\"This operation is not supported in a multi-tenant context.\",\n\"unverified-email\":\"The operation requires a verified email.\",\"user-cancelled\":\"The user did not grant your application the permissions it requested.\",\"user-not-found\":\"There is no user record corresponding to this identifier. The user may have been deleted.\",\"user-disabled\":\"The user account has been disabled by an administrator.\",\"user-mismatch\":\"The supplied credentials do not correspond to the previously signed in user.\",\"user-signed-out\":\"\",\"weak-password\":\"The password must be 6 characters long or more.\",\n\"web-storage-unsupported\":\"This browser is not supported or 3rd party cookies and data may be disabled.\"};var ya={hd:{Ra:\"https://staging-identitytoolkit.sandbox.googleapis.com/identitytoolkit/v3/relyingparty/\",Xa:\"https://staging-securetoken.sandbox.googleapis.com/v1/token\",Ua:\"https://staging-identitytoolkit.sandbox.googleapis.com/v2/\",id:\"b\"},pd:{Ra:\"https://www.googleapis.com/identitytoolkit/v3/relyingparty/\",Xa:\"https://securetoken.googleapis.com/v1/token\",Ua:\"https://identitytoolkit.googleapis.com/v2/\",id:\"p\"},rd:{Ra:\"https://staging-www.sandbox.googleapis.com/identitytoolkit/v3/relyingparty/\",\nXa:\"https://staging-securetoken.sandbox.googleapis.com/v1/token\",Ua:\"https://staging-identitytoolkit.sandbox.googleapis.com/v2/\",id:\"s\"},sd:{Ra:\"https://www-googleapis-test.sandbox.google.com/identitytoolkit/v3/relyingparty/\",Xa:\"https://test-securetoken.sandbox.googleapis.com/v1/token\",Ua:\"https://test-identitytoolkit.sandbox.googleapis.com/v2/\",id:\"t\"}};\nfunction za(a){for(var b in ya)if(ya[b].id===a)return a=ya[b],{firebaseEndpoint:a.Ra,secureTokenEndpoint:a.Xa,identityPlatformEndpoint:a.Ua};return null}var Aa;Aa=za(\"__EID__\")?\"__EID__\":void 0;function Ba(a){if(!a)return!1;try{return!!a.$goog_Thenable}catch(b){return!1}};function w(a){if(Error.captureStackTrace)Error.captureStackTrace(this,w);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}t(w,Error);w.prototype.name=\"CustomError\";function Ca(a,b){a=a.split(\"%s\");for(var c=\"\",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:\"%s\");w.call(this,c+a[d])}t(Ca,w);Ca.prototype.name=\"AssertionError\";function Da(a,b){throw new Ca(\"Failure\"+(a?\": \"+a:\"\"),Array.prototype.slice.call(arguments,1));};function Ea(a,b){this.c=a;this.f=b;this.b=0;this.a=null}Ea.prototype.get=function(){if(0<this.b){this.b--;var a=this.a;this.a=a.next;a.next=null}else a=this.c();return a};function Fa(a,b){a.f(b);100>a.b&&(a.b++,b.next=a.a,a.a=b)};function Ga(){this.b=this.a=null}var Ia=new Ea(function(){return new Ha},function(a){a.reset()});Ga.prototype.add=function(a,b){var c=Ia.get();c.set(a,b);this.b?this.b.next=c:this.a=c;this.b=c};function Ja(){var a=Ka,b=null;a.a&&(b=a.a,a.a=a.a.next,a.a||(a.b=null),b.next=null);return b}function Ha(){this.next=this.b=this.a=null}Ha.prototype.set=function(a,b){this.a=a;this.b=b;this.next=null};Ha.prototype.reset=function(){this.next=this.b=this.a=null};var La=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},x=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=\"string\"===typeof a?a.split(\"\"):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};\nfunction Ma(a,b){for(var c=\"string\"===typeof a?a.split(\"\"):a,d=a.length-1;0<=d;--d)d in c&&b.call(void 0,c[d],d,a)}\nvar Na=Array.prototype.filter?function(a,b){return Array.prototype.filter.call(a,b,void 0)}:function(a,b){for(var c=a.length,d=[],e=0,f=\"string\"===typeof a?a.split(\"\"):a,g=0;g<c;g++)if(g in f){var h=f[g];b.call(void 0,h,g,a)&&(d[e++]=h)}return d},Oa=Array.prototype.map?function(a,b){return Array.prototype.map.call(a,b,void 0)}:function(a,b){for(var c=a.length,d=Array(c),e=\"string\"===typeof a?a.split(\"\"):a,f=0;f<c;f++)f in e&&(d[f]=b.call(void 0,e[f],f,a));return d},Pa=Array.prototype.some?function(a,\nb){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,d=\"string\"===typeof a?a.split(\"\"):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1};function Qa(a){a:{var b=Ra;for(var c=a.length,d=\"string\"===typeof a?a.split(\"\"):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1}return 0>b?null:\"string\"===typeof a?a.charAt(b):a[b]}function Sa(a,b){return 0<=La(a,b)}\nfunction Ta(a,b){b=La(a,b);var c;(c=0<=b)&&Array.prototype.splice.call(a,b,1);return c}function Ua(a,b){var c=0;Ma(a,function(d,e){b.call(void 0,d,e,a)&&1==Array.prototype.splice.call(a,e,1).length&&c++})}function Va(a){return Array.prototype.concat.apply([],arguments)}function Wa(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};var Xa=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]},Ya=/&/g,Za=/</g,$a=/>/g,ab=/\"/g,bb=/'/g,cb=/\\x00/g,db=/[\\x00&<>\"']/;function y(a,b){return-1!=a.indexOf(b)}function eb(a,b){return a<b?-1:a>b?1:0};var fb;a:{var gb=l.navigator;if(gb){var hb=gb.userAgent;if(hb){fb=hb;break a}}fb=\"\"}function z(a){return y(fb,a)};function ib(a,b){for(var c in a)b.call(void 0,a[c],c,a)}function jb(a){for(var b in a)return!1;return!0}function kb(a){var b={},c;for(c in a)b[c]=a[c];return b}var lb=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");function B(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<lb.length;f++)c=lb[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};function mb(a,b){a:{try{var c=a&&a.ownerDocument,d=c&&(c.defaultView||c.parentWindow);d=d||l;if(d.Element&&d.Location){var e=d;break a}}catch(g){}e=null}if(e&&\"undefined\"!=typeof e[b]&&(!a||!(a instanceof e[b])&&(a instanceof e.Location||a instanceof e.Element))){if(q(a))try{var f=a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(g){f=\"<object could not be stringified>\"}else f=void 0===a?\"undefined\":null===a?\"null\":typeof a;Da(\"Argument is not a %s (or a non-Element, non-Location mock); got: %s\",\nb,f)}};function nb(a,b){this.a=a===ob&&b||\"\";this.b=pb}nb.prototype.ra=!0;nb.prototype.qa=function(){return this.a};nb.prototype.toString=function(){return\"Const{\"+this.a+\"}\"};function qb(a){if(a instanceof nb&&a.constructor===nb&&a.b===pb)return a.a;Da(\"expected object of type Const, got '\"+a+\"'\");return\"type_error:Const\"}var pb={},ob={},rb=new nb(ob,\"\");function sb(a,b){this.a=a===tb&&b||\"\";this.b=ub}sb.prototype.ra=!0;sb.prototype.qa=function(){return this.a.toString()};sb.prototype.toString=function(){return\"TrustedResourceUrl{\"+this.a+\"}\"};function vb(a){if(a instanceof sb&&a.constructor===sb&&a.b===ub)return a.a;Da(\"expected object of type TrustedResourceUrl, got '\"+a+\"' of type \"+la(a));return\"type_error:TrustedResourceUrl\"}\nfunction wb(a,b){var c=qb(a);if(!xb.test(c))throw Error(\"Invalid TrustedResourceUrl format: \"+c);a=c.replace(yb,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, \"'+e+'\", in format string, \"'+c+'\", but no valid label mapping found in args: '+JSON.stringify(b));d=b[e];return d instanceof nb?qb(d):encodeURIComponent(String(d))});return new sb(tb,a)}\nvar yb=/%{(\\w+)}/g,xb=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i,ub={},tb={};function zb(a,b){this.a=a===Ab&&b||\"\";this.b=Bb}zb.prototype.ra=!0;zb.prototype.qa=function(){return this.a.toString()};zb.prototype.toString=function(){return\"SafeUrl{\"+this.a+\"}\"};function Cb(a){if(a instanceof zb&&a.constructor===zb&&a.b===Bb)return a.a;Da(\"expected object of type SafeUrl, got '\"+a+\"' of type \"+la(a));return\"type_error:SafeUrl\"}var Db=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;\nfunction Eb(a){if(a instanceof zb)return a;a=\"object\"==typeof a&&a.ra?a.qa():String(a);Db.test(a)||(a=\"about:invalid#zClosurez\");return new zb(Ab,a)}var Bb={},Ab={};function Fb(){this.a=\"\";this.b=Gb}Fb.prototype.ra=!0;Fb.prototype.qa=function(){return this.a.toString()};Fb.prototype.toString=function(){return\"SafeHtml{\"+this.a+\"}\"};function Hb(a){if(a instanceof Fb&&a.constructor===Fb&&a.b===Gb)return a.a;Da(\"expected object of type SafeHtml, got '\"+a+\"' of type \"+la(a));return\"type_error:SafeHtml\"}var Gb={};function Ib(a){var b=new Fb;b.a=a;return b}Ib(\"<!DOCTYPE html>\");var Jb=Ib(\"\");Ib(\"<br>\");function Kb(a){var b=new sb(tb,qb(rb));mb(a,\"HTMLIFrameElement\");a.src=vb(b).toString()}function Lb(a,b){mb(a,\"HTMLScriptElement\");a.src=vb(b);if(null===ja)b:{b=l.document;if((b=b.querySelector&&b.querySelector(\"script[nonce]\"))&&(b=b.nonce||b.getAttribute(\"nonce\"))&&ia.test(b)){ja=b;break b}ja=\"\"}b=ja;b&&a.setAttribute(\"nonce\",b)};function Mb(a,b){for(var c=a.split(\"%s\"),d=\"\",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join(\"%s\")}function Nb(a){db.test(a)&&(-1!=a.indexOf(\"&\")&&(a=a.replace(Ya,\"&\")),-1!=a.indexOf(\"<\")&&(a=a.replace(Za,\"<\")),-1!=a.indexOf(\">\")&&(a=a.replace($a,\">\")),-1!=a.indexOf('\"')&&(a=a.replace(ab,\""\")),-1!=a.indexOf(\"'\")&&(a=a.replace(bb,\"'\")),-1!=a.indexOf(\"\\x00\")&&(a=a.replace(cb,\"�\")));return a};function Ob(a){Ob[\" \"](a);return a}Ob[\" \"]=ka;function Pb(a,b){var c=Qb;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)};var Rb=z(\"Opera\"),Sb=z(\"Trident\")||z(\"MSIE\"),Tb=z(\"Edge\"),Ub=Tb||Sb,Vb=z(\"Gecko\")&&!(y(fb.toLowerCase(),\"webkit\")&&!z(\"Edge\"))&&!(z(\"Trident\")||z(\"MSIE\"))&&!z(\"Edge\"),Wb=y(fb.toLowerCase(),\"webkit\")&&!z(\"Edge\");function Xb(){var a=l.document;return a?a.documentMode:void 0}var Yb;\na:{var Zb=\"\",$b=function(){var a=fb;if(Vb)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(Tb)return/Edge\\/([\\d\\.]+)/.exec(a);if(Sb)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(Wb)return/WebKit\\/(\\S+)/.exec(a);if(Rb)return/(?:Version)[ \\/]?(\\S+)/.exec(a)}();$b&&(Zb=$b?$b[1]:\"\");if(Sb){var ac=Xb();if(null!=ac&&ac>parseFloat(Zb)){Yb=String(ac);break a}}Yb=Zb}var Qb={};\nfunction bc(a){return Pb(a,function(){for(var b=0,c=Xa(String(Yb)).split(\".\"),d=Xa(String(a)).split(\".\"),e=Math.max(c.length,d.length),f=0;0==b&&f<e;f++){var g=c[f]||\"\",h=d[f]||\"\";do{g=/(\\d*)(\\D*)(.*)/.exec(g)||[\"\",\"\",\"\",\"\"];h=/(\\d*)(\\D*)(.*)/.exec(h)||[\"\",\"\",\"\",\"\"];if(0==g[0].length&&0==h[0].length)break;b=eb(0==g[1].length?0:parseInt(g[1],10),0==h[1].length?0:parseInt(h[1],10))||eb(0==g[2].length,0==h[2].length)||eb(g[2],h[2]);g=g[3];h=h[3]}while(0==b)}return 0<=b})}var cc;\ncc=l.document&&Sb?Xb():void 0;try{(new self.OffscreenCanvas(0,0)).getContext(\"2d\")}catch(a){}var dc=!Sb||9<=Number(cc);function ec(a){var b=document;return\"string\"===typeof a?b.getElementById(a):a}function fc(a,b){ib(b,function(c,d){c&&\"object\"==typeof c&&c.ra&&(c=c.qa());\"style\"==d?a.style.cssText=c:\"class\"==d?a.className=c:\"for\"==d?a.htmlFor=c:gc.hasOwnProperty(d)?a.setAttribute(gc[d],c):0==d.lastIndexOf(\"aria-\",0)||0==d.lastIndexOf(\"data-\",0)?a.setAttribute(d,c):a[d]=c})}\nvar gc={cellpadding:\"cellPadding\",cellspacing:\"cellSpacing\",colspan:\"colSpan\",frameborder:\"frameBorder\",height:\"height\",maxlength:\"maxLength\",nonce:\"nonce\",role:\"role\",rowspan:\"rowSpan\",type:\"type\",usemap:\"useMap\",valign:\"vAlign\",width:\"width\"};\nfunction hc(a,b,c){var d=arguments,e=document,f=String(d[0]),g=d[1];if(!dc&&g&&(g.name||g.type)){f=[\"<\",f];g.name&&f.push(' name=\"',Nb(g.name),'\"');if(g.type){f.push(' type=\"',Nb(g.type),'\"');var h={};B(h,g);delete h.type;g=h}f.push(\">\");f=f.join(\"\")}f=ic(e,f);g&&(\"string\"===typeof g?f.className=g:Array.isArray(g)?f.className=g.join(\" \"):fc(f,g));2<d.length&&jc(e,f,d);return f}\nfunction jc(a,b,c){function d(g){g&&b.appendChild(\"string\"===typeof g?a.createTextNode(g):g)}for(var e=2;e<c.length;e++){var f=c[e];!ma(f)||q(f)&&0<f.nodeType?d(f):x(kc(f)?Wa(f):f,d)}}function ic(a,b){b=String(b);\"application/xhtml+xml\"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)}function kc(a){if(a&&\"number\"==typeof a.length){if(q(a))return\"function\"==typeof a.item||\"string\"==typeof a.item;if(n(a))return\"function\"==typeof a.item}return!1};function lc(a){l.setTimeout(function(){throw a;},0)}var mc;\nfunction nc(){var a=l.MessageChannel;\"undefined\"===typeof a&&\"undefined\"!==typeof window&&window.postMessage&&window.addEventListener&&!z(\"Presto\")&&(a=function(){var e=ic(document,\"IFRAME\");e.style.display=\"none\";Kb(e);document.documentElement.appendChild(e);var f=e.contentWindow;e=f.document;e.open();e.write(Hb(Jb));e.close();var g=\"callImmediate\"+Math.random(),h=\"file:\"==f.location.protocol?\"*\":f.location.protocol+\"//\"+f.location.host;e=r(function(m){if((\"*\"==h||m.origin==h)&&m.data==g)this.port1.onmessage()},\nthis);f.addEventListener(\"message\",e,!1);this.port1={};this.port2={postMessage:function(){f.postMessage(g,h)}}});if(\"undefined\"!==typeof a&&!z(\"Trident\")&&!z(\"MSIE\")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(void 0!==c.next){c=c.next;var e=c.Db;c.Db=null;e()}};return function(e){d.next={Db:e};d=d.next;b.port2.postMessage(0)}}return function(e){l.setTimeout(e,0)}};function oc(a,b){pc||qc();rc||(pc(),rc=!0);Ka.add(a,b)}var pc;function qc(){if(l.Promise&&l.Promise.resolve){var a=l.Promise.resolve(void 0);pc=function(){a.then(sc)}}else pc=function(){var b=sc;!n(l.setImmediate)||l.Window&&l.Window.prototype&&!z(\"Edge\")&&l.Window.prototype.setImmediate==l.setImmediate?(mc||(mc=nc()),mc(b)):l.setImmediate(b)}}var rc=!1,Ka=new Ga;function sc(){for(var a;a=Ja();){try{a.a.call(a.b)}catch(b){lc(b)}Fa(Ia,a)}rc=!1};function D(a,b){this.a=tc;this.i=void 0;this.f=this.b=this.c=null;this.g=this.h=!1;if(a!=ka)try{var c=this;a.call(b,function(d){uc(c,vc,d)},function(d){if(!(d instanceof wc))try{if(d instanceof Error)throw d;throw Error(\"Promise rejected.\");}catch(e){}uc(c,xc,d)})}catch(d){uc(this,xc,d)}}var tc=0,vc=2,xc=3;function yc(){this.next=this.f=this.b=this.g=this.a=null;this.c=!1}yc.prototype.reset=function(){this.f=this.b=this.g=this.a=null;this.c=!1};var zc=new Ea(function(){return new yc},function(a){a.reset()});\nfunction Ac(a,b,c){var d=zc.get();d.g=a;d.b=b;d.f=c;return d}function E(a){if(a instanceof D)return a;var b=new D(ka);uc(b,vc,a);return b}function F(a){return new D(function(b,c){c(a)})}function Bc(a,b,c){Cc(a,b,c,null)||oc(sa(b,a))}function Dc(a){return new D(function(b,c){var d=a.length,e=[];if(d)for(var f=function(p,v){d--;e[p]=v;0==d&&b(e)},g=function(p){c(p)},h=0,m;h<a.length;h++)m=a[h],Bc(m,sa(f,h),g);else b(e)})}\nfunction Ec(a){return new D(function(b){var c=a.length,d=[];if(c)for(var e=function(h,m,p){c--;d[h]=m?{Mb:!0,value:p}:{Mb:!1,reason:p};0==c&&b(d)},f=0,g;f<a.length;f++)g=a[f],Bc(g,sa(e,f,!0),sa(e,f,!1));else b(d)})}D.prototype.then=function(a,b,c){return Fc(this,n(a)?a:null,n(b)?b:null,c)};D.prototype.$goog_Thenable=!0;k=D.prototype;k.ma=function(a,b){a=Ac(a,a,b);a.c=!0;Gc(this,a);return this};k.o=function(a,b){return Fc(this,null,a,b)};\nk.cancel=function(a){if(this.a==tc){var b=new wc(a);oc(function(){Hc(this,b)},this)}};function Hc(a,b){if(a.a==tc)if(a.c){var c=a.c;if(c.b){for(var d=0,e=null,f=null,g=c.b;g&&(g.c||(d++,g.a==a&&(e=g),!(e&&1<d)));g=g.next)e||(f=g);e&&(c.a==tc&&1==d?Hc(c,b):(f?(d=f,d.next==c.f&&(c.f=d),d.next=d.next.next):Ic(c),Jc(c,e,xc,b)))}a.c=null}else uc(a,xc,b)}function Gc(a,b){a.b||a.a!=vc&&a.a!=xc||Kc(a);a.f?a.f.next=b:a.b=b;a.f=b}\nfunction Fc(a,b,c,d){var e=Ac(null,null,null);e.a=new D(function(f,g){e.g=b?function(h){try{var m=b.call(d,h);f(m)}catch(p){g(p)}}:f;e.b=c?function(h){try{var m=c.call(d,h);void 0===m&&h instanceof wc?g(h):f(m)}catch(p){g(p)}}:g});e.a.c=a;Gc(a,e);return e.a}k.Yc=function(a){this.a=tc;uc(this,vc,a)};k.Zc=function(a){this.a=tc;uc(this,xc,a)};\nfunction uc(a,b,c){a.a==tc&&(a===c&&(b=xc,c=new TypeError(\"Promise cannot resolve to itself\")),a.a=1,Cc(c,a.Yc,a.Zc,a)||(a.i=c,a.a=b,a.c=null,Kc(a),b!=xc||c instanceof wc||Lc(a,c)))}function Cc(a,b,c,d){if(a instanceof D)return Gc(a,Ac(b||ka,c||null,d)),!0;if(Ba(a))return a.then(b,c,d),!0;if(q(a))try{var e=a.then;if(n(e))return Mc(a,e,b,c,d),!0}catch(f){return c.call(d,f),!0}return!1}\nfunction Mc(a,b,c,d,e){function f(m){h||(h=!0,d.call(e,m))}function g(m){h||(h=!0,c.call(e,m))}var h=!1;try{b.call(a,g,f)}catch(m){f(m)}}function Kc(a){a.h||(a.h=!0,oc(a.ec,a))}function Ic(a){var b=null;a.b&&(b=a.b,a.b=b.next,b.next=null);a.b||(a.f=null);return b}k.ec=function(){for(var a;a=Ic(this);)Jc(this,a,this.a,this.i);this.h=!1};\nfunction Jc(a,b,c,d){if(c==xc&&b.b&&!b.c)for(;a&&a.g;a=a.c)a.g=!1;if(b.a)b.a.c=null,Nc(b,c,d);else try{b.c?b.g.call(b.f):Nc(b,c,d)}catch(e){Oc.call(null,e)}Fa(zc,b)}function Nc(a,b,c){b==vc?a.g.call(a.f,c):a.b&&a.b.call(a.f,c)}function Lc(a,b){a.g=!0;oc(function(){a.g&&Oc.call(null,b)})}var Oc=lc;function wc(a){w.call(this,a)}t(wc,w);wc.prototype.name=\"cancel\";function Pc(){0!=Qc&&(Rc[na(this)]=this);this.wa=this.wa;this.na=this.na}var Qc=0,Rc={};Pc.prototype.wa=!1;function Sc(a){if(!a.wa&&(a.wa=!0,a.Ba(),0!=Qc)){var b=na(a);if(0!=Qc&&a.na&&0<a.na.length)throw Error(a+\" did not empty its onDisposeCallbacks queue. This probably means it overrode dispose() or disposeInternal() without calling the superclass' method.\");delete Rc[b]}}Pc.prototype.Ba=function(){if(this.na)for(;this.na.length;)this.na.shift()()};var Tc=Object.freeze||function(a){return a};var Uc=!Sb||9<=Number(cc),Vc=Sb&&!bc(\"9\"),Wc=function(){if(!l.addEventListener||!Object.defineProperty)return!1;var a=!1,b=Object.defineProperty({},\"passive\",{get:function(){a=!0}});try{l.addEventListener(\"test\",ka,b),l.removeEventListener(\"test\",ka,b)}catch(c){}return a}();function Xc(a,b){this.type=a;this.b=this.target=b;this.defaultPrevented=!1}Xc.prototype.preventDefault=function(){this.defaultPrevented=!0};function Yc(a,b){Xc.call(this,a?a.type:\"\");this.relatedTarget=this.b=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key=\"\";this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.pointerId=0;this.pointerType=\"\";this.a=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.b=b;if(b=a.relatedTarget){if(Vb){a:{try{Ob(b.nodeName);var e=!0;break a}catch(f){}e=!1}e||(b=null)}}else\"mouseover\"==\nc?b=a.fromElement:\"mouseout\"==c&&(b=a.toElement);this.relatedTarget=b;d?(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.key=a.key||\"\";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=\na.metaKey;this.pointerId=a.pointerId||0;this.pointerType=\"string\"===typeof a.pointerType?a.pointerType:Zc[a.pointerType]||\"\";this.a=a;a.defaultPrevented&&this.preventDefault()}}t(Yc,Xc);var Zc=Tc({2:\"touch\",3:\"pen\",4:\"mouse\"});Yc.prototype.preventDefault=function(){Yc.Za.preventDefault.call(this);var a=this.a;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,Vc)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};Yc.prototype.f=function(){return this.a};var $c=\"closure_listenable_\"+(1E6*Math.random()|0),ad=0;function bd(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.Ta=e;this.key=++ad;this.ua=this.Na=!1}function cd(a){a.ua=!0;a.listener=null;a.proxy=null;a.src=null;a.Ta=null};function dd(a){this.src=a;this.a={};this.b=0}dd.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.a[f];a||(a=this.a[f]=[],this.b++);var g=ed(a,b,d,e);-1<g?(b=a[g],c||(b.Na=!1)):(b=new bd(b,this.src,f,!!d,e),b.Na=c,a.push(b));return b};function fd(a,b){var c=b.type;c in a.a&&Ta(a.a[c],b)&&(cd(b),0==a.a[c].length&&(delete a.a[c],a.b--))}function ed(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.ua&&f.listener==b&&f.capture==!!c&&f.Ta==d)return e}return-1};var gd=\"closure_lm_\"+(1E6*Math.random()|0),hd={},id=0;function jd(a,b,c,d,e){if(d&&d.once)kd(a,b,c,d,e);else if(Array.isArray(b))for(var f=0;f<b.length;f++)jd(a,b[f],c,d,e);else c=ld(c),a&&a[$c]?md(a,b,c,q(d)?!!d.capture:!!d,e):nd(a,b,c,!1,d,e)}\nfunction nd(a,b,c,d,e,f){if(!b)throw Error(\"Invalid event type\");var g=q(e)?!!e.capture:!!e,h=od(a);h||(a[gd]=h=new dd(a));c=h.add(b,c,d,g,f);if(!c.proxy){d=pd();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)Wc||(e=g),void 0===e&&(e=!1),a.addEventListener(b.toString(),d,e);else if(a.attachEvent)a.attachEvent(qd(b.toString()),d);else if(a.addListener&&a.removeListener)a.addListener(d);else throw Error(\"addEventListener and attachEvent are unavailable.\");id++}}\nfunction pd(){var a=rd,b=Uc?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b}function kd(a,b,c,d,e){if(Array.isArray(b))for(var f=0;f<b.length;f++)kd(a,b[f],c,d,e);else c=ld(c),a&&a[$c]?sd(a,b,c,q(d)?!!d.capture:!!d,e):nd(a,b,c,!0,d,e)}\nfunction td(a,b,c,d,e){if(Array.isArray(b))for(var f=0;f<b.length;f++)td(a,b[f],c,d,e);else(d=q(d)?!!d.capture:!!d,c=ld(c),a&&a[$c])?(a=a.u,b=String(b).toString(),b in a.a&&(f=a.a[b],c=ed(f,c,d,e),-1<c&&(cd(f[c]),Array.prototype.splice.call(f,c,1),0==f.length&&(delete a.a[b],a.b--)))):a&&(a=od(a))&&(b=a.a[b.toString()],a=-1,b&&(a=ed(b,c,d,e)),(c=-1<a?b[a]:null)&&vd(c))}\nfunction vd(a){if(\"number\"!==typeof a&&a&&!a.ua){var b=a.src;if(b&&b[$c])fd(b.u,a);else{var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent?b.detachEvent(qd(c),d):b.addListener&&b.removeListener&&b.removeListener(d);id--;(c=od(b))?(fd(c,a),0==c.b&&(c.src=null,b[gd]=null)):cd(a)}}}function qd(a){return a in hd?hd[a]:hd[a]=\"on\"+a}\nfunction wd(a,b,c,d){var e=!0;if(a=od(a))if(b=a.a[b.toString()])for(b=b.concat(),a=0;a<b.length;a++){var f=b[a];f&&f.capture==c&&!f.ua&&(f=xd(f,d),e=e&&!1!==f)}return e}function xd(a,b){var c=a.listener,d=a.Ta||a.src;a.Na&&vd(a);return c.call(d,b)}\nfunction rd(a,b){if(a.ua)return!0;if(!Uc){if(!b)a:{b=[\"window\",\"event\"];for(var c=l,d=0;d<b.length;d++)if(c=c[b[d]],null==c){b=null;break a}b=c}d=b;b=new Yc(d,this);c=!0;if(!(0>d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.b;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.b=d[e];var f=wd(d[e],a,!0,b);c=c&&f}for(e=0;e<d.length;e++)b.b=d[e],f=wd(d[e],a,!1,b),c=c&&f}return c}return xd(a,\nnew Yc(b,this))}function od(a){a=a[gd];return a instanceof dd?a:null}var yd=\"__closure_events_fn_\"+(1E9*Math.random()>>>0);function ld(a){if(n(a))return a;a[yd]||(a[yd]=function(b){return a.handleEvent(b)});return a[yd]};function G(){Pc.call(this);this.u=new dd(this);this.Yb=this;this.eb=null}t(G,Pc);G.prototype[$c]=!0;G.prototype.addEventListener=function(a,b,c,d){jd(this,a,b,c,d)};G.prototype.removeEventListener=function(a,b,c,d){td(this,a,b,c,d)};\nG.prototype.dispatchEvent=function(a){var b,c=this.eb;if(c)for(b=[];c;c=c.eb)b.push(c);c=this.Yb;var d=a.type||a;if(\"string\"===typeof a)a=new Xc(a,c);else if(a instanceof Xc)a.target=a.target||c;else{var e=a;a=new Xc(d,c);B(a,e)}e=!0;if(b)for(var f=b.length-1;0<=f;f--){var g=a.b=b[f];e=zd(g,d,!0,a)&&e}g=a.b=c;e=zd(g,d,!0,a)&&e;e=zd(g,d,!1,a)&&e;if(b)for(f=0;f<b.length;f++)g=a.b=b[f],e=zd(g,d,!1,a)&&e;return e};\nG.prototype.Ba=function(){G.Za.Ba.call(this);if(this.u){var a=this.u,b=0,c;for(c in a.a){for(var d=a.a[c],e=0;e<d.length;e++)++b,cd(d[e]);delete a.a[c];a.b--}}this.eb=null};function md(a,b,c,d,e){a.u.add(String(b),c,!1,d,e)}function sd(a,b,c,d,e){a.u.add(String(b),c,!0,d,e)}\nfunction zd(a,b,c,d){b=a.u.a[String(b)];if(!b)return!0;b=b.concat();for(var e=!0,f=0;f<b.length;++f){var g=b[f];if(g&&!g.ua&&g.capture==c){var h=g.listener,m=g.Ta||g.src;g.Na&&fd(a.u,g);e=!1!==h.call(m,d)&&e}}return e&&!d.defaultPrevented};function Ad(a,b,c){if(n(a))c&&(a=r(a,c));else if(a&&\"function\"==typeof a.handleEvent)a=r(a.handleEvent,a);else throw Error(\"Invalid listener argument\");return 2147483647<Number(b)?-1:l.setTimeout(a,b||0)}function Bd(a){var b=null;return(new D(function(c,d){b=Ad(function(){c(void 0)},a);-1==b&&d(Error(\"Failed to schedule timer.\"))})).o(function(c){l.clearTimeout(b);throw c;})};function Cd(a){if(a.V&&\"function\"==typeof a.V)return a.V();if(\"string\"===typeof a)return a.split(\"\");if(ma(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}b=[];c=0;for(d in a)b[c++]=a[d];return b}function Dd(a){if(a.X&&\"function\"==typeof a.X)return a.X();if(!a.V||\"function\"!=typeof a.V){if(ma(a)||\"string\"===typeof a){var b=[];a=a.length;for(var c=0;c<a;c++)b.push(c);return b}b=[];c=0;for(var d in a)b[c++]=d;return b}}\nfunction Ed(a,b){if(a.forEach&&\"function\"==typeof a.forEach)a.forEach(b,void 0);else if(ma(a)||\"string\"===typeof a)x(a,b,void 0);else for(var c=Dd(a),d=Cd(a),e=d.length,f=0;f<e;f++)b.call(void 0,d[f],c&&c[f],a)};function Fd(a,b){this.b={};this.a=[];this.c=0;var c=arguments.length;if(1<c){if(c%2)throw Error(\"Uneven number of arguments\");for(var d=0;d<c;d+=2)this.set(arguments[d],arguments[d+1])}else if(a)if(a instanceof Fd)for(c=a.X(),d=0;d<c.length;d++)this.set(c[d],a.get(c[d]));else for(d in a)this.set(d,a[d])}k=Fd.prototype;k.V=function(){Gd(this);for(var a=[],b=0;b<this.a.length;b++)a.push(this.b[this.a[b]]);return a};k.X=function(){Gd(this);return this.a.concat()};\nk.clear=function(){this.b={};this.c=this.a.length=0};function Gd(a){if(a.c!=a.a.length){for(var b=0,c=0;b<a.a.length;){var d=a.a[b];Hd(a.b,d)&&(a.a[c++]=d);b++}a.a.length=c}if(a.c!=a.a.length){var e={};for(c=b=0;b<a.a.length;)d=a.a[b],Hd(e,d)||(a.a[c++]=d,e[d]=1),b++;a.a.length=c}}k.get=function(a,b){return Hd(this.b,a)?this.b[a]:b};k.set=function(a,b){Hd(this.b,a)||(this.c++,this.a.push(a));this.b[a]=b};\nk.forEach=function(a,b){for(var c=this.X(),d=0;d<c.length;d++){var e=c[d],f=this.get(e);a.call(b,f,e,this)}};function Hd(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var Id=/^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/\\\\#?]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;function Jd(a,b){if(a){a=a.split(\"&\");for(var c=0;c<a.length;c++){var d=a[c].indexOf(\"=\"),e=null;if(0<=d){var f=a[c].substring(0,d);e=a[c].substring(d+1)}else f=a[c];b(f,e?decodeURIComponent(e.replace(/\\+/g,\" \")):\"\")}}};function Kd(a,b){this.b=this.i=this.f=\"\";this.l=null;this.g=this.c=\"\";this.h=!1;var c;a instanceof Kd?(this.h=void 0!==b?b:a.h,Ld(this,a.f),this.i=a.i,this.b=a.b,Md(this,a.l),this.c=a.c,Nd(this,Od(a.a)),this.g=a.g):a&&(c=String(a).match(Id))?(this.h=!!b,Ld(this,c[1]||\"\",!0),this.i=Pd(c[2]||\"\"),this.b=Pd(c[3]||\"\",!0),Md(this,c[4]),this.c=Pd(c[5]||\"\",!0),Nd(this,c[6]||\"\",!0),this.g=Pd(c[7]||\"\")):(this.h=!!b,this.a=new Qd(null,this.h))}\nKd.prototype.toString=function(){var a=[],b=this.f;b&&a.push(Rd(b,Sd,!0),\":\");var c=this.b;if(c||\"file\"==b)a.push(\"//\"),(b=this.i)&&a.push(Rd(b,Sd,!0),\"@\"),a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),c=this.l,null!=c&&a.push(\":\",String(c));if(c=this.c)this.b&&\"/\"!=c.charAt(0)&&a.push(\"/\"),a.push(Rd(c,\"/\"==c.charAt(0)?Td:Ud,!0));(c=this.a.toString())&&a.push(\"?\",c);(c=this.g)&&a.push(\"#\",Rd(c,Vd));return a.join(\"\")};\nKd.prototype.resolve=function(a){var b=new Kd(this),c=!!a.f;c?Ld(b,a.f):c=!!a.i;c?b.i=a.i:c=!!a.b;c?b.b=a.b:c=null!=a.l;var d=a.c;if(c)Md(b,a.l);else if(c=!!a.c){if(\"/\"!=d.charAt(0))if(this.b&&!this.c)d=\"/\"+d;else{var e=b.c.lastIndexOf(\"/\");-1!=e&&(d=b.c.substr(0,e+1)+d)}e=d;if(\"..\"==e||\".\"==e)d=\"\";else if(y(e,\"./\")||y(e,\"/.\")){d=0==e.lastIndexOf(\"/\",0);e=e.split(\"/\");for(var f=[],g=0;g<e.length;){var h=e[g++];\".\"==h?d&&g==e.length&&f.push(\"\"):\"..\"==h?((1<f.length||1==f.length&&\"\"!=f[0])&&f.pop(),\nd&&g==e.length&&f.push(\"\")):(f.push(h),d=!0)}d=f.join(\"/\")}else d=e}c?b.c=d:c=\"\"!==a.a.toString();c?Nd(b,Od(a.a)):c=!!a.g;c&&(b.g=a.g);return b};function Ld(a,b,c){a.f=c?Pd(b,!0):b;a.f&&(a.f=a.f.replace(/:$/,\"\"))}function Md(a,b){if(b){b=Number(b);if(isNaN(b)||0>b)throw Error(\"Bad port number \"+b);a.l=b}else a.l=null}function Nd(a,b,c){b instanceof Qd?(a.a=b,Wd(a.a,a.h)):(c||(b=Rd(b,Xd)),a.a=new Qd(b,a.h))}function H(a,b,c){a.a.set(b,c)}function Yd(a,b){return a.a.get(b)}\nfunction Zd(a){return a instanceof Kd?new Kd(a):new Kd(a,void 0)}function $d(a,b){var c=new Kd(null,void 0);Ld(c,\"https\");a&&(c.b=a);b&&(c.c=b);return c}function Pd(a,b){return a?b?decodeURI(a.replace(/%25/g,\"%2525\")):decodeURIComponent(a):\"\"}function Rd(a,b,c){return\"string\"===typeof a?(a=encodeURI(a).replace(b,ae),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),a):null}function ae(a){a=a.charCodeAt(0);return\"%\"+(a>>4&15).toString(16)+(a&15).toString(16)}\nvar Sd=/[#\\/\\?@]/g,Ud=/[#\\?:]/g,Td=/[#\\?]/g,Xd=/[#\\?@]/g,Vd=/#/g;function Qd(a,b){this.b=this.a=null;this.c=a||null;this.f=!!b}function be(a){a.a||(a.a=new Fd,a.b=0,a.c&&Jd(a.c,function(b,c){a.add(decodeURIComponent(b.replace(/\\+/g,\" \")),c)}))}function ce(a){var b=Dd(a);if(\"undefined\"==typeof b)throw Error(\"Keys are undefined\");var c=new Qd(null,void 0);a=Cd(a);for(var d=0;d<b.length;d++){var e=b[d],f=a[d];Array.isArray(f)?de(c,e,f):c.add(e,f)}return c}k=Qd.prototype;\nk.add=function(a,b){be(this);this.c=null;a=ee(this,a);var c=this.a.get(a);c||this.a.set(a,c=[]);c.push(b);this.b+=1;return this};function fe(a,b){be(a);b=ee(a,b);Hd(a.a.b,b)&&(a.c=null,a.b-=a.a.get(b).length,a=a.a,Hd(a.b,b)&&(delete a.b[b],a.c--,a.a.length>2*a.c&&Gd(a)))}k.clear=function(){this.a=this.c=null;this.b=0};function ge(a,b){be(a);b=ee(a,b);return Hd(a.a.b,b)}k.forEach=function(a,b){be(this);this.a.forEach(function(c,d){x(c,function(e){a.call(b,e,d,this)},this)},this)};\nk.X=function(){be(this);for(var a=this.a.V(),b=this.a.X(),c=[],d=0;d<b.length;d++)for(var e=a[d],f=0;f<e.length;f++)c.push(b[d]);return c};k.V=function(a){be(this);var b=[];if(\"string\"===typeof a)ge(this,a)&&(b=Va(b,this.a.get(ee(this,a))));else{a=this.a.V();for(var c=0;c<a.length;c++)b=Va(b,a[c])}return b};k.set=function(a,b){be(this);this.c=null;a=ee(this,a);ge(this,a)&&(this.b-=this.a.get(a).length);this.a.set(a,[b]);this.b+=1;return this};\nk.get=function(a,b){if(!a)return b;a=this.V(a);return 0<a.length?String(a[0]):b};function de(a,b,c){fe(a,b);0<c.length&&(a.c=null,a.a.set(ee(a,b),Wa(c)),a.b+=c.length)}k.toString=function(){if(this.c)return this.c;if(!this.a)return\"\";for(var a=[],b=this.a.X(),c=0;c<b.length;c++){var d=b[c],e=encodeURIComponent(String(d));d=this.V(d);for(var f=0;f<d.length;f++){var g=e;\"\"!==d[f]&&(g+=\"=\"+encodeURIComponent(String(d[f])));a.push(g)}}return this.c=a.join(\"&\")};\nfunction Od(a){var b=new Qd;b.c=a.c;a.a&&(b.a=new Fd(a.a),b.b=a.b);return b}function ee(a,b){b=String(b);a.f&&(b=b.toLowerCase());return b}function Wd(a,b){b&&!a.f&&(be(a),a.c=null,a.a.forEach(function(c,d){var e=d.toLowerCase();d!=e&&(fe(this,d),de(this,e,c))},a));a.f=b};function he(a){var b=[];ie(new je,a,b);return b.join(\"\")}function je(){}\nfunction ie(a,b,c){if(null==b)c.push(\"null\");else{if(\"object\"==typeof b){if(Array.isArray(b)){var d=b;b=d.length;c.push(\"[\");for(var e=\"\",f=0;f<b;f++)c.push(e),ie(a,d[f],c),e=\",\";c.push(\"]\");return}if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();else{c.push(\"{\");e=\"\";for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&(f=b[d],\"function\"!=typeof f&&(c.push(e),ke(d,c),c.push(\":\"),ie(a,f,c),e=\",\"));c.push(\"}\");return}}switch(typeof b){case \"string\":ke(b,c);break;case \"number\":c.push(isFinite(b)&&\n!isNaN(b)?String(b):\"null\");break;case \"boolean\":c.push(String(b));break;case \"function\":c.push(\"null\");break;default:throw Error(\"Unknown type: \"+typeof b);}}}var le={'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"/\":\"\\\\/\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\",\"\\x0B\":\"\\\\u000b\"},me=/\\uffff/.test(\"\\uffff\")?/[\\\\\"\\x00-\\x1f\\x7f-\\uffff]/g:/[\\\\\"\\x00-\\x1f\\x7f-\\xff]/g;\nfunction ke(a,b){b.push('\"',a.replace(me,function(c){var d=le[c];d||(d=\"\\\\u\"+(c.charCodeAt(0)|65536).toString(16).substr(1),le[c]=d);return d}),'\"')};function ne(){var a=I();return Sb&&!!cc&&11==cc||/Edge\\/\\d+/.test(a)}function oe(){return l.window&&l.window.location.href||self&&self.location&&self.location.href||\"\"}function pe(a,b){b=b||l.window;var c=\"about:blank\";a&&(c=Cb(Eb(a)));b.location.href=c}function qe(a,b){var c=[],d;for(d in a)d in b?typeof a[d]!=typeof b[d]?c.push(d):\"object\"==typeof a[d]&&null!=a[d]&&null!=b[d]?0<qe(a[d],b[d]).length&&c.push(d):a[d]!==b[d]&&c.push(d):c.push(d);for(d in b)d in a||c.push(d);return c}\nfunction re(){var a=I();a=se(a)!=te?null:(a=a.match(/\\sChrome\\/(\\d+)/i))&&2==a.length?parseInt(a[1],10):null;return a&&30>a?!1:!Sb||!cc||9<cc}function ue(a){a=(a||I()).toLowerCase();return a.match(/android/)||a.match(/webos/)||a.match(/iphone|ipad|ipod/)||a.match(/blackberry/)||a.match(/windows phone/)||a.match(/iemobile/)?!0:!1}function ve(a){a=a||l.window;try{a.close()}catch(b){}}\nfunction we(a,b,c){var d=Math.floor(1E9*Math.random()).toString();b=b||500;c=c||600;var e=(window.screen.availHeight-c)/2,f=(window.screen.availWidth-b)/2;b={width:b,height:c,top:0<e?e:0,left:0<f?f:0,location:!0,resizable:!0,statusbar:!0,toolbar:!1};c=I().toLowerCase();d&&(b.target=d,y(c,\"crios/\")&&(b.target=\"_blank\"));se(I())==xe&&(a=a||\"http://localhost\",b.scrollbars=!0);c=a||\"\";(a=b)||(a={});d=window;b=c instanceof zb?c:Eb(\"undefined\"!=typeof c.href?c.href:String(c));c=a.target||c.target;e=[];\nfor(g in a)switch(g){case \"width\":case \"height\":case \"top\":case \"left\":e.push(g+\"=\"+a[g]);break;case \"target\":case \"noopener\":case \"noreferrer\":break;default:e.push(g+\"=\"+(a[g]?1:0))}var g=e.join(\",\");if((z(\"iPhone\")&&!z(\"iPod\")&&!z(\"iPad\")||z(\"iPad\")||z(\"iPod\"))&&d.navigator&&d.navigator.standalone&&c&&\"_self\"!=c)g=ic(document,\"A\"),mb(g,\"HTMLAnchorElement\"),b instanceof zb||b instanceof zb||(b=\"object\"==typeof b&&b.ra?b.qa():String(b),Db.test(b)||(b=\"about:invalid#zClosurez\"),b=new zb(Ab,b)),g.href=\nCb(b),g.setAttribute(\"target\",c),a.noreferrer&&g.setAttribute(\"rel\",\"noreferrer\"),a=document.createEvent(\"MouseEvent\"),a.initMouseEvent(\"click\",!0,!0,d,1),g.dispatchEvent(a),g={};else if(a.noreferrer){if(g=d.open(\"\",c,g),a=Cb(b),g&&(Ub&&y(a,\";\")&&(a=\"'\"+a.replace(/'/g,\"%27\")+\"'\"),g.opener=null,a=Ib('<meta name=\"referrer\" content=\"no-referrer\"><meta http-equiv=\"refresh\" content=\"0; url='+Nb(a)+'\">'),d=g.document))d.write(Hb(a)),d.close()}else(g=d.open(Cb(b),c,g))&&a.noopener&&(g.opener=null);if(g)try{g.focus()}catch(h){}return g}\nfunction ye(a){return new D(function(b){function c(){Bd(2E3).then(function(){if(!a||a.closed)b();else return c()})}return c()})}var ze=/^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,Ae=/^[^@]+@[^@]+$/;function Be(){var a=null;return(new D(function(b){\"complete\"==l.document.readyState?b():(a=function(){b()},kd(window,\"load\",a))})).o(function(b){td(window,\"load\",a);throw b;})}\nfunction Ce(){return De(void 0)?Be().then(function(){return new D(function(a,b){var c=l.document,d=setTimeout(function(){b(Error(\"Cordova framework is not ready.\"))},1E3);c.addEventListener(\"deviceready\",function(){clearTimeout(d);a()},!1)})}):F(Error(\"Cordova must run in an Android or iOS file scheme.\"))}function De(a){a=a||I();return!(\"file:\"!==Ee()&&\"ionic:\"!==Ee()||!a.toLowerCase().match(/iphone|ipad|ipod|android/))}function Fe(){var a=l.window;try{return!(!a||a==a.top)}catch(b){return!1}}\nfunction Ge(){return\"undefined\"!==typeof l.WorkerGlobalScope&&\"function\"===typeof l.importScripts}function He(){return firebase.INTERNAL.hasOwnProperty(\"reactNative\")?\"ReactNative\":firebase.INTERNAL.hasOwnProperty(\"node\")?\"Node\":Ge()?\"Worker\":\"Browser\"}function Ie(){var a=He();return\"ReactNative\"===a||\"Node\"===a}function Je(){for(var a=50,b=[];0<a;)b.push(\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".charAt(Math.floor(62*Math.random()))),a--;return b.join(\"\")}\nvar xe=\"Firefox\",te=\"Chrome\";\nfunction se(a){var b=a.toLowerCase();if(y(b,\"opera/\")||y(b,\"opr/\")||y(b,\"opios/\"))return\"Opera\";if(y(b,\"iemobile\"))return\"IEMobile\";if(y(b,\"msie\")||y(b,\"trident/\"))return\"IE\";if(y(b,\"edge/\"))return\"Edge\";if(y(b,\"firefox/\"))return xe;if(y(b,\"silk/\"))return\"Silk\";if(y(b,\"blackberry\"))return\"Blackberry\";if(y(b,\"webos\"))return\"Webos\";if(!y(b,\"safari/\")||y(b,\"chrome/\")||y(b,\"crios/\")||y(b,\"android\"))if(!y(b,\"chrome/\")&&!y(b,\"crios/\")||y(b,\"edge/\")){if(y(b,\"android\"))return\"Android\";if((a=a.match(/([a-zA-Z\\d\\.]+)\\/[a-zA-Z\\d\\.]*$/))&&\n2==a.length)return a[1]}else return te;else return\"Safari\";return\"Other\"}var Ke={jd:\"FirebaseCore-web\",ld:\"FirebaseUI-web\"};function Le(a,b){b=b||[];var c=[],d={},e;for(e in Ke)d[Ke[e]]=!0;for(e=0;e<b.length;e++)\"undefined\"!==typeof d[b[e]]&&(delete d[b[e]],c.push(b[e]));c.sort();b=c;b.length||(b=[\"FirebaseCore-web\"]);c=He();\"Browser\"===c?(d=I(),c=se(d)):\"Worker\"===c&&(d=I(),c=se(d)+\"-\"+c);return c+\"/JsCore/\"+a+\"/\"+b.join(\",\")}function I(){return l.navigator&&l.navigator.userAgent||\"\"}\nfunction J(a,b){a=a.split(\".\");b=b||l;for(var c=0;c<a.length&&\"object\"==typeof b&&null!=b;c++)b=b[a[c]];c!=a.length&&(b=void 0);return b}function Me(){try{var a=l.localStorage,b=Ne();if(a)return a.setItem(b,\"1\"),a.removeItem(b),ne()?!!l.indexedDB:!0}catch(c){return Ge()&&!!l.indexedDB}return!1}function Oe(){return(Pe()||\"chrome-extension:\"===Ee()||De())&&!Ie()&&Me()&&!Ge()}function Pe(){return\"http:\"===Ee()||\"https:\"===Ee()}function Ee(){return l.location&&l.location.protocol||null}\nfunction Qe(a){a=a||I();return ue(a)||se(a)==xe?!1:!0}function Re(a){return\"undefined\"===typeof a?null:he(a)}function Se(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&null!==a[c]&&void 0!==a[c]&&(b[c]=a[c]);return b}function Te(a){if(null!==a)return JSON.parse(a)}function Ne(a){return a?a:Math.floor(1E9*Math.random()).toString()}function Ue(a){a=a||I();return\"Safari\"==se(a)||a.toLowerCase().match(/iphone|ipad|ipod/)?!1:!0}\nfunction Ve(){var a=l.___jsl;if(a&&a.H)for(var b in a.H)if(a.H[b].r=a.H[b].r||[],a.H[b].L=a.H[b].L||[],a.H[b].r=a.H[b].L.concat(),a.CP)for(var c=0;c<a.CP.length;c++)a.CP[c]=null}function We(a,b){if(a>b)throw Error(\"Short delay should be less than long delay!\");this.a=a;this.c=b;a=I();b=He();this.b=ue(a)||\"ReactNative\"===b}\nWe.prototype.get=function(){var a=l.navigator;return(a&&\"boolean\"===typeof a.onLine&&(Pe()||\"chrome-extension:\"===Ee()||\"undefined\"!==typeof a.connection)?a.onLine:1)?this.b?this.c:this.a:Math.min(5E3,this.a)};function Xe(){var a=l.document;return a&&\"undefined\"!==typeof a.visibilityState?\"visible\"==a.visibilityState:!0}\nfunction Ye(){var a=l.document,b=null;return Xe()||!a?E():(new D(function(c){b=function(){Xe()&&(a.removeEventListener(\"visibilitychange\",b,!1),c())};a.addEventListener(\"visibilitychange\",b,!1)})).o(function(c){a.removeEventListener(\"visibilitychange\",b,!1);throw c;})}function Ze(a){try{var b=new Date(parseInt(a,10));if(!isNaN(b.getTime())&&!/[^0-9]/.test(a))return b.toUTCString()}catch(c){}return null}function $e(){return!(!J(\"fireauth.oauthhelper\",l)&&!J(\"fireauth.iframe\",l))}\nfunction af(){var a=l.navigator;return a&&a.serviceWorker&&a.serviceWorker.controller||null}function bf(){var a=l.navigator;return a&&a.serviceWorker?E().then(function(){return a.serviceWorker.ready}).then(function(b){return b.active||null}).o(function(){return null}):E(null)};var cf={};function df(a){cf[a]||(cf[a]=!0,\"undefined\"!==typeof console&&\"function\"===typeof console.warn&&console.warn(a))};var ef;try{var ff={};Object.defineProperty(ff,\"abcd\",{configurable:!0,enumerable:!0,value:1});Object.defineProperty(ff,\"abcd\",{configurable:!0,enumerable:!0,value:2});ef=2==ff.abcd}catch(a){ef=!1}function K(a,b,c){ef?Object.defineProperty(a,b,{configurable:!0,enumerable:!0,value:c}):a[b]=c}function L(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&K(a,c,b[c])}function gf(a){var b={};L(b,a);return b}function hf(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}\nfunction jf(a,b){if(!b||!b.length)return!0;if(!a)return!1;for(var c=0;c<b.length;c++){var d=a[b[c]];if(void 0===d||null===d||\"\"===d)return!1}return!0}function kf(a){var b=a;if(\"object\"==typeof a&&null!=a){b=\"length\"in a?[]:{};for(var c in a)K(b,c,kf(a[c]))}return b};/*\n\n Copyright 2019 Google Inc.\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 lf(a){var b=a&&(a[mf]?\"phone\":null);if(b&&a&&a[nf]){K(this,\"uid\",a[nf]);K(this,\"displayName\",a[of]||null);var c=null;a[pf]&&(c=(new Date(a[pf])).toUTCString());K(this,\"enrollmentTime\",c);K(this,\"factorId\",b)}else throw new u(\"internal-error\",\"Internal assert: invalid MultiFactorInfo object\");}lf.prototype.v=function(){return{uid:this.uid,displayName:this.displayName,factorId:this.factorId,enrollmentTime:this.enrollmentTime}};function qf(a){try{var b=new rf(a)}catch(c){b=null}return b}\nvar of=\"displayName\",pf=\"enrolledAt\",nf=\"mfaEnrollmentId\",mf=\"phoneInfo\";function rf(a){lf.call(this,a);K(this,\"phoneNumber\",a[mf])}t(rf,lf);rf.prototype.v=function(){var a=rf.Za.v.call(this);a.phoneNumber=this.phoneNumber;return a};function sf(a){var b={},c=a[tf],d=a[uf],e=a[vf];a=qf(a[wf]);if(!e||e!=xf&&e!=yf&&!c||e==yf&&!d||e==zf&&!a)throw Error(\"Invalid checkActionCode response!\");e==yf?(b[Af]=c||null,b[Bf]=c||null,b[Cf]=d):(b[Af]=d||null,b[Bf]=d||null,b[Cf]=c||null);b[Df]=a||null;K(this,Ef,e);K(this,Ff,kf(b))}\nvar zf=\"REVERT_SECOND_FACTOR_ADDITION\",xf=\"EMAIL_SIGNIN\",yf=\"VERIFY_AND_CHANGE_EMAIL\",tf=\"email\",wf=\"mfaInfo\",uf=\"newEmail\",vf=\"requestType\",Cf=\"email\",Af=\"fromEmail\",Df=\"multiFactorInfo\",Bf=\"previousEmail\",Ff=\"data\",Ef=\"operation\";function Gf(a){a=Zd(a);var b=Yd(a,Hf)||null,c=Yd(a,If)||null,d=Yd(a,Jf)||null;d=d?Kf[d]||null:null;if(!b||!c||!d)throw new u(\"argument-error\",Hf+\", \"+If+\"and \"+Jf+\" are required in a valid action code URL.\");L(this,{apiKey:b,operation:d,code:c,continueUrl:Yd(a,Lf)||null,languageCode:Yd(a,Mf)||null,tenantId:Yd(a,Nf)||null})}\nvar Hf=\"apiKey\",If=\"oobCode\",Lf=\"continueUrl\",Mf=\"languageCode\",Jf=\"mode\",Nf=\"tenantId\",Kf={recoverEmail:\"RECOVER_EMAIL\",resetPassword:\"PASSWORD_RESET\",revertSecondFactorAddition:zf,signIn:xf,verifyAndChangeEmail:yf,verifyEmail:\"VERIFY_EMAIL\"};function Of(a){try{return new Gf(a)}catch(b){return null}};function Pf(a){var b=a[Qf];if(\"undefined\"===typeof b)throw new u(\"missing-continue-uri\");if(\"string\"!==typeof b||\"string\"===typeof b&&!b.length)throw new u(\"invalid-continue-uri\");this.h=b;this.b=this.a=null;this.g=!1;var c=a[Rf];if(c&&\"object\"===typeof c){b=c[Sf];var d=c[Tf];c=c[Uf];if(\"string\"===typeof b&&b.length){this.a=b;if(\"undefined\"!==typeof d&&\"boolean\"!==typeof d)throw new u(\"argument-error\",Tf+\" property must be a boolean when specified.\");this.g=!!d;if(\"undefined\"!==typeof c&&(\"string\"!==\ntypeof c||\"string\"===typeof c&&!c.length))throw new u(\"argument-error\",Uf+\" property must be a non empty string when specified.\");this.b=c||null}else{if(\"undefined\"!==typeof b)throw new u(\"argument-error\",Sf+\" property must be a non empty string when specified.\");if(\"undefined\"!==typeof d||\"undefined\"!==typeof c)throw new u(\"missing-android-pkg-name\");}}else if(\"undefined\"!==typeof c)throw new u(\"argument-error\",Rf+\" property must be a non null object when specified.\");this.f=null;if((b=a[Vf])&&\"object\"===\ntypeof b)if(b=b[Wf],\"string\"===typeof b&&b.length)this.f=b;else{if(\"undefined\"!==typeof b)throw new u(\"argument-error\",Wf+\" property must be a non empty string when specified.\");}else if(\"undefined\"!==typeof b)throw new u(\"argument-error\",Vf+\" property must be a non null object when specified.\");b=a[Xf];if(\"undefined\"!==typeof b&&\"boolean\"!==typeof b)throw new u(\"argument-error\",Xf+\" property must be a boolean when specified.\");this.c=!!b;a=a[Yf];if(\"undefined\"!==typeof a&&(\"string\"!==typeof a||\"string\"===\ntypeof a&&!a.length))throw new u(\"argument-error\",Yf+\" property must be a non empty string when specified.\");this.i=a||null}var Rf=\"android\",Yf=\"dynamicLinkDomain\",Xf=\"handleCodeInApp\",Vf=\"iOS\",Qf=\"url\",Tf=\"installApp\",Uf=\"minimumVersion\",Sf=\"packageName\",Wf=\"bundleId\";\nfunction Zf(a){var b={};b.continueUrl=a.h;b.canHandleCodeInApp=a.c;if(b.androidPackageName=a.a)b.androidMinimumVersion=a.b,b.androidInstallApp=a.g;b.iOSBundleId=a.f;b.dynamicLinkDomain=a.i;for(var c in b)null===b[c]&&delete b[c];return b};function $f(a){return Oa(a,function(b){b=b.toString(16);return 1<b.length?b:\"0\"+b}).join(\"\")};var ag=null;function bg(a){var b=\"\";cg(a,function(c){b+=String.fromCharCode(c)});return b}function cg(a,b){function c(m){for(;d<a.length;){var p=a.charAt(d++),v=ag[p];if(null!=v)return v;if(!/^[\\s\\xa0]*$/.test(p))throw Error(\"Unknown base64 encoding at char: \"+p);}return m}dg();for(var d=0;;){var e=c(-1),f=c(0),g=c(64),h=c(64);if(64===h&&-1===e)break;b(e<<2|f>>4);64!=g&&(b(f<<4&240|g>>2),64!=h&&b(g<<6&192|h))}}\nfunction dg(){if(!ag){ag={};for(var a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\"),b=[\"+/=\",\"+/\",\"-_=\",\"-_.\",\"-_\"],c=0;5>c;c++)for(var d=a.concat(b[c].split(\"\")),e=0;e<d.length;e++){var f=d[e];void 0===ag[f]&&(ag[f]=e)}}};function eg(a){var b=fg(a);if(!(b&&b.sub&&b.iss&&b.aud&&b.exp))throw Error(\"Invalid JWT\");this.g=a;this.c=b.exp;this.h=b.sub;ta();this.a=b.provider_id||b.firebase&&b.firebase.sign_in_provider||null;this.f=b.firebase&&b.firebase.tenant||null;this.b=!!b.is_anonymous||\"anonymous\"==this.a}eg.prototype.S=function(){return this.f};eg.prototype.i=function(){return this.b};eg.prototype.toString=function(){return this.g};function gg(a){try{return new eg(a)}catch(b){return null}}\nfunction fg(a){if(!a)return null;a=a.split(\".\");if(3!=a.length)return null;a=a[1];for(var b=(4-a.length%4)%4,c=0;c<b;c++)a+=\".\";try{return JSON.parse(bg(a))}catch(d){}return null};var hg=\"oauth_consumer_key oauth_nonce oauth_signature oauth_signature_method oauth_timestamp oauth_token oauth_version\".split(\" \"),ig=[\"client_id\",\"response_type\",\"scope\",\"redirect_uri\",\"state\"],jg={kd:{Ha:\"locale\",ta:700,sa:600,ea:\"facebook.com\",Va:ig},md:{Ha:null,ta:500,sa:750,ea:\"github.com\",Va:ig},nd:{Ha:\"hl\",ta:515,sa:680,ea:\"google.com\",Va:ig},td:{Ha:\"lang\",ta:485,sa:705,ea:\"twitter.com\",Va:hg},gd:{Ha:\"locale\",ta:600,sa:600,ea:\"apple.com\",Va:[]}};\nfunction kg(a){for(var b in jg)if(jg[b].ea==a)return jg[b];return null};function lg(a){var b={};b[\"facebook.com\"]=mg;b[\"google.com\"]=ng;b[\"github.com\"]=og;b[\"twitter.com\"]=pg;var c=a&&a[qg];try{if(c)return b[c]?new b[c](a):new rg(a);if(\"undefined\"!==typeof a[sg])return new tg(a)}catch(d){}return null}var sg=\"idToken\",qg=\"providerId\";\nfunction tg(a){var b=a[qg];if(!b&&a[sg]){var c=gg(a[sg]);c&&c.a&&(b=c.a)}if(!b)throw Error(\"Invalid additional user info!\");if(\"anonymous\"==b||\"custom\"==b)b=null;c=!1;\"undefined\"!==typeof a.isNewUser?c=!!a.isNewUser:\"identitytoolkit#SignupNewUserResponse\"===a.kind&&(c=!0);K(this,\"providerId\",b);K(this,\"isNewUser\",c)}function rg(a){tg.call(this,a);a=Te(a.rawUserInfo||\"{}\");K(this,\"profile\",kf(a||{}))}t(rg,tg);\nfunction mg(a){rg.call(this,a);if(\"facebook.com\"!=this.providerId)throw Error(\"Invalid provider ID!\");}t(mg,rg);function og(a){rg.call(this,a);if(\"github.com\"!=this.providerId)throw Error(\"Invalid provider ID!\");K(this,\"username\",this.profile&&this.profile.login||null)}t(og,rg);function ng(a){rg.call(this,a);if(\"google.com\"!=this.providerId)throw Error(\"Invalid provider ID!\");}t(ng,rg);\nfunction pg(a){rg.call(this,a);if(\"twitter.com\"!=this.providerId)throw Error(\"Invalid provider ID!\");K(this,\"username\",a.screenName||null)}t(pg,rg);function ug(a){var b=Zd(a),c=Yd(b,\"link\"),d=Yd(Zd(c),\"link\");b=Yd(b,\"deep_link_id\");return Yd(Zd(b),\"link\")||b||d||c||a};function vg(a,b){if(!a&&!b)throw new u(\"internal-error\",\"Internal assert: no raw session string available\");if(a&&b)throw new u(\"internal-error\",\"Internal assert: unable to determine the session type\");this.a=a||null;this.b=b||null;this.type=this.a?wg:xg}var wg=\"enroll\",xg=\"signin\";vg.prototype.Fa=function(){return this.a?E(this.a):E(this.b)};vg.prototype.v=function(){return this.type==wg?{multiFactorSession:{idToken:this.a}}:{multiFactorSession:{pendingCredential:this.b}}};function yg(){}yg.prototype.ia=function(){};yg.prototype.b=function(){};yg.prototype.c=function(){};yg.prototype.v=function(){};function zg(a,b){return a.then(function(c){if(c[Ag]){var d=gg(c[Ag]);if(!d||b!=d.h)throw new u(\"user-mismatch\");return c}throw new u(\"user-mismatch\");}).o(function(c){throw c&&c.code&&c.code==ua+\"user-not-found\"?new u(\"user-mismatch\"):c;})}\nfunction Bg(a,b){if(b)this.a=b;else throw new u(\"internal-error\",\"failed to construct a credential\");K(this,\"providerId\",a);K(this,\"signInMethod\",a)}Bg.prototype.ia=function(a){return Cg(a,Dg(this))};Bg.prototype.b=function(a,b){var c=Dg(this);c.idToken=b;return Eg(a,c)};Bg.prototype.c=function(a,b){return zg(Fg(a,Dg(this)),b)};function Dg(a){return{pendingToken:a.a,requestUri:\"http://localhost\"}}Bg.prototype.v=function(){return{providerId:this.providerId,signInMethod:this.signInMethod,pendingToken:this.a}};\nfunction Gg(a){if(a&&a.providerId&&a.signInMethod&&0==a.providerId.indexOf(\"saml.\")&&a.pendingToken)try{return new Bg(a.providerId,a.pendingToken)}catch(b){}return null}\nfunction Hg(a,b,c){this.a=null;if(b.idToken||b.accessToken)b.idToken&&K(this,\"idToken\",b.idToken),b.accessToken&&K(this,\"accessToken\",b.accessToken),b.nonce&&!b.pendingToken&&K(this,\"nonce\",b.nonce),b.pendingToken&&(this.a=b.pendingToken);else if(b.oauthToken&&b.oauthTokenSecret)K(this,\"accessToken\",b.oauthToken),K(this,\"secret\",b.oauthTokenSecret);else throw new u(\"internal-error\",\"failed to construct a credential\");K(this,\"providerId\",a);K(this,\"signInMethod\",c)}\nHg.prototype.ia=function(a){return Cg(a,Ig(this))};Hg.prototype.b=function(a,b){var c=Ig(this);c.idToken=b;return Eg(a,c)};Hg.prototype.c=function(a,b){var c=Ig(this);return zg(Fg(a,c),b)};\nfunction Ig(a){var b={};a.idToken&&(b.id_token=a.idToken);a.accessToken&&(b.access_token=a.accessToken);a.secret&&(b.oauth_token_secret=a.secret);b.providerId=a.providerId;a.nonce&&!a.a&&(b.nonce=a.nonce);b={postBody:ce(b).toString(),requestUri:\"http://localhost\"};a.a&&(delete b.postBody,b.pendingToken=a.a);return b}\nHg.prototype.v=function(){var a={providerId:this.providerId,signInMethod:this.signInMethod};this.idToken&&(a.oauthIdToken=this.idToken);this.accessToken&&(a.oauthAccessToken=this.accessToken);this.secret&&(a.oauthTokenSecret=this.secret);this.nonce&&(a.nonce=this.nonce);this.a&&(a.pendingToken=this.a);return a};\nfunction Jg(a){if(a&&a.providerId&&a.signInMethod){var b={idToken:a.oauthIdToken,accessToken:a.oauthTokenSecret?null:a.oauthAccessToken,oauthTokenSecret:a.oauthTokenSecret,oauthToken:a.oauthTokenSecret&&a.oauthAccessToken,nonce:a.nonce,pendingToken:a.pendingToken};try{return new Hg(a.providerId,b,a.signInMethod)}catch(c){}}return null}function Kg(a,b){this.Oc=b||[];L(this,{providerId:a,isOAuthProvider:!0});this.Fb={};this.lb=(kg(a)||{}).Ha||null;this.kb=null}\nKg.prototype.Ia=function(a){this.Fb=kb(a);return this};function Lg(a){if(\"string\"!==typeof a||0!=a.indexOf(\"saml.\"))throw new u(\"argument-error\",'SAML provider IDs must be prefixed with \"saml.\"');Kg.call(this,a,[])}t(Lg,Kg);function M(a){Kg.call(this,a,ig);this.a=[]}t(M,Kg);M.prototype.Aa=function(a){Sa(this.a,a)||this.a.push(a);return this};M.prototype.Nb=function(){return Wa(this.a)};\nM.prototype.credential=function(a,b){var c;q(a)?c={idToken:a.idToken||null,accessToken:a.accessToken||null,nonce:a.rawNonce||null}:c={idToken:a||null,accessToken:b||null};if(!c.idToken&&!c.accessToken)throw new u(\"argument-error\",\"credential failed: must provide the ID token and/or the access token.\");return new Hg(this.providerId,c,this.providerId)};function Mg(){M.call(this,\"facebook.com\")}t(Mg,M);K(Mg,\"PROVIDER_ID\",\"facebook.com\");K(Mg,\"FACEBOOK_SIGN_IN_METHOD\",\"facebook.com\");\nfunction Ng(a){if(!a)throw new u(\"argument-error\",\"credential failed: expected 1 argument (the OAuth access token).\");var b=a;q(a)&&(b=a.accessToken);return(new Mg).credential({accessToken:b})}function Og(){M.call(this,\"github.com\")}t(Og,M);K(Og,\"PROVIDER_ID\",\"github.com\");K(Og,\"GITHUB_SIGN_IN_METHOD\",\"github.com\");\nfunction Pg(a){if(!a)throw new u(\"argument-error\",\"credential failed: expected 1 argument (the OAuth access token).\");var b=a;q(a)&&(b=a.accessToken);return(new Og).credential({accessToken:b})}function Qg(){M.call(this,\"google.com\");this.Aa(\"profile\")}t(Qg,M);K(Qg,\"PROVIDER_ID\",\"google.com\");K(Qg,\"GOOGLE_SIGN_IN_METHOD\",\"google.com\");function Rg(a,b){var c=a;q(a)&&(c=a.idToken,b=a.accessToken);return(new Qg).credential({idToken:c,accessToken:b})}function Sg(){Kg.call(this,\"twitter.com\",hg)}t(Sg,Kg);\nK(Sg,\"PROVIDER_ID\",\"twitter.com\");K(Sg,\"TWITTER_SIGN_IN_METHOD\",\"twitter.com\");function Tg(a,b){var c=a;q(c)||(c={oauthToken:a,oauthTokenSecret:b});if(!c.oauthToken||!c.oauthTokenSecret)throw new u(\"argument-error\",\"credential failed: expected 2 arguments (the OAuth access token and secret).\");return new Hg(\"twitter.com\",c,\"twitter.com\")}\nfunction Ug(a,b,c){this.a=a;this.f=b;K(this,\"providerId\",\"password\");K(this,\"signInMethod\",c===Vg.EMAIL_LINK_SIGN_IN_METHOD?Vg.EMAIL_LINK_SIGN_IN_METHOD:Vg.EMAIL_PASSWORD_SIGN_IN_METHOD)}Ug.prototype.ia=function(a){return this.signInMethod==Vg.EMAIL_LINK_SIGN_IN_METHOD?N(a,Wg,{email:this.a,oobCode:this.f}):N(a,Xg,{email:this.a,password:this.f})};\nUg.prototype.b=function(a,b){return this.signInMethod==Vg.EMAIL_LINK_SIGN_IN_METHOD?N(a,Yg,{idToken:b,email:this.a,oobCode:this.f}):N(a,Zg,{idToken:b,email:this.a,password:this.f})};Ug.prototype.c=function(a,b){return zg(this.ia(a),b)};Ug.prototype.v=function(){return{email:this.a,password:this.f,signInMethod:this.signInMethod}};function $g(a){return a&&a.email&&a.password?new Ug(a.email,a.password,a.signInMethod):null}function Vg(){L(this,{providerId:\"password\",isOAuthProvider:!1})}\nfunction ah(a,b){b=bh(b);if(!b)throw new u(\"argument-error\",\"Invalid email link!\");return new Ug(a,b.code,Vg.EMAIL_LINK_SIGN_IN_METHOD)}function bh(a){a=ug(a);return(a=Of(a))&&a.operation===xf?a:null}L(Vg,{PROVIDER_ID:\"password\"});L(Vg,{EMAIL_LINK_SIGN_IN_METHOD:\"emailLink\"});L(Vg,{EMAIL_PASSWORD_SIGN_IN_METHOD:\"password\"});function ch(a){if(!(a.bb&&a.ab||a.Ja&&a.da))throw new u(\"internal-error\");this.a=a;K(this,\"providerId\",\"phone\");this.ea=\"phone\";K(this,\"signInMethod\",\"phone\")}\nch.prototype.ia=function(a){return a.cb(dh(this))};ch.prototype.b=function(a,b){var c=dh(this);c.idToken=b;return N(a,eh,c)};ch.prototype.c=function(a,b){var c=dh(this);c.operation=\"REAUTH\";a=N(a,fh,c);return zg(a,b)};ch.prototype.v=function(){var a={providerId:\"phone\"};this.a.bb&&(a.verificationId=this.a.bb);this.a.ab&&(a.verificationCode=this.a.ab);this.a.Ja&&(a.temporaryProof=this.a.Ja);this.a.da&&(a.phoneNumber=this.a.da);return a};\nfunction gh(a){if(a&&\"phone\"===a.providerId&&(a.verificationId&&a.verificationCode||a.temporaryProof&&a.phoneNumber)){var b={};x([\"verificationId\",\"verificationCode\",\"temporaryProof\",\"phoneNumber\"],function(c){a[c]&&(b[c]=a[c])});return new ch(b)}return null}function dh(a){return a.a.Ja&&a.a.da?{temporaryProof:a.a.Ja,phoneNumber:a.a.da}:{sessionInfo:a.a.bb,code:a.a.ab}}\nfunction hh(a){try{this.a=a||firebase.auth()}catch(b){throw new u(\"argument-error\",\"Either an instance of firebase.auth.Auth must be passed as an argument to the firebase.auth.PhoneAuthProvider constructor, or the default firebase App instance must be initialized via firebase.initializeApp().\");}L(this,{providerId:\"phone\",isOAuthProvider:!1})}\nhh.prototype.cb=function(a,b){var c=this.a.b;return E(b.verify()).then(function(d){if(\"string\"!==typeof d)throw new u(\"argument-error\",\"An implementation of firebase.auth.ApplicationVerifier.prototype.verify() must return a firebase.Promise that resolves with a string.\");switch(b.type){case \"recaptcha\":var e=q(a)?a.session:null,f=q(a)?a.phoneNumber:a,g;e&&e.type==wg?g=e.Fa().then(function(h){return ih(c,{idToken:h,phoneEnrollmentInfo:{phoneNumber:f,recaptchaToken:d}})}):e&&e.type==xg?g=e.Fa().then(function(h){return jh(c,\n{mfaPendingCredential:h,mfaEnrollmentId:a.multiFactorHint&&a.multiFactorHint.uid||a.multiFactorUid,phoneSignInInfo:{recaptchaToken:d}})}):g=kh(c,{phoneNumber:f,recaptchaToken:d});return g.then(function(h){\"function\"===typeof b.reset&&b.reset();return h},function(h){\"function\"===typeof b.reset&&b.reset();throw h;});default:throw new u(\"argument-error\",'Only firebase.auth.ApplicationVerifiers with type=\"recaptcha\" are currently supported.');}})};\nfunction lh(a,b){if(!a)throw new u(\"missing-verification-id\");if(!b)throw new u(\"missing-verification-code\");return new ch({bb:a,ab:b})}L(hh,{PROVIDER_ID:\"phone\"});L(hh,{PHONE_SIGN_IN_METHOD:\"phone\"});\nfunction mh(a){if(a.temporaryProof&&a.phoneNumber)return new ch({Ja:a.temporaryProof,da:a.phoneNumber});var b=a&&a.providerId;if(!b||\"password\"===b)return null;var c=a&&a.oauthAccessToken,d=a&&a.oauthTokenSecret,e=a&&a.nonce,f=a&&a.oauthIdToken,g=a&&a.pendingToken;try{switch(b){case \"google.com\":return Rg(f,c);case \"facebook.com\":return Ng(c);case \"github.com\":return Pg(c);case \"twitter.com\":return Tg(c,d);default:return c||d||f||g?g?0==b.indexOf(\"saml.\")?new Bg(b,g):new Hg(b,{pendingToken:g,idToken:a.oauthIdToken,\naccessToken:a.oauthAccessToken},b):(new M(b)).credential({idToken:f,accessToken:c,rawNonce:e}):null}}catch(h){return null}}function nh(a){if(!a.isOAuthProvider)throw new u(\"invalid-oauth-provider\");};function oh(a,b,c,d,e,f,g){this.c=a;this.b=b||null;this.g=c||null;this.f=d||null;this.i=f||null;this.h=g||null;this.a=e||null;if(this.g||this.a){if(this.g&&this.a)throw new u(\"invalid-auth-event\");if(this.g&&!this.f)throw new u(\"invalid-auth-event\");}else throw new u(\"invalid-auth-event\");}oh.prototype.getUid=function(){var a=[];a.push(this.c);this.b&&a.push(this.b);this.f&&a.push(this.f);this.h&&a.push(this.h);return a.join(\"-\")};oh.prototype.S=function(){return this.h};\noh.prototype.v=function(){return{type:this.c,eventId:this.b,urlResponse:this.g,sessionId:this.f,postBody:this.i,tenantId:this.h,error:this.a&&this.a.v()}};function ph(a){a=a||{};return a.type?new oh(a.type,a.eventId,a.urlResponse,a.sessionId,a.error&&wa(a.error),a.postBody,a.tenantId):null};/*\n\n Copyright 2018 Google Inc.\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 qh(){this.b=null;this.a=[]}var rh=null;function sh(a){var b=rh;b.a.push(a);b.b||(b.b=function(c){for(var d=0;d<b.a.length;d++)b.a[d](c)},a=J(\"universalLinks.subscribe\",l),\"function\"===typeof a&&a(null,b.b))};function th(a){var b=\"unauthorized-domain\",c=void 0,d=Zd(a);a=d.b;d=d.f;\"chrome-extension\"==d?c=Mb(\"This chrome extension ID (chrome-extension://%s) is not authorized to run this operation. Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.\",a):\"http\"==d||\"https\"==d?c=Mb(\"This domain (%s) is not authorized to run this operation. Add it to the OAuth redirect domains list in the Firebase console -> Auth section -> Sign in method tab.\",a):b=\"operation-not-supported-in-this-environment\";\nu.call(this,b,c)}t(th,u);function uh(a,b,c){u.call(this,a,c);a=b||{};a.Gb&&K(this,\"email\",a.Gb);a.da&&K(this,\"phoneNumber\",a.da);a.credential&&K(this,\"credential\",a.credential);a.Wb&&K(this,\"tenantId\",a.Wb)}t(uh,u);uh.prototype.v=function(){var a={code:this.code,message:this.message};this.email&&(a.email=this.email);this.phoneNumber&&(a.phoneNumber=this.phoneNumber);this.tenantId&&(a.tenantId=this.tenantId);var b=this.credential&&this.credential.v();b&&B(a,b);return a};uh.prototype.toJSON=function(){return this.v()};\nfunction vh(a){if(a.code){var b=a.code||\"\";0==b.indexOf(ua)&&(b=b.substring(ua.length));var c={credential:mh(a),Wb:a.tenantId};if(a.email)c.Gb=a.email;else if(a.phoneNumber)c.da=a.phoneNumber;else if(!c.credential)return new u(b,a.message||void 0);return new uh(b,c,a.message)}return null};function wh(){}wh.prototype.c=null;function xh(a){return a.c||(a.c=a.b())};var yh;function zh(){}t(zh,wh);zh.prototype.a=function(){var a=Ah(this);return a?new ActiveXObject(a):new XMLHttpRequest};zh.prototype.b=function(){var a={};Ah(this)&&(a[0]=!0,a[1]=!0);return a};\nfunction Ah(a){if(!a.f&&\"undefined\"==typeof XMLHttpRequest&&\"undefined\"!=typeof ActiveXObject){for(var b=[\"MSXML2.XMLHTTP.6.0\",\"MSXML2.XMLHTTP.3.0\",\"MSXML2.XMLHTTP\",\"Microsoft.XMLHTTP\"],c=0;c<b.length;c++){var d=b[c];try{return new ActiveXObject(d),a.f=d}catch(e){}}throw Error(\"Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed\");}return a.f}yh=new zh;function Bh(){}t(Bh,wh);Bh.prototype.a=function(){var a=new XMLHttpRequest;if(\"withCredentials\"in a)return a;if(\"undefined\"!=typeof XDomainRequest)return new Ch;throw Error(\"Unsupported browser\");};Bh.prototype.b=function(){return{}};\nfunction Ch(){this.a=new XDomainRequest;this.readyState=0;this.onreadystatechange=null;this.responseType=this.responseText=this.response=\"\";this.status=-1;this.statusText=\"\";this.a.onload=r(this.oc,this);this.a.onerror=r(this.Pb,this);this.a.onprogress=r(this.pc,this);this.a.ontimeout=r(this.tc,this)}k=Ch.prototype;k.open=function(a,b,c){if(null!=c&&!c)throw Error(\"Only async requests are supported.\");this.a.open(a,b)};\nk.send=function(a){if(a)if(\"string\"==typeof a)this.a.send(a);else throw Error(\"Only string data is supported\");else this.a.send()};k.abort=function(){this.a.abort()};k.setRequestHeader=function(){};k.getResponseHeader=function(a){return\"content-type\"==a.toLowerCase()?this.a.contentType:\"\"};k.oc=function(){this.status=200;this.response=this.responseText=this.a.responseText;Dh(this,4)};k.Pb=function(){this.status=500;this.response=this.responseText=\"\";Dh(this,4)};k.tc=function(){this.Pb()};\nk.pc=function(){this.status=200;Dh(this,1)};function Dh(a,b){a.readyState=b;if(a.onreadystatechange)a.onreadystatechange()}k.getAllResponseHeaders=function(){return\"content-type: \"+this.a.contentType};function Eh(a,b,c){this.reset(a,b,c,void 0,void 0)}Eh.prototype.a=null;var Fh=0;Eh.prototype.reset=function(a,b,c,d,e){\"number\"==typeof e||Fh++;d||ta();delete this.a};function Gh(a){this.f=a;this.b=this.c=this.a=null}function Hh(a,b){this.name=a;this.value=b}Hh.prototype.toString=function(){return this.name};var Ih=new Hh(\"SEVERE\",1E3),Jh=new Hh(\"WARNING\",900),Kh=new Hh(\"CONFIG\",700),Lh=new Hh(\"FINE\",500);function Mh(a){if(a.c)return a.c;if(a.a)return Mh(a.a);Da(\"Root logger has no level set.\");return null}Gh.prototype.log=function(a,b,c){if(a.value>=Mh(this).value)for(n(b)&&(b=b()),a=new Eh(a,String(b),this.f),c&&(a.a=c),c=this;c;)c=c.a};var Nh={},Oh=null;\nfunction Ph(a){Oh||(Oh=new Gh(\"\"),Nh[\"\"]=Oh,Oh.c=Kh);var b;if(!(b=Nh[a])){b=new Gh(a);var c=a.lastIndexOf(\".\"),d=a.substr(c+1);c=Ph(a.substr(0,c));c.b||(c.b={});c.b[d]=b;b.a=c;Nh[a]=b}return b};function Qh(a,b){a&&a.log(Lh,b,void 0)};function Rh(a){this.f=a}t(Rh,wh);Rh.prototype.a=function(){return new Sh(this.f)};Rh.prototype.b=function(a){return function(){return a}}({});function Sh(a){G.call(this);this.s=a;this.readyState=Th;this.status=0;this.responseType=this.responseText=this.response=this.statusText=\"\";this.onreadystatechange=null;this.i=new Headers;this.b=null;this.m=\"GET\";this.g=\"\";this.a=!1;this.h=Ph(\"goog.net.FetchXmlHttp\");this.l=this.c=this.f=null}t(Sh,G);var Th=0;k=Sh.prototype;\nk.open=function(a,b){if(this.readyState!=Th)throw this.abort(),Error(\"Error reopening a connection\");this.m=a;this.g=b;this.readyState=1;Uh(this)};k.send=function(a){if(1!=this.readyState)throw this.abort(),Error(\"need to call open() first. \");this.a=!0;var b={headers:this.i,method:this.m,credentials:void 0,cache:void 0};a&&(b.body=a);this.s.fetch(new Request(this.g,b)).then(this.sc.bind(this),this.Sa.bind(this))};\nk.abort=function(){this.response=this.responseText=\"\";this.i=new Headers;this.status=0;this.c&&this.c.cancel(\"Request was aborted.\");1<=this.readyState&&this.a&&4!=this.readyState&&(this.a=!1,Vh(this,!1));this.readyState=Th};\nk.sc=function(a){this.a&&(this.f=a,this.b||(this.b=a.headers,this.readyState=2,Uh(this)),this.a&&(this.readyState=3,Uh(this),this.a&&(\"arraybuffer\"===this.responseType?a.arrayBuffer().then(this.qc.bind(this),this.Sa.bind(this)):\"undefined\"!==typeof l.ReadableStream&&\"body\"in a?(this.response=this.responseText=\"\",this.c=a.body.getReader(),this.l=new TextDecoder,Wh(this)):a.text().then(this.rc.bind(this),this.Sa.bind(this)))))};function Wh(a){a.c.read().then(a.nc.bind(a)).catch(a.Sa.bind(a))}\nk.nc=function(a){if(this.a){var b=this.l.decode(a.value?a.value:new Uint8Array(0),{stream:!a.done});b&&(this.response=this.responseText+=b);a.done?Vh(this,!0):Uh(this);3==this.readyState&&Wh(this)}};k.rc=function(a){this.a&&(this.response=this.responseText=a,Vh(this,!0))};k.qc=function(a){this.a&&(this.response=a,Vh(this,!0))};k.Sa=function(a){var b=this.h;b&&b.log(Jh,\"Failed to fetch url \"+this.g,a instanceof Error?a:Error(a));this.a&&Vh(this,!0)};\nfunction Vh(a,b){b&&a.f&&(a.status=a.f.status,a.statusText=a.f.statusText);a.readyState=4;a.f=null;a.c=null;a.l=null;Uh(a)}k.setRequestHeader=function(a,b){this.i.append(a,b)};k.getResponseHeader=function(a){return this.b?this.b.get(a.toLowerCase())||\"\":((a=this.h)&&a.log(Jh,\"Attempting to get response header but no headers have been received for url: \"+this.g,void 0),\"\")};\nk.getAllResponseHeaders=function(){if(!this.b){var a=this.h;a&&a.log(Jh,\"Attempting to get all response headers but no headers have been received for url: \"+this.g,void 0);return\"\"}a=[];for(var b=this.b.entries(),c=b.next();!c.done;)c=c.value,a.push(c[0]+\": \"+c[1]),c=b.next();return a.join(\"\\r\\n\")};function Uh(a){a.onreadystatechange&&a.onreadystatechange.call(a)};function Xh(a){G.call(this);this.headers=new Fd;this.D=a||null;this.c=!1;this.B=this.a=null;this.h=this.P=this.l=\"\";this.f=this.O=this.i=this.N=!1;this.g=0;this.s=null;this.m=Yh;this.w=this.R=!1}t(Xh,G);var Yh=\"\";Xh.prototype.b=Ph(\"goog.net.XhrIo\");var Zh=/^https?$/i,$h=[\"POST\",\"PUT\"];\nfunction ai(a,b,c,d,e){if(a.a)throw Error(\"[goog.net.XhrIo] Object is active with another request=\"+a.l+\"; newUri=\"+b);c=c?c.toUpperCase():\"GET\";a.l=b;a.h=\"\";a.P=c;a.N=!1;a.c=!0;a.a=a.D?a.D.a():yh.a();a.B=a.D?xh(a.D):xh(yh);a.a.onreadystatechange=r(a.Sb,a);try{Qh(a.b,bi(a,\"Opening Xhr\")),a.O=!0,a.a.open(c,String(b),!0),a.O=!1}catch(g){Qh(a.b,bi(a,\"Error opening Xhr: \"+g.message));ci(a,g);return}b=d||\"\";var f=new Fd(a.headers);e&&Ed(e,function(g,h){f.set(h,g)});e=Qa(f.X());d=l.FormData&&b instanceof\nl.FormData;!Sa($h,c)||e||d||f.set(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\");f.forEach(function(g,h){this.a.setRequestHeader(h,g)},a);a.m&&(a.a.responseType=a.m);\"withCredentials\"in a.a&&a.a.withCredentials!==a.R&&(a.a.withCredentials=a.R);try{di(a),0<a.g&&(a.w=ei(a.a),Qh(a.b,bi(a,\"Will abort after \"+a.g+\"ms if incomplete, xhr2 \"+a.w)),a.w?(a.a.timeout=a.g,a.a.ontimeout=r(a.Ka,a)):a.s=Ad(a.Ka,a.g,a)),Qh(a.b,bi(a,\"Sending request\")),a.i=!0,a.a.send(b),a.i=!1}catch(g){Qh(a.b,\nbi(a,\"Send error: \"+g.message)),ci(a,g)}}function ei(a){return Sb&&bc(9)&&\"number\"===typeof a.timeout&&void 0!==a.ontimeout}function Ra(a){return\"content-type\"==a.toLowerCase()}k=Xh.prototype;k.Ka=function(){\"undefined\"!=typeof ha&&this.a&&(this.h=\"Timed out after \"+this.g+\"ms, aborting\",Qh(this.b,bi(this,this.h)),this.dispatchEvent(\"timeout\"),this.abort(8))};function ci(a,b){a.c=!1;a.a&&(a.f=!0,a.a.abort(),a.f=!1);a.h=b;fi(a);gi(a)}\nfunction fi(a){a.N||(a.N=!0,a.dispatchEvent(\"complete\"),a.dispatchEvent(\"error\"))}k.abort=function(){this.a&&this.c&&(Qh(this.b,bi(this,\"Aborting\")),this.c=!1,this.f=!0,this.a.abort(),this.f=!1,this.dispatchEvent(\"complete\"),this.dispatchEvent(\"abort\"),gi(this))};k.Ba=function(){this.a&&(this.c&&(this.c=!1,this.f=!0,this.a.abort(),this.f=!1),gi(this,!0));Xh.Za.Ba.call(this)};k.Sb=function(){this.wa||(this.O||this.i||this.f?hi(this):this.Hc())};k.Hc=function(){hi(this)};\nfunction hi(a){if(a.c&&\"undefined\"!=typeof ha)if(a.B[1]&&4==ii(a)&&2==ji(a))Qh(a.b,bi(a,\"Local request error detected and ignored\"));else if(a.i&&4==ii(a))Ad(a.Sb,0,a);else if(a.dispatchEvent(\"readystatechange\"),4==ii(a)){Qh(a.b,bi(a,\"Request complete\"));a.c=!1;try{var b=ji(a);a:switch(b){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var c=!0;break a;default:c=!1}var d;if(!(d=c)){var e;if(e=0===b){var f=String(a.l).match(Id)[1]||null;if(!f&&l.self&&l.self.location){var g=l.self.location.protocol;\nf=g.substr(0,g.length-1)}e=!Zh.test(f?f.toLowerCase():\"\")}d=e}if(d)a.dispatchEvent(\"complete\"),a.dispatchEvent(\"success\");else{try{var h=2<ii(a)?a.a.statusText:\"\"}catch(m){Qh(a.b,\"Can not get status: \"+m.message),h=\"\"}a.h=h+\" [\"+ji(a)+\"]\";fi(a)}}finally{gi(a)}}}function gi(a,b){if(a.a){di(a);var c=a.a,d=a.B[0]?ka:null;a.a=null;a.B=null;b||a.dispatchEvent(\"ready\");try{c.onreadystatechange=d}catch(e){(a=a.b)&&a.log(Ih,\"Problem encountered resetting onreadystatechange: \"+e.message,void 0)}}}\nfunction di(a){a.a&&a.w&&(a.a.ontimeout=null);a.s&&(l.clearTimeout(a.s),a.s=null)}function ii(a){return a.a?a.a.readyState:0}function ji(a){try{return 2<ii(a)?a.a.status:-1}catch(b){return-1}}function ki(a){try{return a.a?a.a.responseText:\"\"}catch(b){return Qh(a.b,\"Can not get responseText: \"+b.message),\"\"}}\nk.getResponse=function(){try{if(!this.a)return null;if(\"response\"in this.a)return this.a.response;switch(this.m){case Yh:case \"text\":return this.a.responseText;case \"arraybuffer\":if(\"mozResponseArrayBuffer\"in this.a)return this.a.mozResponseArrayBuffer}var a=this.b;a&&a.log(Ih,\"Response type \"+this.m+\" is not supported on this browser\",void 0);return null}catch(b){return Qh(this.b,\"Can not get response: \"+b.message),null}};function bi(a,b){return b+\" [\"+a.P+\" \"+a.l+\" \"+ji(a)+\"]\"};/*\n Portions of this code are from MochiKit, received by\n The Closure Authors under the MIT license. All other code is Copyright\n 2005-2009 The Closure Authors. All Rights Reserved.\n*/\nfunction li(a){var b=mi;this.g=[];this.w=b;this.s=a||null;this.f=this.a=!1;this.c=void 0;this.u=this.B=this.i=!1;this.h=0;this.b=null;this.l=0}li.prototype.cancel=function(a){if(this.a)this.c instanceof li&&this.c.cancel();else{if(this.b){var b=this.b;delete this.b;a?b.cancel(a):(b.l--,0>=b.l&&b.cancel())}this.w?this.w.call(this.s,this):this.u=!0;this.a||(a=new ni(this),oi(this),pi(this,!1,a))}};li.prototype.m=function(a,b){this.i=!1;pi(this,a,b)};function pi(a,b,c){a.a=!0;a.c=c;a.f=!b;qi(a)}\nfunction oi(a){if(a.a){if(!a.u)throw new ri(a);a.u=!1}}function si(a,b){ti(a,null,b,void 0)}function ti(a,b,c,d){a.g.push([b,c,d]);a.a&&qi(a)}li.prototype.then=function(a,b,c){var d,e,f=new D(function(g,h){d=g;e=h});ti(this,d,function(g){g instanceof ni?f.cancel():e(g)});return f.then(a,b,c)};li.prototype.$goog_Thenable=!0;function ui(a){return Pa(a.g,function(b){return n(b[1])})}\nfunction qi(a){if(a.h&&a.a&&ui(a)){var b=a.h,c=vi[b];c&&(l.clearTimeout(c.a),delete vi[b]);a.h=0}a.b&&(a.b.l--,delete a.b);b=a.c;for(var d=c=!1;a.g.length&&!a.i;){var e=a.g.shift(),f=e[0],g=e[1];e=e[2];if(f=a.f?g:f)try{var h=f.call(e||a.s,b);void 0!==h&&(a.f=a.f&&(h==b||h instanceof Error),a.c=b=h);if(Ba(b)||\"function\"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.i=!0}catch(m){b=m,a.f=!0,ui(a)||(c=!0)}}a.c=b;d&&(h=r(a.m,a,!0),d=r(a.m,a,!1),b instanceof li?(ti(b,h,d),b.B=!0):b.then(h,d));c&&(b=\nnew wi(b),vi[b.a]=b,a.h=b.a)}function ri(){w.call(this)}t(ri,w);ri.prototype.message=\"Deferred has already fired\";ri.prototype.name=\"AlreadyCalledError\";function ni(){w.call(this)}t(ni,w);ni.prototype.message=\"Deferred was canceled\";ni.prototype.name=\"CanceledError\";function wi(a){this.a=l.setTimeout(r(this.c,this),0);this.b=a}wi.prototype.c=function(){delete vi[this.a];throw this.b;};var vi={};function xi(a){var b={},c=b.document||document,d=vb(a).toString(),e=ic(document,\"SCRIPT\"),f={Tb:e,Ka:void 0},g=new li(f),h=null,m=null!=b.timeout?b.timeout:5E3;0<m&&(h=window.setTimeout(function(){yi(e,!0);var p=new zi(Ai,\"Timeout reached for loading script \"+d);oi(g);pi(g,!1,p)},m),f.Ka=h);e.onload=e.onreadystatechange=function(){e.readyState&&\"loaded\"!=e.readyState&&\"complete\"!=e.readyState||(yi(e,b.ud||!1,h),oi(g),pi(g,!0,null))};e.onerror=function(){yi(e,!0,h);var p=new zi(Bi,\"Error while loading script \"+\nd);oi(g);pi(g,!1,p)};f=b.attributes||{};B(f,{type:\"text/javascript\",charset:\"UTF-8\"});fc(e,f);Lb(e,a);Ci(c).appendChild(e);return g}function Ci(a){var b;return(b=(a||document).getElementsByTagName(\"HEAD\"))&&0!=b.length?b[0]:a.documentElement}function mi(){if(this&&this.Tb){var a=this.Tb;a&&\"SCRIPT\"==a.tagName&&yi(a,!0,this.Ka)}}\nfunction yi(a,b,c){null!=c&&l.clearTimeout(c);a.onload=ka;a.onerror=ka;a.onreadystatechange=ka;b&&window.setTimeout(function(){a&&a.parentNode&&a.parentNode.removeChild(a)},0)}var Bi=0,Ai=1;function zi(a,b){var c=\"Jsloader error (code #\"+a+\")\";b&&(c+=\": \"+b);w.call(this,c);this.code=a}t(zi,w);function Di(a){this.f=a}t(Di,wh);Di.prototype.a=function(){return new this.f};Di.prototype.b=function(){return{}};\nfunction Ei(a,b,c){this.c=a;a=b||{};this.u=a.secureTokenEndpoint||\"https://securetoken.googleapis.com/v1/token\";this.m=a.secureTokenTimeout||Fi;this.g=kb(a.secureTokenHeaders||Gi);this.h=a.firebaseEndpoint||\"https://www.googleapis.com/identitytoolkit/v3/relyingparty/\";this.l=a.identityPlatformEndpoint||\"https://identitytoolkit.googleapis.com/v2/\";this.i=a.firebaseTimeout||Hi;this.a=kb(a.firebaseHeaders||Ii);c&&(this.a[\"X-Client-Version\"]=c,this.g[\"X-Client-Version\"]=c);c=\"Node\"==He();c=l.XMLHttpRequest||\nc&&firebase.INTERNAL.node&&firebase.INTERNAL.node.XMLHttpRequest;if(!c&&!Ge())throw new u(\"internal-error\",\"The XMLHttpRequest compatibility library was not found.\");this.f=void 0;Ge()?this.f=new Rh(self):Ie()?this.f=new Di(c):this.f=new Bh;this.b=null}var Ji,Ag=\"idToken\",Fi=new We(3E4,6E4),Gi={\"Content-Type\":\"application/x-www-form-urlencoded\"},Hi=new We(3E4,6E4),Ii={\"Content-Type\":\"application/json\"};function Ki(a,b){b?a.a[\"X-Firebase-Locale\"]=b:delete a.a[\"X-Firebase-Locale\"]}\nfunction Li(a,b){b?(a.a[\"X-Client-Version\"]=b,a.g[\"X-Client-Version\"]=b):(delete a.a[\"X-Client-Version\"],delete a.g[\"X-Client-Version\"])}Ei.prototype.S=function(){return this.b};function Mi(a,b,c,d,e,f,g){re()||Ge()?a=r(a.w,a):(Ji||(Ji=new D(function(h,m){Ni(h,m)})),a=r(a.s,a));a(b,c,d,e,f,g)}\nEi.prototype.w=function(a,b,c,d,e,f){if(Ge()&&(\"undefined\"===typeof l.fetch||\"undefined\"===typeof l.Headers||\"undefined\"===typeof l.Request))throw new u(\"operation-not-supported-in-this-environment\",\"fetch, Headers and Request native APIs or equivalent Polyfills must be available to support HTTP requests from a Worker environment.\");var g=new Xh(this.f);if(f){g.g=Math.max(0,f);var h=setTimeout(function(){g.dispatchEvent(\"timeout\")},f)}md(g,\"complete\",function(){h&&clearTimeout(h);var m=null;try{m=\nJSON.parse(ki(this))||null}catch(p){m=null}b&&b(m)});sd(g,\"ready\",function(){h&&clearTimeout(h);Sc(this)});sd(g,\"timeout\",function(){h&&clearTimeout(h);Sc(this);b&&b(null)});ai(g,a,c,d,e)};var Oi=new nb(ob,\"https://apis.google.com/js/client.js?onload=%{onload}\"),Pi=\"__fcb\"+Math.floor(1E6*Math.random()).toString();\nfunction Ni(a,b){if(((window.gapi||{}).client||{}).request)a();else{l[Pi]=function(){((window.gapi||{}).client||{}).request?a():b(Error(\"CORS_UNSUPPORTED\"))};var c=wb(Oi,{onload:Pi});si(xi(c),function(){b(Error(\"CORS_UNSUPPORTED\"))})}}\nEi.prototype.s=function(a,b,c,d,e){var f=this;Ji.then(function(){window.gapi.client.setApiKey(f.c);var g=window.gapi.auth.getToken();window.gapi.auth.setToken(null);window.gapi.client.request({path:a,method:c,body:d,headers:e,authType:\"none\",callback:function(h){window.gapi.auth.setToken(g);b&&b(h)}})}).o(function(g){b&&b({error:{message:g&&g.message||\"CORS_UNSUPPORTED\"}})})};\nfunction Qi(a,b){return new D(function(c,d){\"refresh_token\"==b.grant_type&&b.refresh_token||\"authorization_code\"==b.grant_type&&b.code?Mi(a,a.u+\"?key=\"+encodeURIComponent(a.c),function(e){e?e.error?d(Ri(e)):e.access_token&&e.refresh_token?c(e):d(new u(\"internal-error\")):d(new u(\"network-request-failed\"))},\"POST\",ce(b).toString(),a.g,a.m.get()):d(new u(\"internal-error\"))})}\nfunction Si(a,b,c,d,e,f,g){var h=Zd(b+c);H(h,\"key\",a.c);g&&H(h,\"cb\",ta().toString());var m=\"GET\"==d;if(m)for(var p in e)e.hasOwnProperty(p)&&H(h,p,e[p]);return new D(function(v,C){Mi(a,h.toString(),function(A){A?A.error?C(Ri(A,f||{})):v(A):C(new u(\"network-request-failed\"))},d,m?void 0:he(Se(e)),a.a,a.i.get())})}function Ti(a){a=a.email;if(\"string\"!==typeof a||!Ae.test(a))throw new u(\"invalid-email\");}function Ui(a){\"email\"in a&&Ti(a)}\nfunction Vi(a,b){return N(a,Wi,{identifier:b,continueUri:Pe()?oe():\"http://localhost\"}).then(function(c){return c.signinMethods||[]})}function Xi(a){return N(a,Yi,{}).then(function(b){return b.authorizedDomains||[]})}function O(a){if(!a[Ag]){if(a.mfaPendingCredential)throw new u(\"multi-factor-auth-required\",null,kb(a));throw new u(\"internal-error\");}}\nfunction Zi(a){if(a.phoneNumber||a.temporaryProof){if(!a.phoneNumber||!a.temporaryProof)throw new u(\"internal-error\");}else{if(!a.sessionInfo)throw new u(\"missing-verification-id\");if(!a.code)throw new u(\"missing-verification-code\");}}Ei.prototype.vb=function(){return N(this,$i,{})};Ei.prototype.xb=function(a,b){return N(this,aj,{idToken:a,email:b})};Ei.prototype.yb=function(a,b){return N(this,Zg,{idToken:a,password:b})};var bj={displayName:\"DISPLAY_NAME\",photoUrl:\"PHOTO_URL\"};k=Ei.prototype;\nk.zb=function(a,b){var c={idToken:a},d=[];ib(bj,function(e,f){var g=b[f];null===g?d.push(e):f in b&&(c[f]=g)});d.length&&(c.deleteAttribute=d);return N(this,aj,c)};k.rb=function(a,b){a={requestType:\"PASSWORD_RESET\",email:a};B(a,b);return N(this,cj,a)};k.sb=function(a,b){a={requestType:\"EMAIL_SIGNIN\",email:a};B(a,b);return N(this,dj,a)};k.qb=function(a,b){a={requestType:\"VERIFY_EMAIL\",idToken:a};B(a,b);return N(this,ej,a)};\nk.Ab=function(a,b,c){a={requestType:\"VERIFY_AND_CHANGE_EMAIL\",idToken:a,newEmail:b};B(a,c);return N(this,fj,a)};function kh(a,b){return N(a,gj,b)}k.cb=function(a){return N(this,hj,a)};function ih(a,b){return N(a,ij,b).then(function(c){return c.phoneSessionInfo.sessionInfo})}\nfunction jj(a){if(!a.phoneVerificationInfo)throw new u(\"internal-error\");if(!a.phoneVerificationInfo.sessionInfo)throw new u(\"missing-verification-id\");if(!a.phoneVerificationInfo.code)throw new u(\"missing-verification-code\");}function jh(a,b){return N(a,kj,b).then(function(c){return c.phoneResponseInfo.sessionInfo})}function lj(a,b,c){return N(a,mj,{idToken:b,deleteProvider:c})}function nj(a){if(!a.requestUri||!a.sessionId&&!a.postBody&&!a.pendingToken)throw new u(\"internal-error\");}\nfunction oj(a,b){b.oauthIdToken&&b.providerId&&0==b.providerId.indexOf(\"oidc.\")&&!b.pendingToken&&(a.sessionId?b.nonce=a.sessionId:a.postBody&&(a=new Qd(a.postBody),ge(a,\"nonce\")&&(b.nonce=a.get(\"nonce\"))));return b}\nfunction pj(a){var b=null;a.needConfirmation?(a.code=\"account-exists-with-different-credential\",b=vh(a)):\"FEDERATED_USER_ID_ALREADY_LINKED\"==a.errorMessage?(a.code=\"credential-already-in-use\",b=vh(a)):\"EMAIL_EXISTS\"==a.errorMessage?(a.code=\"email-already-in-use\",b=vh(a)):a.errorMessage&&(b=qj(a.errorMessage));if(b)throw b;O(a)}function Cg(a,b){b.returnIdpCredential=!0;return N(a,rj,b)}function Eg(a,b){b.returnIdpCredential=!0;return N(a,sj,b)}\nfunction Fg(a,b){b.returnIdpCredential=!0;b.autoCreate=!1;return N(a,tj,b)}function uj(a){if(!a.oobCode)throw new u(\"invalid-action-code\");}k.jb=function(a,b){return N(this,vj,{oobCode:a,newPassword:b})};k.Pa=function(a){return N(this,wj,{oobCode:a})};k.fb=function(a){return N(this,xj,{oobCode:a})};\nvar xj={endpoint:\"setAccountInfo\",A:uj,Y:\"email\",C:!0},wj={endpoint:\"resetPassword\",A:uj,G:function(a){var b=a.requestType;if(!b||!a.email&&\"EMAIL_SIGNIN\"!=b&&\"VERIFY_AND_CHANGE_EMAIL\"!=b)throw new u(\"internal-error\");},C:!0},yj={endpoint:\"signupNewUser\",A:function(a){Ti(a);if(!a.password)throw new u(\"weak-password\");},G:O,U:!0,C:!0},Wi={endpoint:\"createAuthUri\",C:!0},zj={endpoint:\"deleteAccount\",M:[\"idToken\"]},mj={endpoint:\"setAccountInfo\",M:[\"idToken\",\"deleteProvider\"],A:function(a){if(\"array\"!=\nla(a.deleteProvider))throw new u(\"internal-error\");}},Wg={endpoint:\"emailLinkSignin\",M:[\"email\",\"oobCode\"],A:Ti,G:O,U:!0,C:!0},Yg={endpoint:\"emailLinkSignin\",M:[\"idToken\",\"email\",\"oobCode\"],A:Ti,G:O,U:!0},Aj={endpoint:\"accounts/mfaEnrollment:finalize\",M:[\"idToken\",\"phoneVerificationInfo\"],A:jj,G:O,C:!0,La:!0},Bj={endpoint:\"accounts/mfaSignIn:finalize\",M:[\"mfaPendingCredential\",\"phoneVerificationInfo\"],A:jj,G:O,C:!0,La:!0},Cj={endpoint:\"getAccountInfo\"},dj={endpoint:\"getOobConfirmationCode\",M:[\"requestType\"],\nA:function(a){if(\"EMAIL_SIGNIN\"!=a.requestType)throw new u(\"internal-error\");Ti(a)},Y:\"email\",C:!0},ej={endpoint:\"getOobConfirmationCode\",M:[\"idToken\",\"requestType\"],A:function(a){if(\"VERIFY_EMAIL\"!=a.requestType)throw new u(\"internal-error\");},Y:\"email\",C:!0},fj={endpoint:\"getOobConfirmationCode\",M:[\"idToken\",\"newEmail\",\"requestType\"],A:function(a){if(\"VERIFY_AND_CHANGE_EMAIL\"!=a.requestType)throw new u(\"internal-error\");},Y:\"email\",C:!0},cj={endpoint:\"getOobConfirmationCode\",M:[\"requestType\"],A:function(a){if(\"PASSWORD_RESET\"!=\na.requestType)throw new u(\"internal-error\");Ti(a)},Y:\"email\",C:!0},Yi={hb:!0,endpoint:\"getProjectConfig\",Rb:\"GET\"},Dj={hb:!0,endpoint:\"getRecaptchaParam\",Rb:\"GET\",G:function(a){if(!a.recaptchaSiteKey)throw new u(\"internal-error\");}},vj={endpoint:\"resetPassword\",A:uj,Y:\"email\",C:!0},gj={endpoint:\"sendVerificationCode\",M:[\"phoneNumber\",\"recaptchaToken\"],Y:\"sessionInfo\",C:!0},aj={endpoint:\"setAccountInfo\",M:[\"idToken\"],A:Ui,U:!0},Zg={endpoint:\"setAccountInfo\",M:[\"idToken\"],A:function(a){Ui(a);if(!a.password)throw new u(\"weak-password\");\n},G:O,U:!0},$i={endpoint:\"signupNewUser\",G:O,U:!0,C:!0},ij={endpoint:\"accounts/mfaEnrollment:start\",M:[\"idToken\",\"phoneEnrollmentInfo\"],A:function(a){if(!a.phoneEnrollmentInfo)throw new u(\"internal-error\");if(!a.phoneEnrollmentInfo.phoneNumber)throw new u(\"missing-phone-number\");if(!a.phoneEnrollmentInfo.recaptchaToken)throw new u(\"missing-app-credential\");},G:function(a){if(!a.phoneSessionInfo||!a.phoneSessionInfo.sessionInfo)throw new u(\"internal-error\");},C:!0,La:!0},kj={endpoint:\"accounts/mfaSignIn:start\",\nM:[\"mfaPendingCredential\",\"mfaEnrollmentId\",\"phoneSignInInfo\"],A:function(a){if(!a.phoneSignInInfo||!a.phoneSignInInfo.recaptchaToken)throw new u(\"missing-app-credential\");},G:function(a){if(!a.phoneResponseInfo||!a.phoneResponseInfo.sessionInfo)throw new u(\"internal-error\");},C:!0,La:!0},rj={endpoint:\"verifyAssertion\",A:nj,Wa:oj,G:pj,U:!0,C:!0},tj={endpoint:\"verifyAssertion\",A:nj,Wa:oj,G:function(a){if(a.errorMessage&&\"USER_NOT_FOUND\"==a.errorMessage)throw new u(\"user-not-found\");if(a.errorMessage)throw qj(a.errorMessage);\nO(a)},U:!0,C:!0},sj={endpoint:\"verifyAssertion\",A:function(a){nj(a);if(!a.idToken)throw new u(\"internal-error\");},Wa:oj,G:pj,U:!0},Ej={endpoint:\"verifyCustomToken\",A:function(a){if(!a.token)throw new u(\"invalid-custom-token\");},G:O,U:!0,C:!0},Xg={endpoint:\"verifyPassword\",A:function(a){Ti(a);if(!a.password)throw new u(\"wrong-password\");},G:O,U:!0,C:!0},hj={endpoint:\"verifyPhoneNumber\",A:Zi,G:O,C:!0},eh={endpoint:\"verifyPhoneNumber\",A:function(a){if(!a.idToken)throw new u(\"internal-error\");Zi(a)},\nG:function(a){if(a.temporaryProof)throw a.code=\"credential-already-in-use\",vh(a);O(a)}},fh={Eb:{USER_NOT_FOUND:\"user-not-found\"},endpoint:\"verifyPhoneNumber\",A:Zi,G:O,C:!0},Fj={endpoint:\"accounts/mfaEnrollment:withdraw\",M:[\"idToken\",\"mfaEnrollmentId\"],G:function(a){if(!!a[Ag]^!!a.refreshToken)throw new u(\"internal-error\");},C:!0,La:!0};\nfunction N(a,b,c){if(!jf(c,b.M))return F(new u(\"internal-error\"));var d=!!b.La,e=b.Rb||\"POST\",f;return E(c).then(b.A).then(function(){b.U&&(c.returnSecureToken=!0);b.C&&a.b&&\"undefined\"===typeof c.tenantId&&(c.tenantId=a.b);return d?Si(a,a.l,b.endpoint,e,c,b.Eb,b.hb||!1):Si(a,a.h,b.endpoint,e,c,b.Eb,b.hb||!1)}).then(function(g){f=g;return b.Wa?b.Wa(c,f):f}).then(b.G).then(function(){if(!b.Y)return f;if(!(b.Y in f))throw new u(\"internal-error\");return f[b.Y]})}\nfunction qj(a){return Ri({error:{errors:[{message:a}],code:400,message:a}})}\nfunction Ri(a,b){var c=(a.error&&a.error.errors&&a.error.errors[0]||{}).reason||\"\";var d={keyInvalid:\"invalid-api-key\",ipRefererBlocked:\"app-not-authorized\"};if(c=d[c]?new u(d[c]):null)return c;c=a.error&&a.error.message||\"\";d={INVALID_CUSTOM_TOKEN:\"invalid-custom-token\",CREDENTIAL_MISMATCH:\"custom-token-mismatch\",MISSING_CUSTOM_TOKEN:\"internal-error\",INVALID_IDENTIFIER:\"invalid-email\",MISSING_CONTINUE_URI:\"internal-error\",INVALID_EMAIL:\"invalid-email\",INVALID_PASSWORD:\"wrong-password\",USER_DISABLED:\"user-disabled\",\nMISSING_PASSWORD:\"internal-error\",EMAIL_EXISTS:\"email-already-in-use\",PASSWORD_LOGIN_DISABLED:\"operation-not-allowed\",INVALID_IDP_RESPONSE:\"invalid-credential\",INVALID_PENDING_TOKEN:\"invalid-credential\",FEDERATED_USER_ID_ALREADY_LINKED:\"credential-already-in-use\",MISSING_OR_INVALID_NONCE:\"missing-or-invalid-nonce\",INVALID_MESSAGE_PAYLOAD:\"invalid-message-payload\",INVALID_RECIPIENT_EMAIL:\"invalid-recipient-email\",INVALID_SENDER:\"invalid-sender\",EMAIL_NOT_FOUND:\"user-not-found\",RESET_PASSWORD_EXCEED_LIMIT:\"too-many-requests\",\nEXPIRED_OOB_CODE:\"expired-action-code\",INVALID_OOB_CODE:\"invalid-action-code\",MISSING_OOB_CODE:\"internal-error\",INVALID_PROVIDER_ID:\"invalid-provider-id\",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:\"requires-recent-login\",INVALID_ID_TOKEN:\"invalid-user-token\",TOKEN_EXPIRED:\"user-token-expired\",USER_NOT_FOUND:\"user-token-expired\",CORS_UNSUPPORTED:\"cors-unsupported\",DYNAMIC_LINK_NOT_ACTIVATED:\"dynamic-link-not-activated\",INVALID_APP_ID:\"invalid-app-id\",TOO_MANY_ATTEMPTS_TRY_LATER:\"too-many-requests\",WEAK_PASSWORD:\"weak-password\",\nOPERATION_NOT_ALLOWED:\"operation-not-allowed\",USER_CANCELLED:\"user-cancelled\",CAPTCHA_CHECK_FAILED:\"captcha-check-failed\",INVALID_APP_CREDENTIAL:\"invalid-app-credential\",INVALID_CODE:\"invalid-verification-code\",INVALID_PHONE_NUMBER:\"invalid-phone-number\",INVALID_SESSION_INFO:\"invalid-verification-id\",INVALID_TEMPORARY_PROOF:\"invalid-credential\",MISSING_APP_CREDENTIAL:\"missing-app-credential\",MISSING_CODE:\"missing-verification-code\",MISSING_PHONE_NUMBER:\"missing-phone-number\",MISSING_SESSION_INFO:\"missing-verification-id\",\nQUOTA_EXCEEDED:\"quota-exceeded\",SESSION_EXPIRED:\"code-expired\",REJECTED_CREDENTIAL:\"rejected-credential\",INVALID_CONTINUE_URI:\"invalid-continue-uri\",MISSING_ANDROID_PACKAGE_NAME:\"missing-android-pkg-name\",MISSING_IOS_BUNDLE_ID:\"missing-ios-bundle-id\",UNAUTHORIZED_DOMAIN:\"unauthorized-continue-uri\",INVALID_DYNAMIC_LINK_DOMAIN:\"invalid-dynamic-link-domain\",INVALID_OAUTH_CLIENT_ID:\"invalid-oauth-client-id\",INVALID_CERT_HASH:\"invalid-cert-hash\",UNSUPPORTED_TENANT_OPERATION:\"unsupported-tenant-operation\",\nINVALID_TENANT_ID:\"invalid-tenant-id\",TENANT_ID_MISMATCH:\"tenant-id-mismatch\",ADMIN_ONLY_OPERATION:\"admin-restricted-operation\",INVALID_MFA_PENDING_CREDENTIAL:\"invalid-multi-factor-session\",MFA_ENROLLMENT_NOT_FOUND:\"multi-factor-info-not-found\",MISSING_MFA_PENDING_CREDENTIAL:\"missing-multi-factor-session\",MISSING_MFA_ENROLLMENT_ID:\"missing-multi-factor-info\",EMAIL_CHANGE_NEEDS_VERIFICATION:\"email-change-needs-verification\",SECOND_FACTOR_EXISTS:\"second-factor-already-in-use\",SECOND_FACTOR_LIMIT_EXCEEDED:\"maximum-second-factor-count-exceeded\",\nUNSUPPORTED_FIRST_FACTOR:\"unsupported-first-factor\",UNVERIFIED_EMAIL:\"unverified-email\"};B(d,b||{});b=(b=c.match(/^[^\\s]+\\s*:\\s*([\\s\\S]*)$/))&&1<b.length?b[1]:void 0;for(var e in d)if(0===c.indexOf(e))return new u(d[e],b);!b&&a&&(b=Re(a));return new u(\"internal-error\",b)};function Gj(a){this.b=a;this.a=null;this.nb=Hj(this)}\nfunction Hj(a){return Ij().then(function(){return new D(function(b,c){J(\"gapi.iframes.getContext\")().open({where:document.body,url:a.b,messageHandlersFilter:J(\"gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\"),attributes:{style:{position:\"absolute\",top:\"-100px\",width:\"1px\",height:\"1px\"}},dontclear:!0},function(d){function e(){clearTimeout(f);b()}a.a=d;a.a.restyle({setHideOnLeave:!1});var f=setTimeout(function(){c(Error(\"Network Error\"))},Jj.get());d.ping(e).then(e,function(){c(Error(\"Network Error\"))})})})})}\nfunction Kj(a,b){return a.nb.then(function(){return new D(function(c){a.a.send(b.type,b,c,J(\"gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\"))})})}function Lj(a,b){a.nb.then(function(){a.a.register(\"authEvent\",b,J(\"gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\"))})}var Mj=new nb(ob,\"https://apis.google.com/js/api.js?onload=%{onload}\"),Nj=new We(3E4,6E4),Jj=new We(5E3,15E3),Oj=null;\nfunction Ij(){return Oj?Oj:Oj=(new D(function(a,b){function c(){Ve();J(\"gapi.load\")(\"gapi.iframes\",{callback:a,ontimeout:function(){Ve();b(Error(\"Network Error\"))},timeout:Nj.get()})}if(J(\"gapi.iframes.Iframe\"))a();else if(J(\"gapi.load\"))c();else{var d=\"__iframefcb\"+Math.floor(1E6*Math.random()).toString();l[d]=function(){J(\"gapi.load\")?c():b(Error(\"Network Error\"))};d=wb(Mj,{onload:d});E(xi(d)).o(function(){b(Error(\"Network Error\"))})}})).o(function(a){Oj=null;throw a;})};function Pj(a,b,c){this.i=a;this.g=b;this.h=c;this.f=null;this.a=$d(this.i,\"/__/auth/iframe\");H(this.a,\"apiKey\",this.g);H(this.a,\"appName\",this.h);this.b=null;this.c=[]}Pj.prototype.toString=function(){this.f?H(this.a,\"v\",this.f):fe(this.a.a,\"v\");this.b?H(this.a,\"eid\",this.b):fe(this.a.a,\"eid\");this.c.length?H(this.a,\"fw\",this.c.join(\",\")):fe(this.a.a,\"fw\");return this.a.toString()};function Qj(a,b,c,d,e){this.s=a;this.m=b;this.c=c;this.u=d;this.i=this.g=this.l=null;this.a=e;this.h=this.f=null}\nQj.prototype.ub=function(a){this.h=a;return this};\nQj.prototype.toString=function(){var a=$d(this.s,\"/__/auth/handler\");H(a,\"apiKey\",this.m);H(a,\"appName\",this.c);H(a,\"authType\",this.u);if(this.a.isOAuthProvider){var b=this.a;try{var c=firebase.app(this.c).auth().ja()}catch(h){c=null}b.kb=c;H(a,\"providerId\",this.a.providerId);b=this.a;c=Se(b.Fb);for(var d in c)c[d]=c[d].toString();d=b.Oc;c=kb(c);for(var e=0;e<d.length;e++){var f=d[e];f in c&&delete c[f]}b.lb&&b.kb&&!c[b.lb]&&(c[b.lb]=b.kb);jb(c)||H(a,\"customParameters\",Re(c))}\"function\"===typeof this.a.Nb&&\n(b=this.a.Nb(),b.length&&H(a,\"scopes\",b.join(\",\")));this.l?H(a,\"redirectUrl\",this.l):fe(a.a,\"redirectUrl\");this.g?H(a,\"eventId\",this.g):fe(a.a,\"eventId\");this.i?H(a,\"v\",this.i):fe(a.a,\"v\");if(this.b)for(var g in this.b)this.b.hasOwnProperty(g)&&!Yd(a,g)&&H(a,g,this.b[g]);this.h?H(a,\"tid\",this.h):fe(a.a,\"tid\");this.f?H(a,\"eid\",this.f):fe(a.a,\"eid\");g=Rj(this.c);g.length&&H(a,\"fw\",g.join(\",\"));return a.toString()};function Rj(a){try{return firebase.app(a).auth().Ea()}catch(b){return[]}}\nfunction Sj(a,b,c,d,e){this.u=a;this.f=b;this.b=c;this.c=d||null;this.h=e||null;this.m=this.s=this.w=null;this.g=[];this.l=this.a=null}\nfunction Tj(a){var b=oe();return Xi(a).then(function(c){a:{var d=Zd(b),e=d.f;d=d.b;for(var f=0;f<c.length;f++){var g=c[f];var h=d;var m=e;0==g.indexOf(\"chrome-extension://\")?h=Zd(g).b==h&&\"chrome-extension\"==m:\"http\"!=m&&\"https\"!=m?h=!1:ze.test(g)?h=h==g:(g=g.split(\".\").join(\"\\\\.\"),h=(new RegExp(\"^(.+\\\\.\"+g+\"|\"+g+\")$\",\"i\")).test(h));if(h){c=!0;break a}}c=!1}if(!c)throw new th(oe());})}\nfunction Uj(a){if(a.l)return a.l;a.l=Be().then(function(){if(!a.s){var b=a.c,c=a.h,d=Rj(a.b),e=new Pj(a.u,a.f,a.b);e.f=b;e.b=c;e.c=Wa(d||[]);a.s=e.toString()}a.i=new Gj(a.s);Vj(a)});return a.l}k=Sj.prototype;k.Lb=function(a,b,c){var d=new u(\"popup-closed-by-user\"),e=new u(\"web-storage-unsupported\"),f=this,g=!1;return this.ka().then(function(){Wj(f).then(function(h){h||(a&&ve(a),b(e),g=!0)})}).o(function(){}).then(function(){if(!g)return ye(a)}).then(function(){if(!g)return Bd(c).then(function(){b(d)})})};\nk.Ub=function(){var a=I();return!Qe(a)&&!Ue(a)};k.Qb=function(){return!1};\nk.Jb=function(a,b,c,d,e,f,g,h){if(!a)return F(new u(\"popup-blocked\"));if(g&&!Qe())return this.ka().o(function(p){ve(a);e(p)}),d(),E();this.a||(this.a=Tj(Xj(this)));var m=this;return this.a.then(function(){var p=m.ka().o(function(v){ve(a);e(v);throw v;});d();return p}).then(function(){nh(c);if(!g){var p=Yj(m.u,m.f,m.b,b,c,null,f,m.c,void 0,m.h,h);pe(p,a)}}).o(function(p){\"auth/network-request-failed\"==p.code&&(m.a=null);throw p;})};\nfunction Xj(a){a.m||(a.w=a.c?Le(a.c,Rj(a.b)):null,a.m=new Ei(a.f,za(a.h),a.w));return a.m}k.Kb=function(a,b,c,d){this.a||(this.a=Tj(Xj(this)));var e=this;return this.a.then(function(){nh(b);var f=Yj(e.u,e.f,e.b,a,b,oe(),c,e.c,void 0,e.h,d);pe(f)}).o(function(f){\"auth/network-request-failed\"==f.code&&(e.a=null);throw f;})};k.ka=function(){var a=this;return Uj(this).then(function(){return a.i.nb}).o(function(){a.a=null;throw new u(\"network-request-failed\");})};k.Xb=function(){return!0};\nfunction Yj(a,b,c,d,e,f,g,h,m,p,v){a=new Qj(a,b,c,d,e);a.l=f;a.g=g;a.i=h;a.b=kb(m||null);a.f=p;return a.ub(v).toString()}function Vj(a){if(!a.i)throw Error(\"IfcHandler must be initialized!\");Lj(a.i,function(b){var c={};if(b&&b.authEvent){var d=!1;b=ph(b.authEvent);for(c=0;c<a.g.length;c++)d=a.g[c](b)||d;c={};c.status=d?\"ACK\":\"ERROR\";return E(c)}c.status=\"ERROR\";return E(c)})}\nfunction Wj(a){var b={type:\"webStorageSupport\"};return Uj(a).then(function(){return Kj(a.i,b)}).then(function(c){if(c&&c.length&&\"undefined\"!==typeof c[0].webStorageSupport)return c[0].webStorageSupport;throw Error();})}k.Ca=function(a){this.g.push(a)};k.Qa=function(a){Ua(this.g,function(b){return b==a})};function Zj(a){this.a=a||firebase.INTERNAL.reactNative&&firebase.INTERNAL.reactNative.AsyncStorage;if(!this.a)throw new u(\"internal-error\",\"The React Native compatibility library was not found.\");this.type=\"asyncStorage\"}k=Zj.prototype;k.get=function(a){return E(this.a.getItem(a)).then(function(b){return b&&Te(b)})};k.set=function(a,b){return E(this.a.setItem(a,Re(b)))};k.T=function(a){return E(this.a.removeItem(a))};k.ba=function(){};k.ha=function(){};function ak(a){this.b=a;this.a={};this.f=r(this.c,this)}var bk=[];function ck(){var a=Ge()?self:null;x(bk,function(c){c.b==a&&(b=c)});if(!b){var b=new ak(a);bk.push(b)}return b}\nak.prototype.c=function(a){var b=a.data.eventType,c=a.data.eventId,d=this.a[b];if(d&&0<d.length){a.ports[0].postMessage({status:\"ack\",eventId:c,eventType:b,response:null});var e=[];x(d,function(f){e.push(E().then(function(){return f(a.origin,a.data.data)}))});Ec(e).then(function(f){var g=[];x(f,function(h){g.push({fulfilled:h.Mb,value:h.value,reason:h.reason?h.reason.message:void 0})});x(g,function(h){for(var m in h)\"undefined\"===typeof h[m]&&delete h[m]});a.ports[0].postMessage({status:\"done\",eventId:c,\neventType:b,response:g})})}};function dk(a,b,c){jb(a.a)&&a.b.addEventListener(\"message\",a.f);\"undefined\"===typeof a.a[b]&&(a.a[b]=[]);a.a[b].push(c)};function ek(a){this.a=a}ek.prototype.postMessage=function(a,b){this.a.postMessage(a,b)};function fk(a){this.c=a;this.b=!1;this.a=[]}\nfunction gk(a,b,c,d){var e,f=c||{},g,h,m,p=null;if(a.b)return F(Error(\"connection_unavailable\"));var v=d?800:50,C=\"undefined\"!==typeof MessageChannel?new MessageChannel:null;return(new D(function(A,Q){C?(e=Math.floor(Math.random()*Math.pow(10,20)).toString(),C.port1.start(),h=setTimeout(function(){Q(Error(\"unsupported_event\"))},v),g=function(xa){xa.data.eventId===e&&(\"ack\"===xa.data.status?(clearTimeout(h),m=setTimeout(function(){Q(Error(\"timeout\"))},3E3)):\"done\"===xa.data.status?(clearTimeout(m),\n\"undefined\"!==typeof xa.data.response?A(xa.data.response):Q(Error(\"unknown_error\"))):(clearTimeout(h),clearTimeout(m),Q(Error(\"invalid_response\"))))},p={messageChannel:C,onMessage:g},a.a.push(p),C.port1.addEventListener(\"message\",g),a.c.postMessage({eventType:b,eventId:e,data:f},[C.port2])):Q(Error(\"connection_unavailable\"))})).then(function(A){hk(a,p);return A}).o(function(A){hk(a,p);throw A;})}\nfunction hk(a,b){if(b){var c=b.messageChannel,d=b.onMessage;c&&(c.port1.removeEventListener(\"message\",d),c.port1.close());Ua(a.a,function(e){return e==b})}}fk.prototype.close=function(){for(;0<this.a.length;)hk(this,this.a[0]);this.b=!0};function ik(){if(!jk())throw new u(\"web-storage-unsupported\");this.c={};this.a=[];this.b=0;this.u=l.indexedDB;this.type=\"indexedDB\";this.g=this.l=this.f=this.i=null;this.s=!1;this.h=null;var a=this;Ge()&&self?(this.l=ck(),dk(this.l,\"keyChanged\",function(b,c){return kk(a).then(function(d){0<d.length&&x(a.a,function(e){e(d)});return{keyProcessed:Sa(d,c.key)}})}),dk(this.l,\"ping\",function(){return E([\"keyChanged\"])})):bf().then(function(b){if(a.h=b)a.g=new fk(new ek(b)),gk(a.g,\"ping\",null,!0).then(function(c){c[0].fulfilled&&\nSa(c[0].value,\"keyChanged\")&&(a.s=!0)}).o(function(){})})}var lk;function mk(a){return new D(function(b,c){var d=a.u.deleteDatabase(\"firebaseLocalStorageDb\");d.onsuccess=function(){b()};d.onerror=function(e){c(Error(e.target.error))}})}\nfunction nk(a){return new D(function(b,c){var d=a.u.open(\"firebaseLocalStorageDb\",1);d.onerror=function(e){try{e.preventDefault()}catch(f){}c(Error(e.target.error))};d.onupgradeneeded=function(e){e=e.target.result;try{e.createObjectStore(\"firebaseLocalStorage\",{keyPath:\"fbase_key\"})}catch(f){c(f)}};d.onsuccess=function(e){e=e.target.result;e.objectStoreNames.contains(\"firebaseLocalStorage\")?b(e):mk(a).then(function(){return nk(a)}).then(function(f){b(f)}).o(function(f){c(f)})}})}\nfunction ok(a){a.m||(a.m=nk(a));return a.m}function jk(){try{return!!l.indexedDB}catch(a){return!1}}function pk(a){return a.objectStore(\"firebaseLocalStorage\")}function qk(a,b){return a.transaction([\"firebaseLocalStorage\"],b?\"readwrite\":\"readonly\")}function rk(a){return new D(function(b,c){a.onsuccess=function(d){d&&d.target?b(d.target.result):b()};a.onerror=function(d){c(d.target.error)}})}k=ik.prototype;\nk.set=function(a,b){var c=!1,d,e=this;return ok(this).then(function(f){d=f;f=pk(qk(d,!0));return rk(f.get(a))}).then(function(f){var g=pk(qk(d,!0));if(f)return f.value=b,rk(g.put(f));e.b++;c=!0;f={};f.fbase_key=a;f.value=b;return rk(g.add(f))}).then(function(){e.c[a]=b;return sk(e,a)}).ma(function(){c&&e.b--})};function sk(a,b){return a.g&&a.h&&af()===a.h?gk(a.g,\"keyChanged\",{key:b},a.s).then(function(){}).o(function(){}):E()}\nk.get=function(a){return ok(this).then(function(b){return rk(pk(qk(b,!1)).get(a))}).then(function(b){return b&&b.value})};k.T=function(a){var b=!1,c=this;return ok(this).then(function(d){b=!0;c.b++;return rk(pk(qk(d,!0))[\"delete\"](a))}).then(function(){delete c.c[a];return sk(c,a)}).ma(function(){b&&c.b--})};\nfunction kk(a){return ok(a).then(function(b){var c=pk(qk(b,!1));return c.getAll?rk(c.getAll()):new D(function(d,e){var f=[],g=c.openCursor();g.onsuccess=function(h){(h=h.target.result)?(f.push(h.value),h[\"continue\"]()):d(f)};g.onerror=function(h){e(h.target.error)}})}).then(function(b){var c={},d=[];if(0==a.b){for(d=0;d<b.length;d++)c[b[d].fbase_key]=b[d].value;d=qe(a.c,c);a.c=c}return d})}k.ba=function(a){0==this.a.length&&tk(this);this.a.push(a)};\nk.ha=function(a){Ua(this.a,function(b){return b==a});0==this.a.length&&uk(this)};function tk(a){function b(){a.f=setTimeout(function(){a.i=kk(a).then(function(c){0<c.length&&x(a.a,function(d){d(c)})}).then(function(){b()}).o(function(c){\"STOP_EVENT\"!=c.message&&b()})},800)}uk(a);b()}function uk(a){a.i&&a.i.cancel(\"STOP_EVENT\");a.f&&(clearTimeout(a.f),a.f=null)};function vk(a){var b=this,c=null;this.a=[];this.type=\"indexedDB\";this.c=a;this.b=E().then(function(){if(jk()){var d=Ne(),e=\"__sak\"+d;lk||(lk=new ik);c=lk;return c.set(e,d).then(function(){return c.get(e)}).then(function(f){if(f!==d)throw Error(\"indexedDB not supported!\");return c.T(e)}).then(function(){return c}).o(function(){return b.c})}return b.c}).then(function(d){b.type=d.type;d.ba(function(e){x(b.a,function(f){f(e)})});return d})}k=vk.prototype;k.get=function(a){return this.b.then(function(b){return b.get(a)})};\nk.set=function(a,b){return this.b.then(function(c){return c.set(a,b)})};k.T=function(a){return this.b.then(function(b){return b.T(a)})};k.ba=function(a){this.a.push(a)};k.ha=function(a){Ua(this.a,function(b){return b==a})};function wk(){this.a={};this.type=\"inMemory\"}k=wk.prototype;k.get=function(a){return E(this.a[a])};k.set=function(a,b){this.a[a]=b;return E()};k.T=function(a){delete this.a[a];return E()};k.ba=function(){};k.ha=function(){};function xk(){if(!yk()){if(\"Node\"==He())throw new u(\"internal-error\",\"The LocalStorage compatibility library was not found.\");throw new u(\"web-storage-unsupported\");}this.a=zk()||firebase.INTERNAL.node.localStorage;this.type=\"localStorage\"}function zk(){try{var a=l.localStorage,b=Ne();a&&(a.setItem(b,\"1\"),a.removeItem(b));return a}catch(c){return null}}\nfunction yk(){var a=\"Node\"==He();a=zk()||a&&firebase.INTERNAL.node&&firebase.INTERNAL.node.localStorage;if(!a)return!1;try{return a.setItem(\"__sak\",\"1\"),a.removeItem(\"__sak\"),!0}catch(b){return!1}}k=xk.prototype;k.get=function(a){var b=this;return E().then(function(){var c=b.a.getItem(a);return Te(c)})};k.set=function(a,b){var c=this;return E().then(function(){var d=Re(b);null===d?c.T(a):c.a.setItem(a,d)})};k.T=function(a){var b=this;return E().then(function(){b.a.removeItem(a)})};\nk.ba=function(a){l.window&&jd(l.window,\"storage\",a)};k.ha=function(a){l.window&&td(l.window,\"storage\",a)};function Ak(){this.type=\"nullStorage\"}k=Ak.prototype;k.get=function(){return E(null)};k.set=function(){return E()};k.T=function(){return E()};k.ba=function(){};k.ha=function(){};function Bk(){if(!Ck()){if(\"Node\"==He())throw new u(\"internal-error\",\"The SessionStorage compatibility library was not found.\");throw new u(\"web-storage-unsupported\");}this.a=Dk()||firebase.INTERNAL.node.sessionStorage;this.type=\"sessionStorage\"}function Dk(){try{var a=l.sessionStorage,b=Ne();a&&(a.setItem(b,\"1\"),a.removeItem(b));return a}catch(c){return null}}\nfunction Ck(){var a=\"Node\"==He();a=Dk()||a&&firebase.INTERNAL.node&&firebase.INTERNAL.node.sessionStorage;if(!a)return!1;try{return a.setItem(\"__sak\",\"1\"),a.removeItem(\"__sak\"),!0}catch(b){return!1}}k=Bk.prototype;k.get=function(a){var b=this;return E().then(function(){var c=b.a.getItem(a);return Te(c)})};k.set=function(a,b){var c=this;return E().then(function(){var d=Re(b);null===d?c.T(a):c.a.setItem(a,d)})};k.T=function(a){var b=this;return E().then(function(){b.a.removeItem(a)})};k.ba=function(){};\nk.ha=function(){};function Ek(){var a={};a.Browser=Fk;a.Node=Gk;a.ReactNative=Hk;a.Worker=Ik;this.a=a[He()]}var Jk,Fk={F:xk,$a:Bk},Gk={F:xk,$a:Bk},Hk={F:Zj,$a:Ak},Ik={F:xk,$a:Ak};/*\n\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 Kk={od:\"local\",NONE:\"none\",qd:\"session\"};function Lk(a){var b=new u(\"invalid-persistence-type\"),c=new u(\"unsupported-persistence-type\");a:{for(d in Kk)if(Kk[d]==a){var d=!0;break a}d=!1}if(!d||\"string\"!==typeof a)throw b;switch(He()){case \"ReactNative\":if(\"session\"===a)throw c;break;case \"Node\":if(\"none\"!==a)throw c;break;case \"Worker\":if(\"session\"===a||!jk()&&\"none\"!==a)throw c;break;default:if(!Me()&&\"none\"!==a)throw c;}}\nfunction Mk(){var a=!Ue(I())&&Fe()?!0:!1,b=Qe(),c=Me();this.m=a;this.h=b;this.l=c;this.a={};Jk||(Jk=new Ek);a=Jk;try{this.g=!ne()&&$e()||!l.indexedDB?new a.a.F:new vk(Ge()?new wk:new a.a.F)}catch(d){this.g=new wk,this.h=!0}try{this.i=new a.a.$a}catch(d){this.i=new wk}this.u=new wk;this.f=r(this.Vb,this);this.b={}}var Nk;function Ok(){Nk||(Nk=new Mk);return Nk}function Pk(a,b){switch(b){case \"session\":return a.i;case \"none\":return a.u;default:return a.g}}\nfunction Qk(a,b){return\"firebase:\"+a.name+(b?\":\"+b:\"\")}function Rk(a,b,c){var d=Qk(b,c),e=Pk(a,b.F);return a.get(b,c).then(function(f){var g=null;try{g=Te(l.localStorage.getItem(d))}catch(h){}if(g&&!f)return l.localStorage.removeItem(d),a.set(b,g,c);g&&f&&\"localStorage\"!=e.type&&l.localStorage.removeItem(d)})}k=Mk.prototype;k.get=function(a,b){return Pk(this,a.F).get(Qk(a,b))};function Sk(a,b,c){c=Qk(b,c);\"local\"==b.F&&(a.b[c]=null);return Pk(a,b.F).T(c)}\nk.set=function(a,b,c){var d=Qk(a,c),e=this,f=Pk(this,a.F);return f.set(d,b).then(function(){return f.get(d)}).then(function(g){\"local\"==a.F&&(e.b[d]=g)})};k.addListener=function(a,b,c){a=Qk(a,b);this.l&&(this.b[a]=l.localStorage.getItem(a));jb(this.a)&&(Pk(this,\"local\").ba(this.f),this.h||(ne()||!$e())&&l.indexedDB||!this.l||Tk(this));this.a[a]||(this.a[a]=[]);this.a[a].push(c)};\nk.removeListener=function(a,b,c){a=Qk(a,b);this.a[a]&&(Ua(this.a[a],function(d){return d==c}),0==this.a[a].length&&delete this.a[a]);jb(this.a)&&(Pk(this,\"local\").ha(this.f),Uk(this))};function Tk(a){Uk(a);a.c=setInterval(function(){for(var b in a.a){var c=l.localStorage.getItem(b),d=a.b[b];c!=d&&(a.b[b]=c,c=new Yc({type:\"storage\",key:b,target:window,oldValue:d,newValue:c,a:!0}),a.Vb(c))}},1E3)}function Uk(a){a.c&&(clearInterval(a.c),a.c=null)}\nk.Vb=function(a){if(a&&a.f){var b=a.a.key;if(null==b)for(var c in this.a){var d=this.b[c];\"undefined\"===typeof d&&(d=null);var e=l.localStorage.getItem(c);e!==d&&(this.b[c]=e,this.ib(c))}else if(0==b.indexOf(\"firebase:\")&&this.a[b]){\"undefined\"!==typeof a.a.a?Pk(this,\"local\").ha(this.f):Uk(this);if(this.m)if(c=l.localStorage.getItem(b),d=a.a.newValue,d!==c)null!==d?l.localStorage.setItem(b,d):l.localStorage.removeItem(b);else if(this.b[b]===d&&\"undefined\"===typeof a.a.a)return;var f=this;c=function(){if(\"undefined\"!==\ntypeof a.a.a||f.b[b]!==l.localStorage.getItem(b))f.b[b]=l.localStorage.getItem(b),f.ib(b)};Sb&&cc&&10==cc&&l.localStorage.getItem(b)!==a.a.newValue&&a.a.newValue!==a.a.oldValue?setTimeout(c,10):c()}}else x(a,r(this.ib,this))};k.ib=function(a){this.a[a]&&x(this.a[a],function(b){b()})};function Vk(a){this.a=a;this.b=Ok()}var Wk={name:\"authEvent\",F:\"local\"};function Xk(a){return a.b.get(Wk,a.a).then(function(b){return ph(b)})};function Yk(){this.a=Ok()};function Zk(){this.b=-1};function $k(a,b){this.b=al;this.f=l.Uint8Array?new Uint8Array(this.b):Array(this.b);this.g=this.c=0;this.a=[];this.i=a;this.h=b;this.l=l.Int32Array?new Int32Array(64):Array(64);void 0===bl&&(l.Int32Array?bl=new Int32Array(cl):bl=cl);this.reset()}var bl;t($k,Zk);for(var al=64,dl=al-1,el=[],fl=0;fl<dl;fl++)el[fl]=0;var gl=Va(128,el);$k.prototype.reset=function(){this.g=this.c=0;this.a=l.Int32Array?new Int32Array(this.h):Wa(this.h)};\nfunction hl(a){for(var b=a.f,c=a.l,d=0,e=0;e<b.length;)c[d++]=b[e]<<24|b[e+1]<<16|b[e+2]<<8|b[e+3],e=4*d;for(b=16;64>b;b++){e=c[b-15]|0;d=c[b-2]|0;var f=(c[b-16]|0)+((e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3)|0,g=(c[b-7]|0)+((d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10)|0;c[b]=f+g|0}d=a.a[0]|0;e=a.a[1]|0;var h=a.a[2]|0,m=a.a[3]|0,p=a.a[4]|0,v=a.a[5]|0,C=a.a[6]|0;f=a.a[7]|0;for(b=0;64>b;b++){var A=((d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10))+(d&e^d&h^e&h)|0;g=p&v^~p&C;f=f+((p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<\n7))|0;g=g+(bl[b]|0)|0;g=f+(g+(c[b]|0)|0)|0;f=C;C=v;v=p;p=m+g|0;m=h;h=e;e=d;d=g+A|0}a.a[0]=a.a[0]+d|0;a.a[1]=a.a[1]+e|0;a.a[2]=a.a[2]+h|0;a.a[3]=a.a[3]+m|0;a.a[4]=a.a[4]+p|0;a.a[5]=a.a[5]+v|0;a.a[6]=a.a[6]+C|0;a.a[7]=a.a[7]+f|0}\nfunction il(a,b,c){void 0===c&&(c=b.length);var d=0,e=a.c;if(\"string\"===typeof b)for(;d<c;)a.f[e++]=b.charCodeAt(d++),e==a.b&&(hl(a),e=0);else if(ma(b))for(;d<c;){var f=b[d++];if(!(\"number\"==typeof f&&0<=f&&255>=f&&f==(f|0)))throw Error(\"message must be a byte array\");a.f[e++]=f;e==a.b&&(hl(a),e=0)}else throw Error(\"message must be string or array\");a.c=e;a.g+=c}\nvar cl=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,\n4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function jl(){$k.call(this,8,kl)}t(jl,$k);var kl=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];function ll(a,b,c,d,e){this.u=a;this.i=b;this.l=c;this.m=d||null;this.s=e||null;this.h=b+\":\"+c;this.w=new Yk;this.g=new Vk(this.h);this.f=null;this.b=[];this.a=this.c=null}function ml(a){return new u(\"invalid-cordova-configuration\",a)}k=ll.prototype;\nk.ka=function(){return this.Ga?this.Ga:this.Ga=Ce().then(function(){if(\"function\"!==typeof J(\"universalLinks.subscribe\",l))throw ml(\"cordova-universal-links-plugin-fix is not installed\");if(\"undefined\"===typeof J(\"BuildInfo.packageName\",l))throw ml(\"cordova-plugin-buildinfo is not installed\");if(\"function\"!==typeof J(\"cordova.plugins.browsertab.openUrl\",l))throw ml(\"cordova-plugin-browsertab is not installed\");if(\"function\"!==typeof J(\"cordova.InAppBrowser.open\",l))throw ml(\"cordova-plugin-inappbrowser is not installed\");\n},function(){throw new u(\"cordova-not-ready\");})};function nl(){for(var a=20,b=[];0<a;)b.push(\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\".charAt(Math.floor(62*Math.random()))),a--;return b.join(\"\")}function ol(a){var b=new jl;il(b,a);a=[];var c=8*b.g;56>b.c?il(b,gl,56-b.c):il(b,gl,b.b-(b.c-56));for(var d=63;56<=d;d--)b.f[d]=c&255,c/=256;hl(b);for(d=c=0;d<b.i;d++)for(var e=24;0<=e;e-=8)a[c++]=b.a[d]>>e&255;return $f(a)}\nk.Lb=function(a,b){b(new u(\"operation-not-supported-in-this-environment\"));return E()};k.Jb=function(){return F(new u(\"operation-not-supported-in-this-environment\"))};k.Xb=function(){return!1};k.Ub=function(){return!0};k.Qb=function(){return!0};\nk.Kb=function(a,b,c,d){if(this.c)return F(new u(\"redirect-operation-pending\"));var e=this,f=l.document,g=null,h=null,m=null,p=null;return this.c=E().then(function(){nh(b);return pl(e)}).then(function(){return ql(e,a,b,c,d)}).then(function(){return(new D(function(v,C){h=function(){var A=J(\"cordova.plugins.browsertab.close\",l);v();\"function\"===typeof A&&A();e.a&&\"function\"===typeof e.a.close&&(e.a.close(),e.a=null);return!1};e.Ca(h);m=function(){g||(g=Bd(2E3).then(function(){C(new u(\"redirect-cancelled-by-user\"))}))};\np=function(){Xe()&&m()};f.addEventListener(\"resume\",m,!1);I().toLowerCase().match(/android/)||f.addEventListener(\"visibilitychange\",p,!1)})).o(function(v){return rl(e).then(function(){throw v;})})}).ma(function(){m&&f.removeEventListener(\"resume\",m,!1);p&&f.removeEventListener(\"visibilitychange\",p,!1);g&&g.cancel();h&&e.Qa(h);e.c=null})};\nfunction ql(a,b,c,d,e){var f=nl(),g=new oh(b,d,null,f,new u(\"no-auth-event\"),null,e),h=J(\"BuildInfo.packageName\",l);if(\"string\"!==typeof h)throw new u(\"invalid-cordova-configuration\");var m=J(\"BuildInfo.displayName\",l),p={};if(I().toLowerCase().match(/iphone|ipad|ipod/))p.ibi=h;else if(I().toLowerCase().match(/android/))p.apn=h;else return F(new u(\"operation-not-supported-in-this-environment\"));m&&(p.appDisplayName=m);f=ol(f);p.sessionId=f;var v=Yj(a.u,a.i,a.l,b,c,null,d,a.m,p,a.s,e);return a.ka().then(function(){var C=\na.h;return a.w.a.set(Wk,g.v(),C)}).then(function(){var C=J(\"cordova.plugins.browsertab.isAvailable\",l);if(\"function\"!==typeof C)throw new u(\"invalid-cordova-configuration\");var A=null;C(function(Q){if(Q){A=J(\"cordova.plugins.browsertab.openUrl\",l);if(\"function\"!==typeof A)throw new u(\"invalid-cordova-configuration\");A(v)}else{A=J(\"cordova.InAppBrowser.open\",l);if(\"function\"!==typeof A)throw new u(\"invalid-cordova-configuration\");Q=I();a.a=A(v,Q.match(/(iPad|iPhone|iPod).*OS 7_\\d/i)||Q.match(/(iPad|iPhone|iPod).*OS 8_\\d/i)?\n\"_blank\":\"_system\",\"location=yes\")}})})}function sl(a,b){for(var c=0;c<a.b.length;c++)try{a.b[c](b)}catch(d){}}function pl(a){a.f||(a.f=a.ka().then(function(){return new D(function(b){function c(d){b(d);a.Qa(c);return!1}a.Ca(c);tl(a)})}));return a.f}function rl(a){var b=null;return Xk(a.g).then(function(c){b=c;c=a.g;return Sk(c.b,Wk,c.a)}).then(function(){return b})}\nfunction tl(a){function b(g){d=!0;e&&e.cancel();rl(a).then(function(h){var m=c;if(h&&g&&g.url){var p=null;m=ug(g.url);-1!=m.indexOf(\"/__/auth/callback\")&&(p=Zd(m),p=Te(Yd(p,\"firebaseError\")||null),p=(p=\"object\"===typeof p?wa(p):null)?new oh(h.c,h.b,null,null,p,null,h.S()):new oh(h.c,h.b,m,h.f,null,null,h.S()));m=p||c}sl(a,m)})}var c=new oh(\"unknown\",null,null,null,new u(\"no-auth-event\")),d=!1,e=Bd(500).then(function(){return rl(a).then(function(){d||sl(a,c)})}),f=l.handleOpenURL;l.handleOpenURL=function(g){0==\ng.toLowerCase().indexOf(J(\"BuildInfo.packageName\",l).toLowerCase()+\"://\")&&b({url:g});if(\"function\"===typeof f)try{f(g)}catch(h){console.error(h)}};rh||(rh=new qh);sh(b)}k.Ca=function(a){this.b.push(a);pl(this).o(function(b){\"auth/invalid-cordova-configuration\"===b.code&&(b=new oh(\"unknown\",null,null,null,new u(\"no-auth-event\")),a(b))})};k.Qa=function(a){Ua(this.b,function(b){return b==a})};function ul(a){this.a=a;this.b=Ok()}var vl={name:\"pendingRedirect\",F:\"session\"};function wl(a){return a.b.set(vl,\"pending\",a.a)}function xl(a){return Sk(a.b,vl,a.a)}function yl(a){return a.b.get(vl,a.a).then(function(b){return\"pending\"==b})};function zl(a,b,c){this.i={};this.w=0;this.D=a;this.u=b;this.m=c;this.h=[];this.f=!1;this.l=r(this.s,this);this.b=new Al;this.B=new Bl;this.g=new ul(this.u+\":\"+this.m);this.c={};this.c.unknown=this.b;this.c.signInViaRedirect=this.b;this.c.linkViaRedirect=this.b;this.c.reauthViaRedirect=this.b;this.c.signInViaPopup=this.B;this.c.linkViaPopup=this.B;this.c.reauthViaPopup=this.B;this.a=Cl(this.D,this.u,this.m,Aa)}\nfunction Cl(a,b,c,d){var e=firebase.SDK_VERSION||null;return De()?new ll(a,b,c,e,d):new Sj(a,b,c,e,d)}zl.prototype.reset=function(){this.f=!1;this.a.Qa(this.l);this.a=Cl(this.D,this.u,this.m);this.i={}};function Dl(a){a.f||(a.f=!0,a.a.Ca(a.l));var b=a.a;return a.a.ka().o(function(c){a.a==b&&a.reset();throw c;})}function El(a){a.a.Ub()&&Dl(a).o(function(b){var c=new oh(\"unknown\",null,null,null,new u(\"operation-not-supported-in-this-environment\"));Fl(b)&&a.s(c)});a.a.Qb()||Gl(a.b)}\nfunction Hl(a,b){Sa(a.h,b)||a.h.push(b);a.f||yl(a.g).then(function(c){c?xl(a.g).then(function(){Dl(a).o(function(d){var e=new oh(\"unknown\",null,null,null,new u(\"operation-not-supported-in-this-environment\"));Fl(d)&&a.s(e)})}):El(a)}).o(function(){El(a)})}function Il(a,b){Ua(a.h,function(c){return c==b})}\nzl.prototype.s=function(a){if(!a)throw new u(\"invalid-auth-event\");6E5<=ta()-this.w&&(this.i={},this.w=0);if(a&&a.getUid()&&this.i.hasOwnProperty(a.getUid()))return!1;for(var b=!1,c=0;c<this.h.length;c++){var d=this.h[c];if(d.Cb(a.c,a.b)){if(b=this.c[a.c])b.h(a,d),a&&(a.f||a.b)&&(this.i[a.getUid()]=!0,this.w=ta());b=!0;break}}Gl(this.b);return b};var Jl=new We(2E3,1E4),Kl=new We(3E4,6E4);zl.prototype.pa=function(){return this.b.pa()};\nfunction Ll(a,b,c,d,e,f,g){return a.a.Jb(b,c,d,function(){a.f||(a.f=!0,a.a.Ca(a.l))},function(){a.reset()},e,f,g)}function Fl(a){return a&&\"auth/cordova-not-ready\"==a.code?!0:!1}\nfunction Ml(a,b,c,d,e){var f;return wl(a.g).then(function(){return a.a.Kb(b,c,d,e).o(function(g){if(Fl(g))throw new u(\"operation-not-supported-in-this-environment\");f=g;return xl(a.g).then(function(){throw f;})}).then(function(){return a.a.Xb()?new D(function(){}):xl(a.g).then(function(){return a.pa()}).then(function(){}).o(function(){})})})}function Nl(a,b,c,d,e){return a.a.Lb(d,function(f){b.la(c,null,f,e)},Jl.get())}var Ol={};\nfunction Pl(a,b,c){var d=b+\":\"+c;Ol[d]||(Ol[d]=new zl(a,b,c));return Ol[d]}function Al(){this.b=null;this.f=[];this.c=[];this.a=null;this.i=this.g=!1}Al.prototype.reset=function(){this.b=null;this.a&&(this.a.cancel(),this.a=null)};\nAl.prototype.h=function(a,b){if(a){this.reset();this.g=!0;var c=a.c,d=a.b,e=a.a&&\"auth/web-storage-unsupported\"==a.a.code,f=a.a&&\"auth/operation-not-supported-in-this-environment\"==a.a.code;this.i=!(!e&&!f);\"unknown\"!=c||e||f?a.a?(Ql(this,!0,null,a.a),E()):b.Da(c,d)?Rl(this,a,b):F(new u(\"invalid-auth-event\")):(Ql(this,!1,null,null),E())}else F(new u(\"invalid-auth-event\"))};function Gl(a){a.g||(a.g=!0,Ql(a,!1,null,null))}function Sl(a){a.g&&!a.i&&Ql(a,!1,null,null)}\nfunction Rl(a,b,c){c=c.Da(b.c,b.b);var d=b.g,e=b.f,f=b.i,g=b.S(),h=!!b.c.match(/Redirect$/);c(d,e,g,f).then(function(m){Ql(a,h,m,null)}).o(function(m){Ql(a,h,null,m)})}function Tl(a,b){a.b=function(){return F(b)};if(a.c.length)for(var c=0;c<a.c.length;c++)a.c[c](b)}function Ul(a,b){a.b=function(){return E(b)};if(a.f.length)for(var c=0;c<a.f.length;c++)a.f[c](b)}function Ql(a,b,c,d){b?d?Tl(a,d):Ul(a,c):Ul(a,{user:null});a.f=[];a.c=[]}\nAl.prototype.pa=function(){var a=this;return new D(function(b,c){a.b?a.b().then(b,c):(a.f.push(b),a.c.push(c),Vl(a))})};function Vl(a){var b=new u(\"timeout\");a.a&&a.a.cancel();a.a=Bd(Kl.get()).then(function(){a.b||(a.g=!0,Ql(a,!0,null,b))})}function Bl(){}Bl.prototype.h=function(a,b){if(a){var c=a.c,d=a.b;a.a?(b.la(a.c,null,a.a,a.b),E()):b.Da(c,d)?Wl(a,b):F(new u(\"invalid-auth-event\"))}else F(new u(\"invalid-auth-event\"))};\nfunction Wl(a,b){var c=a.b,d=a.c;b.Da(d,c)(a.g,a.f,a.S(),a.i).then(function(e){b.la(d,e,null,c)}).o(function(e){b.la(d,null,e,c)})};function Xl(){this.Bb=!1;Object.defineProperty(this,\"appVerificationDisabled\",{get:function(){return this.Bb},set:function(a){this.Bb=a},enumerable:!1})};function Yl(a,b){this.a=b;K(this,\"verificationId\",a)}Yl.prototype.confirm=function(a){a=lh(this.verificationId,a);return this.a(a)};function Zl(a,b,c,d){return(new hh(a)).cb(b,c).then(function(e){return new Yl(e,d)})};function $l(a){var b=fg(a);if(!(b&&b.exp&&b.auth_time&&b.iat))throw new u(\"internal-error\",\"An internal error occurred. The token obtained by Firebase appears to be malformed. Please retry the operation.\");L(this,{token:a,expirationTime:Ze(1E3*b.exp),authTime:Ze(1E3*b.auth_time),issuedAtTime:Ze(1E3*b.iat),signInProvider:b.firebase&&b.firebase.sign_in_provider?b.firebase.sign_in_provider:null,signInSecondFactor:b.firebase&&b.firebase.sign_in_second_factor?b.firebase.sign_in_second_factor:null,claims:b})}\n;function am(a,b,c){var d=b&&b[bm];if(!d)throw new u(\"argument-error\",\"Internal assert: Invalid MultiFactorResolver\");this.a=a;this.f=kb(b);this.g=c;this.c=new vg(null,d);this.b=[];var e=this;x(b[cm]||[],function(f){(f=qf(f))&&e.b.push(f)});K(this,\"auth\",this.a);K(this,\"session\",this.c);K(this,\"hints\",this.b)}var cm=\"mfaInfo\",bm=\"mfaPendingCredential\";am.prototype.Pc=function(a){var b=this;return a.ob(this.a.b,this.c).then(function(c){var d=kb(b.f);delete d[cm];delete d[bm];B(d,c);return b.g(d)})};function dm(a,b,c,d){u.call(this,\"multi-factor-auth-required\",d,b);this.b=new am(a,b,c);K(this,\"resolver\",this.b)}t(dm,u);function em(a,b,c){if(a&&q(a.serverResponse)&&\"auth/multi-factor-auth-required\"===a.code)try{return new dm(b,a.serverResponse,c,a.message)}catch(d){}return null};function fm(){}fm.prototype.ob=function(a,b,c){return b.type==wg?gm(this,a,b,c):hm(this,a,b)};function gm(a,b,c,d){return c.Fa().then(function(e){e={idToken:e};\"undefined\"!==typeof d&&(e.displayName=d);B(e,{phoneVerificationInfo:dh(a.a)});return N(b,Aj,e)})}function hm(a,b,c){return c.Fa().then(function(d){d={mfaPendingCredential:d};B(d,{phoneVerificationInfo:dh(a.a)});return N(b,Bj,d)})}function im(a){K(this,\"factorId\",a.ea);this.a=a}t(im,fm);\nfunction jm(a){im.call(this,a);if(this.a.ea!=hh.PROVIDER_ID)throw new u(\"argument-error\",\"firebase.auth.PhoneMultiFactorAssertion requires a valid firebase.auth.PhoneAuthCredential\");}t(jm,im);function km(a,b){Xc.call(this,a);for(var c in b)this[c]=b[c]}t(km,Xc);function lm(a,b){this.a=a;this.b=[];this.c=r(this.wc,this);jd(this.a,\"userReloaded\",this.c);var c=[];b&&b.multiFactor&&b.multiFactor.enrolledFactors&&x(b.multiFactor.enrolledFactors,function(d){var e=null,f={};if(d){d.uid&&(f[nf]=d.uid);d.displayName&&(f[of]=d.displayName);d.enrollmentTime&&(f[pf]=(new Date(d.enrollmentTime)).toISOString());d.phoneNumber&&(f[mf]=d.phoneNumber);try{e=new rf(f)}catch(g){}d=e}else d=null;d&&c.push(d)});mm(this,c)}\nfunction nm(a){var b=[];x(a.mfaInfo||[],function(c){(c=qf(c))&&b.push(c)});return b}k=lm.prototype;k.wc=function(a){mm(this,nm(a.ed))};function mm(a,b){a.b=b;K(a,\"enrolledFactors\",b)}k.Ob=function(){return this.a.I().then(function(a){return new vg(a,null)})};k.dc=function(a,b){var c=this,d=this.a.a;return this.Ob().then(function(e){return a.ob(d,e,b)}).then(function(e){om(c.a,e);return c.a.reload()})};\nk.$c=function(a){var b=this,c=\"string\"===typeof a?a:a.uid,d=this.a.a;return this.a.I().then(function(e){return N(d,Fj,{idToken:e,mfaEnrollmentId:c})}).then(function(e){var f=Na(b.b,function(g){return g.uid!=c});mm(b,f);om(b.a,e);return b.a.reload().o(function(g){if(\"auth/user-token-expired\"!=g.code)throw g;})})};k.v=function(){return{multiFactor:{enrolledFactors:Oa(this.b,function(a){return a.v()})}}};function pm(a,b,c){this.h=a;this.i=b;this.g=c;this.c=3E4;this.f=96E4;this.b=null;this.a=this.c;if(this.f<this.c)throw Error(\"Proactive refresh lower bound greater than upper bound!\");}pm.prototype.start=function(){this.a=this.c;qm(this,!0)};function rm(a,b){if(b)return a.a=a.c,a.g();b=a.a;a.a*=2;a.a>a.f&&(a.a=a.f);return b}function qm(a,b){a.stop();a.b=Bd(rm(a,b)).then(function(){return Ye()}).then(function(){return a.h()}).then(function(){qm(a,!0)}).o(function(c){a.i(c)&&qm(a,!1)})}\npm.prototype.stop=function(){this.b&&(this.b.cancel(),this.b=null)};function sm(a){this.c=a;this.b=this.a=null}sm.prototype.v=function(){return{apiKey:this.c.c,refreshToken:this.a,accessToken:this.b&&this.b.toString(),expirationTime:tm(this)}};function tm(a){return a.b&&1E3*a.b.c||0}function um(a,b){var c=b.refreshToken;a.b=gg(b[Ag]||\"\");a.a=c}function vm(a,b){a.b=b.b;a.a=b.a}\nfunction wm(a,b){return Qi(a.c,b).then(function(c){a.b=gg(c.access_token);a.a=c.refresh_token;return{accessToken:a.b.toString(),refreshToken:a.a}}).o(function(c){\"auth/user-token-expired\"==c.code&&(a.a=null);throw c;})}sm.prototype.getToken=function(a){a=!!a;return this.b&&!this.a?F(new u(\"user-token-expired\")):a||!this.b||ta()>tm(this)-3E4?this.a?wm(this,{grant_type:\"refresh_token\",refresh_token:this.a}):E(null):E({accessToken:this.b.toString(),refreshToken:this.a})};function xm(a,b){this.a=a||null;this.b=b||null;L(this,{lastSignInTime:Ze(b||null),creationTime:Ze(a||null)})}function ym(a){return new xm(a.a,a.b)}xm.prototype.v=function(){return{lastLoginAt:this.b,createdAt:this.a}};function zm(a,b,c,d,e,f){L(this,{uid:a,displayName:d||null,photoURL:e||null,email:c||null,phoneNumber:f||null,providerId:b})}\nfunction P(a,b,c){this.N=[];this.l=a.apiKey;this.m=a.appName;this.s=a.authDomain||null;a=firebase.SDK_VERSION?Le(firebase.SDK_VERSION):null;this.a=new Ei(this.l,za(Aa),a);this.b=new sm(this.a);Am(this,b[Ag]);um(this.b,b);K(this,\"refreshToken\",this.b.a);Bm(this,c||{});G.call(this);this.P=!1;this.s&&Oe()&&(this.i=Pl(this.s,this.l,this.m));this.R=[];this.h=null;this.B=Cm(this);this.Z=r(this.Ma,this);var d=this;this.oa=null;this.za=function(e){d.va(e.g)};this.aa=null;this.W=[];this.ya=function(e){Dm(d,\ne.c)};this.$=null;this.O=new lm(this,c);K(this,\"multiFactor\",this.O)}t(P,G);P.prototype.va=function(a){this.oa=a;Ki(this.a,a)};P.prototype.ja=function(){return this.oa};function Em(a,b){a.aa&&td(a.aa,\"languageCodeChanged\",a.za);(a.aa=b)&&jd(b,\"languageCodeChanged\",a.za)}function Dm(a,b){a.W=b;Li(a.a,firebase.SDK_VERSION?Le(firebase.SDK_VERSION,a.W):null)}P.prototype.Ea=function(){return Wa(this.W)};function Fm(a,b){a.$&&td(a.$,\"frameworkChanged\",a.ya);(a.$=b)&&jd(b,\"frameworkChanged\",a.ya)}\nP.prototype.Ma=function(){this.B.b&&(this.B.stop(),this.B.start())};function Gm(a){try{return firebase.app(a.m).auth()}catch(b){throw new u(\"internal-error\",\"No firebase.auth.Auth instance is available for the Firebase App '\"+a.m+\"'!\");}}function Cm(a){return new pm(function(){return a.I(!0)},function(b){return b&&\"auth/network-request-failed\"==b.code?!0:!1},function(){var b=tm(a.b)-ta()-3E5;return 0<b?b:0})}\nfunction Hm(a){a.D||a.B.b||(a.B.start(),td(a,\"tokenChanged\",a.Z),jd(a,\"tokenChanged\",a.Z))}function Im(a){td(a,\"tokenChanged\",a.Z);a.B.stop()}function Am(a,b){a.xa=b;K(a,\"_lat\",b)}function Jm(a,b){Ua(a.R,function(c){return c==b})}function Km(a){for(var b=[],c=0;c<a.R.length;c++)b.push(a.R[c](a));return Ec(b).then(function(){return a})}function Lm(a){a.i&&!a.P&&(a.P=!0,Hl(a.i,a))}\nfunction Bm(a,b){L(a,{uid:b.uid,displayName:b.displayName||null,photoURL:b.photoURL||null,email:b.email||null,emailVerified:b.emailVerified||!1,phoneNumber:b.phoneNumber||null,isAnonymous:b.isAnonymous||!1,tenantId:b.tenantId||null,metadata:new xm(b.createdAt,b.lastLoginAt),providerData:[]});a.a.b=a.tenantId}K(P.prototype,\"providerId\",\"firebase\");function Mm(){}function Nm(a){return E().then(function(){if(a.D)throw new u(\"app-deleted\");})}\nfunction Om(a){return Oa(a.providerData,function(b){return b.providerId})}function Pm(a,b){b&&(Qm(a,b.providerId),a.providerData.push(b))}function Qm(a,b){Ua(a.providerData,function(c){return c.providerId==b})}function Rm(a,b,c){(\"uid\"!=b||c)&&a.hasOwnProperty(b)&&K(a,b,c)}\nfunction Sm(a,b){a!=b&&(L(a,{uid:b.uid,displayName:b.displayName,photoURL:b.photoURL,email:b.email,emailVerified:b.emailVerified,phoneNumber:b.phoneNumber,isAnonymous:b.isAnonymous,tenantId:b.tenantId,providerData:[]}),b.metadata?K(a,\"metadata\",ym(b.metadata)):K(a,\"metadata\",new xm),x(b.providerData,function(c){Pm(a,c)}),vm(a.b,b.b),K(a,\"refreshToken\",a.b.a),mm(a.O,b.O.b))}k=P.prototype;k.reload=function(){var a=this;return R(this,Nm(this).then(function(){return Tm(a).then(function(){return Km(a)}).then(Mm)}))};\nfunction Tm(a){return a.I().then(function(b){var c=a.isAnonymous;return Um(a,b).then(function(){c||Rm(a,\"isAnonymous\",!1);return b})})}k.mc=function(a){return this.I(a).then(function(b){return new $l(b)})};k.I=function(a){var b=this;return R(this,Nm(this).then(function(){return b.b.getToken(a)}).then(function(c){if(!c)throw new u(\"internal-error\");c.accessToken!=b.xa&&(Am(b,c.accessToken),b.dispatchEvent(new km(\"tokenChanged\")));Rm(b,\"refreshToken\",c.refreshToken);return c.accessToken}))};\nfunction om(a,b){b[Ag]&&a.xa!=b[Ag]&&(um(a.b,b),a.dispatchEvent(new km(\"tokenChanged\")),Am(a,b[Ag]),Rm(a,\"refreshToken\",a.b.a))}function Um(a,b){return N(a.a,Cj,{idToken:b}).then(r(a.Ic,a))}\nk.Ic=function(a){a=a.users;if(!a||!a.length)throw new u(\"internal-error\");a=a[0];Bm(this,{uid:a.localId,displayName:a.displayName,photoURL:a.photoUrl,email:a.email,emailVerified:!!a.emailVerified,phoneNumber:a.phoneNumber,lastLoginAt:a.lastLoginAt,createdAt:a.createdAt,tenantId:a.tenantId});for(var b=Vm(a),c=0;c<b.length;c++)Pm(this,b[c]);Rm(this,\"isAnonymous\",!(this.email&&a.passwordHash)&&!(this.providerData&&this.providerData.length));this.dispatchEvent(new km(\"userReloaded\",{ed:a}))};\nfunction Vm(a){return(a=a.providerUserInfo)&&a.length?Oa(a,function(b){return new zm(b.rawId,b.providerId,b.email,b.displayName,b.photoUrl,b.phoneNumber)}):[]}k.Jc=function(a){df(\"firebase.User.prototype.reauthenticateAndRetrieveDataWithCredential is deprecated. Please use firebase.User.prototype.reauthenticateWithCredential instead.\");return this.pb(a)};\nk.pb=function(a){var b=this,c=null;return R(this,a.c(this.a,this.uid).then(function(d){om(b,d);c=Wm(b,d,\"reauthenticate\");b.h=null;return b.reload()}).then(function(){return c}),!0)};function Xm(a,b){return Tm(a).then(function(){if(Sa(Om(a),b))return Km(a).then(function(){throw new u(\"provider-already-linked\");})})}k.Ac=function(a){df(\"firebase.User.prototype.linkAndRetrieveDataWithCredential is deprecated. Please use firebase.User.prototype.linkWithCredential instead.\");return this.mb(a)};\nk.mb=function(a){var b=this,c=null;return R(this,Xm(this,a.providerId).then(function(){return b.I()}).then(function(d){return a.b(b.a,d)}).then(function(d){c=Wm(b,d,\"link\");return Ym(b,d)}).then(function(){return c}))};k.Bc=function(a,b){var c=this;return R(this,Xm(this,\"phone\").then(function(){return Zl(Gm(c),a,b,r(c.mb,c))}))};k.Kc=function(a,b){var c=this;return R(this,E().then(function(){return Zl(Gm(c),a,b,r(c.pb,c))}),!0)};\nfunction Wm(a,b,c){var d=mh(b);b=lg(b);return gf({user:a,credential:d,additionalUserInfo:b,operationType:c})}function Ym(a,b){om(a,b);return a.reload().then(function(){return a})}k.xb=function(a){var b=this;return R(this,this.I().then(function(c){return b.a.xb(c,a)}).then(function(c){om(b,c);return b.reload()}))};k.cd=function(a){var b=this;return R(this,this.I().then(function(c){return a.b(b.a,c)}).then(function(c){om(b,c);return b.reload()}))};\nk.yb=function(a){var b=this;return R(this,this.I().then(function(c){return b.a.yb(c,a)}).then(function(c){om(b,c);return b.reload()}))};\nk.zb=function(a){if(void 0===a.displayName&&void 0===a.photoURL)return Nm(this);var b=this;return R(this,this.I().then(function(c){return b.a.zb(c,{displayName:a.displayName,photoUrl:a.photoURL})}).then(function(c){om(b,c);Rm(b,\"displayName\",c.displayName||null);Rm(b,\"photoURL\",c.photoUrl||null);x(b.providerData,function(d){\"password\"===d.providerId&&(K(d,\"displayName\",b.displayName),K(d,\"photoURL\",b.photoURL))});return Km(b)}).then(Mm))};\nk.ad=function(a){var b=this;return R(this,Tm(this).then(function(c){return Sa(Om(b),a)?lj(b.a,c,[a]).then(function(d){var e={};x(d.providerUserInfo||[],function(f){e[f.providerId]=!0});x(Om(b),function(f){e[f]||Qm(b,f)});e[hh.PROVIDER_ID]||K(b,\"phoneNumber\",null);return Km(b)}):Km(b).then(function(){throw new u(\"no-such-provider\");})}))};\nk.delete=function(){var a=this;return R(this,this.I().then(function(b){return N(a.a,zj,{idToken:b})}).then(function(){a.dispatchEvent(new km(\"userDeleted\"))})).then(function(){for(var b=0;b<a.N.length;b++)a.N[b].cancel(\"app-deleted\");Em(a,null);Fm(a,null);a.N=[];a.D=!0;Im(a);K(a,\"refreshToken\",null);a.i&&Il(a.i,a)})};\nk.Cb=function(a,b){return\"linkViaPopup\"==a&&(this.g||null)==b&&this.f||\"reauthViaPopup\"==a&&(this.g||null)==b&&this.f||\"linkViaRedirect\"==a&&(this.fa||null)==b||\"reauthViaRedirect\"==a&&(this.fa||null)==b?!0:!1};k.la=function(a,b,c,d){\"linkViaPopup\"!=a&&\"reauthViaPopup\"!=a||d!=(this.g||null)||(c&&this.w?this.w(c):b&&!c&&this.f&&this.f(b),this.c&&(this.c.cancel(),this.c=null),delete this.f,delete this.w)};\nk.Da=function(a,b){return\"linkViaPopup\"==a&&b==(this.g||null)?r(this.Hb,this):\"reauthViaPopup\"==a&&b==(this.g||null)?r(this.Ib,this):\"linkViaRedirect\"==a&&(this.fa||null)==b?r(this.Hb,this):\"reauthViaRedirect\"==a&&(this.fa||null)==b?r(this.Ib,this):null};k.Cc=function(a){var b=this;return Zm(this,\"linkViaPopup\",a,function(){return Xm(b,a.providerId).then(function(){return Km(b)})},!1)};k.Lc=function(a){return Zm(this,\"reauthViaPopup\",a,function(){return E()},!0)};\nfunction Zm(a,b,c,d,e){if(!Oe())return F(new u(\"operation-not-supported-in-this-environment\"));if(a.h&&!e)return F(a.h);var f=kg(c.providerId),g=Ne(a.uid+\":::\"),h=null;(!Qe()||Fe())&&a.s&&c.isOAuthProvider&&(h=Yj(a.s,a.l,a.m,b,c,null,g,firebase.SDK_VERSION||null,null,null,a.tenantId));var m=we(h,f&&f.ta,f&&f.sa);d=d().then(function(){$m(a);if(!e)return a.I().then(function(){})}).then(function(){return Ll(a.i,m,b,c,g,!!h,a.tenantId)}).then(function(){return new D(function(p,v){a.la(b,null,new u(\"cancelled-popup-request\"),\na.g||null);a.f=p;a.w=v;a.g=g;a.c=Nl(a.i,a,b,m,g)})}).then(function(p){m&&ve(m);return p?gf(p):null}).o(function(p){m&&ve(m);throw p;});return R(a,d,e)}k.Dc=function(a){var b=this;return an(this,\"linkViaRedirect\",a,function(){return Xm(b,a.providerId)},!1)};k.Mc=function(a){return an(this,\"reauthViaRedirect\",a,function(){return E()},!0)};\nfunction an(a,b,c,d,e){if(!Oe())return F(new u(\"operation-not-supported-in-this-environment\"));if(a.h&&!e)return F(a.h);var f=null,g=Ne(a.uid+\":::\");d=d().then(function(){$m(a);if(!e)return a.I().then(function(){})}).then(function(){a.fa=g;return Km(a)}).then(function(h){a.ga&&(h=a.ga,h=h.b.set(bn,a.v(),h.a));return h}).then(function(){return Ml(a.i,b,c,g,a.tenantId)}).o(function(h){f=h;if(a.ga)return cn(a.ga);throw f;}).then(function(){if(f)throw f;});return R(a,d,e)}\nfunction $m(a){if(!a.i||!a.P){if(a.i&&!a.P)throw new u(\"internal-error\");throw new u(\"auth-domain-config-required\");}}k.Hb=function(a,b,c,d){var e=this;this.c&&(this.c.cancel(),this.c=null);var f=null;c=this.I().then(function(g){return Eg(e.a,{requestUri:a,postBody:d,sessionId:b,idToken:g})}).then(function(g){f=Wm(e,g,\"link\");return Ym(e,g)}).then(function(){return f});return R(this,c)};\nk.Ib=function(a,b,c,d){var e=this;this.c&&(this.c.cancel(),this.c=null);var f=null,g=E().then(function(){return zg(Fg(e.a,{requestUri:a,sessionId:b,postBody:d,tenantId:c}),e.uid)}).then(function(h){f=Wm(e,h,\"reauthenticate\");om(e,h);e.h=null;return e.reload()}).then(function(){return f});return R(this,g,!0)};\nk.qb=function(a){var b=this,c=null;return R(this,this.I().then(function(d){c=d;return\"undefined\"===typeof a||jb(a)?{}:Zf(new Pf(a))}).then(function(d){return b.a.qb(c,d)}).then(function(d){if(b.email!=d)return b.reload()}).then(function(){}))};k.Ab=function(a,b){var c=this,d=null;return R(this,this.I().then(function(e){d=e;return\"undefined\"===typeof b||jb(b)?{}:Zf(new Pf(b))}).then(function(e){return c.a.Ab(d,a,e)}).then(function(e){if(c.email!=e)return c.reload()}).then(function(){}))};\nfunction R(a,b,c){var d=dn(a,b,c);a.N.push(d);d.ma(function(){Ta(a.N,d)});return d.o(function(e){var f=null;e&&\"auth/multi-factor-auth-required\"===e.code&&(f=em(e.v(),Gm(a),r(a.hc,a)));throw f||e;})}k.hc=function(a){var b=null,c=this;a=zg(E(a),c.uid).then(function(d){b=Wm(c,d,\"reauthenticate\");om(c,d);c.h=null;return c.reload()}).then(function(){return b});return R(this,a,!0)};\nfunction dn(a,b,c){return a.h&&!c?(b.cancel(),F(a.h)):b.o(function(d){!d||\"auth/user-disabled\"!=d.code&&\"auth/user-token-expired\"!=d.code||(a.h||a.dispatchEvent(new km(\"userInvalidated\")),a.h=d);throw d;})}k.toJSON=function(){return this.v()};\nk.v=function(){var a={uid:this.uid,displayName:this.displayName,photoURL:this.photoURL,email:this.email,emailVerified:this.emailVerified,phoneNumber:this.phoneNumber,isAnonymous:this.isAnonymous,tenantId:this.tenantId,providerData:[],apiKey:this.l,appName:this.m,authDomain:this.s,stsTokenManager:this.b.v(),redirectEventId:this.fa||null};this.metadata&&B(a,this.metadata.v());x(this.providerData,function(b){a.providerData.push(hf(b))});B(a,this.O.v());return a};\nfunction en(a){if(!a.apiKey)return null;var b={apiKey:a.apiKey,authDomain:a.authDomain,appName:a.appName},c={};if(a.stsTokenManager&&a.stsTokenManager.accessToken)c[Ag]=a.stsTokenManager.accessToken,c.refreshToken=a.stsTokenManager.refreshToken||null;else return null;var d=new P(b,c,a);a.providerData&&x(a.providerData,function(e){e&&Pm(d,gf(e))});a.redirectEventId&&(d.fa=a.redirectEventId);return d}\nfunction fn(a,b,c,d){var e=new P(a,b);c&&(e.ga=c);d&&Dm(e,d);return e.reload().then(function(){return e})}function gn(a,b,c,d){var e=a.b,f={};f[Ag]=e.b&&e.b.toString();f.refreshToken=e.a;b=new P(b||{apiKey:a.l,authDomain:a.s,appName:a.m},f);c&&(b.ga=c);d&&Dm(b,d);Sm(b,a);return b};function hn(a){this.a=a;this.b=Ok()}var bn={name:\"redirectUser\",F:\"session\"};function cn(a){return Sk(a.b,bn,a.a)}function jn(a,b){return a.b.get(bn,a.a).then(function(c){c&&b&&(c.authDomain=b);return en(c||{})})};function kn(a){this.a=a;this.b=Ok();this.c=null;this.f=ln(this);this.b.addListener(mn(\"local\"),this.a,r(this.g,this))}kn.prototype.g=function(){var a=this,b=mn(\"local\");nn(this,function(){return E().then(function(){return a.c&&\"local\"!=a.c.F?a.b.get(b,a.a):null}).then(function(c){if(c)return on(a,\"local\").then(function(){a.c=b})})})};function on(a,b){var c=[],d;for(d in Kk)Kk[d]!==b&&c.push(Sk(a.b,mn(Kk[d]),a.a));c.push(Sk(a.b,pn,a.a));return Dc(c)}\nfunction ln(a){var b=mn(\"local\"),c=mn(\"session\"),d=mn(\"none\");return Rk(a.b,b,a.a).then(function(){return a.b.get(c,a.a)}).then(function(e){return e?c:a.b.get(d,a.a).then(function(f){return f?d:a.b.get(b,a.a).then(function(g){return g?b:a.b.get(pn,a.a).then(function(h){return h?mn(h):b})})})}).then(function(e){a.c=e;return on(a,e.F)}).o(function(){a.c||(a.c=b)})}var pn={name:\"persistence\",F:\"session\"};function mn(a){return{name:\"authUser\",F:a}}\nkn.prototype.tb=function(a){var b=null,c=this;Lk(a);return nn(this,function(){return a!=c.c.F?c.b.get(c.c,c.a).then(function(d){b=d;return on(c,a)}).then(function(){c.c=mn(a);if(b)return c.b.set(c.c,b,c.a)}):E()})};function qn(a){return nn(a,function(){return a.b.set(pn,a.c.F,a.a)})}function rn(a,b){return nn(a,function(){return a.b.set(a.c,b.v(),a.a)})}function sn(a){return nn(a,function(){return Sk(a.b,a.c,a.a)})}\nfunction tn(a,b){return nn(a,function(){return a.b.get(a.c,a.a).then(function(c){c&&b&&(c.authDomain=b);return en(c||{})})})}function nn(a,b){a.f=a.f.then(b,b);return a.f};function un(a){this.l=!1;K(this,\"settings\",new Xl);K(this,\"app\",a);if(S(this).options&&S(this).options.apiKey)a=firebase.SDK_VERSION?Le(firebase.SDK_VERSION):null,this.b=new Ei(S(this).options&&S(this).options.apiKey,za(Aa),a);else throw new u(\"invalid-api-key\");this.P=[];this.m=[];this.O=[];this.$b=firebase.INTERNAL.createSubscribe(r(this.xc,this));this.W=void 0;this.ac=firebase.INTERNAL.createSubscribe(r(this.yc,this));vn(this,null);this.i=new kn(S(this).options.apiKey+\":\"+S(this).name);this.B=\nnew hn(S(this).options.apiKey+\":\"+S(this).name);this.Z=T(this,wn(this));this.h=T(this,xn(this));this.aa=!1;this.oa=r(this.Xc,this);this.Ma=r(this.ca,this);this.xa=r(this.jc,this);this.ya=r(this.uc,this);this.za=r(this.vc,this);this.a=null;yn(this);this.INTERNAL={};this.INTERNAL[\"delete\"]=r(this.delete,this);this.INTERNAL.logFramework=r(this.Ec,this);this.s=0;G.call(this);zn(this);this.N=[]}t(un,G);function An(a){Xc.call(this,\"languageCodeChanged\");this.g=a}t(An,Xc);\nfunction Bn(a){Xc.call(this,\"frameworkChanged\");this.c=a}t(Bn,Xc);k=un.prototype;k.tb=function(a){a=this.i.tb(a);return T(this,a)};k.va=function(a){this.$===a||this.l||(this.$=a,Ki(this.b,this.$),this.dispatchEvent(new An(this.ja())))};k.ja=function(){return this.$};k.dd=function(){var a=l.navigator;this.va(a?a.languages&&a.languages[0]||a.language||a.userLanguage||null:null)};k.Ec=function(a){this.N.push(a);Li(this.b,firebase.SDK_VERSION?Le(firebase.SDK_VERSION,this.N):null);this.dispatchEvent(new Bn(this.N))};\nk.Ea=function(){return Wa(this.N)};k.ub=function(a){this.R===a||this.l||(this.R=a,this.b.b=this.R)};k.S=function(){return this.R};function zn(a){Object.defineProperty(a,\"lc\",{get:function(){return this.ja()},set:function(b){this.va(b)},enumerable:!1});a.$=null;Object.defineProperty(a,\"ti\",{get:function(){return this.S()},set:function(b){this.ub(b)},enumerable:!1});a.R=null}\nk.toJSON=function(){return{apiKey:S(this).options.apiKey,authDomain:S(this).options.authDomain,appName:S(this).name,currentUser:U(this)&&U(this).v()}};function Cn(a){return a.Zb||F(new u(\"auth-domain-config-required\"))}function yn(a){var b=S(a).options.authDomain,c=S(a).options.apiKey;b&&Oe()&&(a.Zb=a.Z.then(function(){if(!a.l){a.a=Pl(b,c,S(a).name);Hl(a.a,a);U(a)&&Lm(U(a));if(a.D){Lm(a.D);var d=a.D;d.va(a.ja());Em(d,a);d=a.D;Dm(d,a.N);Fm(d,a);a.D=null}return a.a}}))}\nk.Cb=function(a,b){switch(a){case \"unknown\":case \"signInViaRedirect\":return!0;case \"signInViaPopup\":return this.g==b&&!!this.f;default:return!1}};k.la=function(a,b,c,d){\"signInViaPopup\"==a&&this.g==d&&(c&&this.w?this.w(c):b&&!c&&this.f&&this.f(b),this.c&&(this.c.cancel(),this.c=null),delete this.f,delete this.w)};k.Da=function(a,b){return\"signInViaRedirect\"==a||\"signInViaPopup\"==a&&this.g==b&&this.f?r(this.gc,this):null};\nk.gc=function(a,b,c,d){var e=this,f={requestUri:a,postBody:d,sessionId:b,tenantId:c};this.c&&(this.c.cancel(),this.c=null);return e.Z.then(function(){return Dn(e,Cg(e.b,f))})};\nk.Vc=function(a){if(!Oe())return F(new u(\"operation-not-supported-in-this-environment\"));var b=this,c=kg(a.providerId),d=Ne(),e=null;(!Qe()||Fe())&&S(this).options.authDomain&&a.isOAuthProvider&&(e=Yj(S(this).options.authDomain,S(this).options.apiKey,S(this).name,\"signInViaPopup\",a,null,d,firebase.SDK_VERSION||null,null,null,this.S()));var f=we(e,c&&c.ta,c&&c.sa);c=Cn(this).then(function(g){return Ll(g,f,\"signInViaPopup\",a,d,!!e,b.S())}).then(function(){return new D(function(g,h){b.la(\"signInViaPopup\",\nnull,new u(\"cancelled-popup-request\"),b.g);b.f=g;b.w=h;b.g=d;b.c=Nl(b.a,b,\"signInViaPopup\",f,d)})}).then(function(g){f&&ve(f);return g?gf(g):null}).o(function(g){f&&ve(f);throw g;});return T(this,c)};k.Wc=function(a){if(!Oe())return F(new u(\"operation-not-supported-in-this-environment\"));var b=this,c=Cn(this).then(function(){return qn(b.i)}).then(function(){return Ml(b.a,\"signInViaRedirect\",a,void 0,b.S())});return T(this,c)};\nfunction En(a){if(!Oe())return F(new u(\"operation-not-supported-in-this-environment\"));var b=Cn(a).then(function(){return a.a.pa()}).then(function(c){return c?gf(c):null});return T(a,b)}k.pa=function(){var a=this;return En(this).then(function(b){a.a&&Sl(a.a.b);return b}).o(function(b){a.a&&Sl(a.a.b);throw b;})};\nk.bd=function(a){if(!a)return F(new u(\"null-user\"));if(this.R!=a.tenantId)return F(new u(\"tenant-id-mismatch\"));var b=this,c={};c.apiKey=S(this).options.apiKey;c.authDomain=S(this).options.authDomain;c.appName=S(this).name;var d=gn(a,c,b.B,b.Ea());return T(this,this.h.then(function(){if(S(b).options.apiKey!=a.l)return d.reload()}).then(function(){if(U(b)&&a.uid==U(b).uid)return Sm(U(b),a),b.ca(a);vn(b,d);Lm(d);return b.ca(d)}).then(function(){Fn(b)}))};\nfunction Gn(a,b){var c={};c.apiKey=S(a).options.apiKey;c.authDomain=S(a).options.authDomain;c.appName=S(a).name;return a.Z.then(function(){return fn(c,b,a.B,a.Ea())}).then(function(d){if(U(a)&&d.uid==U(a).uid)return Sm(U(a),d),a.ca(d);vn(a,d);Lm(d);return a.ca(d)}).then(function(){Fn(a)})}\nfunction vn(a,b){U(a)&&(Jm(U(a),a.Ma),td(U(a),\"tokenChanged\",a.xa),td(U(a),\"userDeleted\",a.ya),td(U(a),\"userInvalidated\",a.za),Im(U(a)));b&&(b.R.push(a.Ma),jd(b,\"tokenChanged\",a.xa),jd(b,\"userDeleted\",a.ya),jd(b,\"userInvalidated\",a.za),0<a.s&&Hm(b));K(a,\"currentUser\",b);b&&(b.va(a.ja()),Em(b,a),Dm(b,a.N),Fm(b,a))}k.wb=function(){var a=this,b=this.h.then(function(){a.a&&Sl(a.a.b);if(!U(a))return E();vn(a,null);return sn(a.i).then(function(){Fn(a)})});return T(this,b)};\nfunction Hn(a){var b=jn(a.B,S(a).options.authDomain).then(function(c){if(a.D=c)c.ga=a.B;return cn(a.B)});return T(a,b)}function wn(a){var b=S(a).options.authDomain,c=Hn(a).then(function(){return tn(a.i,b)}).then(function(d){return d?(d.ga=a.B,a.D&&(a.D.fa||null)==(d.fa||null)?d:d.reload().then(function(){return rn(a.i,d).then(function(){return d})}).o(function(e){return\"auth/network-request-failed\"==e.code?d:sn(a.i)})):null}).then(function(d){vn(a,d||null)});return T(a,c)}\nfunction xn(a){return a.Z.then(function(){return En(a)}).o(function(){}).then(function(){if(!a.l)return a.oa()}).o(function(){}).then(function(){if(!a.l){a.aa=!0;var b=a.i;b.b.addListener(mn(\"local\"),b.a,a.oa)}})}\nk.Xc=function(){var a=this;return tn(this.i,S(this).options.authDomain).then(function(b){if(!a.l){var c;if(c=U(a)&&b){c=U(a).uid;var d=b.uid;c=void 0===c||null===c||\"\"===c||void 0===d||null===d||\"\"===d?!1:c==d}if(c)return Sm(U(a),b),U(a).I();if(U(a)||b)vn(a,b),b&&(Lm(b),b.ga=a.B),a.a&&Hl(a.a,a),Fn(a)}})};k.ca=function(a){return rn(this.i,a)};k.jc=function(){Fn(this);this.ca(U(this))};k.uc=function(){this.wb()};k.vc=function(){this.wb()};\nfunction Dn(a,b){var c=null,d=null;return T(a,b.then(function(e){c=mh(e);d=lg(e);return Gn(a,e)},function(e){var f=null;e&&\"auth/multi-factor-auth-required\"===e.code&&(f=em(e.v(),a,r(a.ic,a)));throw f||e;}).then(function(){return gf({user:U(a),credential:c,additionalUserInfo:d,operationType:\"signIn\"})}))}k.ic=function(a){var b=this;return this.h.then(function(){return Dn(b,E(a))})};k.xc=function(a){var b=this;this.addAuthTokenListener(function(){a.next(U(b))})};\nk.yc=function(a){var b=this;In(this,function(){a.next(U(b))})};k.Gc=function(a,b,c){var d=this;this.aa&&Promise.resolve().then(function(){n(a)?a(U(d)):n(a.next)&&a.next(U(d))});return this.$b(a,b,c)};k.Fc=function(a,b,c){var d=this;this.aa&&Promise.resolve().then(function(){d.W=d.getUid();n(a)?a(U(d)):n(a.next)&&a.next(U(d))});return this.ac(a,b,c)};k.kc=function(a){var b=this,c=this.h.then(function(){return U(b)?U(b).I(a).then(function(d){return{accessToken:d}}):null});return T(this,c)};\nk.Rc=function(a){var b=this;return this.h.then(function(){return Dn(b,N(b.b,Ej,{token:a}))}).then(function(c){var d=c.user;Rm(d,\"isAnonymous\",!1);b.ca(d);return c})};k.Sc=function(a,b){var c=this;return this.h.then(function(){return Dn(c,N(c.b,Xg,{email:a,password:b}))})};k.cc=function(a,b){var c=this;return this.h.then(function(){return Dn(c,N(c.b,yj,{email:a,password:b}))})};k.Ya=function(a){var b=this;return this.h.then(function(){return Dn(b,a.ia(b.b))})};\nk.Qc=function(a){df(\"firebase.auth.Auth.prototype.signInAndRetrieveDataWithCredential is deprecated. Please use firebase.auth.Auth.prototype.signInWithCredential instead.\");return this.Ya(a)};k.vb=function(){var a=this;return this.h.then(function(){var b=U(a);if(b&&b.isAnonymous){var c=gf({providerId:null,isNewUser:!1});return gf({user:b,credential:null,additionalUserInfo:c,operationType:\"signIn\"})}return Dn(a,a.b.vb()).then(function(d){var e=d.user;Rm(e,\"isAnonymous\",!0);a.ca(e);return d})})};\nfunction S(a){return a.app}function U(a){return a.currentUser}k.getUid=function(){return U(this)&&U(this).uid||null};function Jn(a){return U(a)&&U(a)._lat||null}function Fn(a){if(a.aa){for(var b=0;b<a.m.length;b++)if(a.m[b])a.m[b](Jn(a));if(a.W!==a.getUid()&&a.O.length)for(a.W=a.getUid(),b=0;b<a.O.length;b++)if(a.O[b])a.O[b](Jn(a))}}k.bc=function(a){this.addAuthTokenListener(a);this.s++;0<this.s&&U(this)&&Hm(U(this))};\nk.Nc=function(a){var b=this;x(this.m,function(c){c==a&&b.s--});0>this.s&&(this.s=0);0==this.s&&U(this)&&Im(U(this));this.removeAuthTokenListener(a)};k.addAuthTokenListener=function(a){var b=this;this.m.push(a);T(this,this.h.then(function(){b.l||Sa(b.m,a)&&a(Jn(b))}))};k.removeAuthTokenListener=function(a){Ua(this.m,function(b){return b==a})};function In(a,b){a.O.push(b);T(a,a.h.then(function(){!a.l&&Sa(a.O,b)&&a.W!==a.getUid()&&(a.W=a.getUid(),b(Jn(a)))}))}\nk.delete=function(){this.l=!0;for(var a=0;a<this.P.length;a++)this.P[a].cancel(\"app-deleted\");this.P=[];this.i&&(a=this.i,a.b.removeListener(mn(\"local\"),a.a,this.oa));this.a&&(Il(this.a,this),Sl(this.a.b));return Promise.resolve()};function T(a,b){a.P.push(b);b.ma(function(){Ta(a.P,b)});return b}k.fc=function(a){return T(this,Vi(this.b,a))};k.zc=function(a){return!!bh(a)};\nk.sb=function(a,b){var c=this;return T(this,E().then(function(){var d=new Pf(b);if(!d.c)throw new u(\"argument-error\",Xf+\" must be true when sending sign in link to email\");return Zf(d)}).then(function(d){return c.b.sb(a,d)}).then(function(){}))};k.fd=function(a){return this.Pa(a).then(function(b){return b.data.email})};k.jb=function(a,b){return T(this,this.b.jb(a,b).then(function(){}))};k.Pa=function(a){return T(this,this.b.Pa(a).then(function(b){return new sf(b)}))};\nk.fb=function(a){return T(this,this.b.fb(a).then(function(){}))};k.rb=function(a,b){var c=this;return T(this,E().then(function(){return\"undefined\"===typeof b||jb(b)?{}:Zf(new Pf(b))}).then(function(d){return c.b.rb(a,d)}).then(function(){}))};k.Uc=function(a,b){return T(this,Zl(this,a,b,r(this.Ya,this)))};\nk.Tc=function(a,b){var c=this;return T(this,E().then(function(){var d=b||oe(),e=ah(a,d);d=bh(d);if(!d)throw new u(\"argument-error\",\"Invalid email link!\");if(d.tenantId!==c.S())throw new u(\"tenant-id-mismatch\");return c.Ya(e)}))};function Kn(){}Kn.prototype.render=function(){};Kn.prototype.reset=function(){};Kn.prototype.getResponse=function(){};Kn.prototype.execute=function(){};function Ln(){this.a={};this.b=1E12}var Mn=null;Ln.prototype.render=function(a,b){this.a[this.b.toString()]=new Nn(a,b);return this.b++};Ln.prototype.reset=function(a){var b=On(this,a);a=Pn(a);b&&a&&(b.delete(),delete this.a[a])};Ln.prototype.getResponse=function(a){return(a=On(this,a))?a.getResponse():null};Ln.prototype.execute=function(a){(a=On(this,a))&&a.execute()};function On(a,b){return(b=Pn(b))?a.a[b]||null:null}function Pn(a){return(a=\"undefined\"===typeof a?1E12:a)?a.toString():null}\nfunction Nn(a,b){this.g=!1;this.c=b;this.a=this.b=null;this.h=\"invisible\"!==this.c.size;this.f=ec(a);var c=this;this.i=function(){c.execute()};this.h?this.execute():jd(this.f,\"click\",this.i)}Nn.prototype.getResponse=function(){Qn(this);return this.b};\nNn.prototype.execute=function(){Qn(this);var a=this;this.a||(this.a=setTimeout(function(){a.b=Je();var b=a.c.callback,c=a.c[\"expired-callback\"];if(b)try{b(a.b)}catch(d){}a.a=setTimeout(function(){a.a=null;a.b=null;if(c)try{c()}catch(d){}a.h&&a.execute()},6E4)},500))};Nn.prototype.delete=function(){Qn(this);this.g=!0;clearTimeout(this.a);this.a=null;td(this.f,\"click\",this.i)};function Qn(a){if(a.g)throw Error(\"reCAPTCHA mock was already deleted!\");};function Rn(){}K(Rn,\"FACTOR_ID\",\"phone\");function Sn(){}Sn.prototype.g=function(){Mn||(Mn=new Ln);return E(Mn)};Sn.prototype.c=function(){};var Tn=null;function Un(){this.b=l.grecaptcha?Infinity:0;this.f=null;this.a=\"__rcb\"+Math.floor(1E6*Math.random()).toString()}var Vn=new nb(ob,\"https://www.google.com/recaptcha/api.js?onload=%{onload}&render=explicit&hl=%{hl}\"),Wn=new We(3E4,6E4);\nUn.prototype.g=function(a){var b=this;return new D(function(c,d){var e=setTimeout(function(){d(new u(\"network-request-failed\"))},Wn.get());if(!l.grecaptcha||a!==b.f&&!b.b){l[b.a]=function(){if(l.grecaptcha){b.f=a;var g=l.grecaptcha.render;l.grecaptcha.render=function(h,m){h=g(h,m);b.b++;return h};clearTimeout(e);c(l.grecaptcha)}else clearTimeout(e),d(new u(\"internal-error\"));delete l[b.a]};var f=wb(Vn,{onload:b.a,hl:a||\"\"});E(xi(f)).o(function(){clearTimeout(e);d(new u(\"internal-error\",\"Unable to load external reCAPTCHA dependencies!\"))})}else clearTimeout(e),\nc(l.grecaptcha)})};Un.prototype.c=function(){this.b--};var Xn=null;function Yn(a,b,c,d,e,f,g){K(this,\"type\",\"recaptcha\");this.c=this.f=null;this.D=!1;this.u=b;this.g=null;g?(Tn||(Tn=new Sn),g=Tn):(Xn||(Xn=new Un),g=Xn);this.m=g;this.a=c||{theme:\"light\",type:\"image\"};this.h=[];if(this.a[Zn])throw new u(\"argument-error\",\"sitekey should not be provided for reCAPTCHA as one is automatically provisioned for the current project.\");this.i=\"invisible\"===this.a[$n];if(!l.document)throw new u(\"operation-not-supported-in-this-environment\",\"RecaptchaVerifier is only supported in a browser HTTP/HTTPS environment with DOM support.\");\nif(!ec(b)||!this.i&&ec(b).hasChildNodes())throw new u(\"argument-error\",\"reCAPTCHA container is either not found or already contains inner elements!\");this.s=new Ei(a,f||null,e||null);this.w=d||function(){return null};var h=this;this.l=[];var m=this.a[ao];this.a[ao]=function(v){bo(h,v);if(\"function\"===typeof m)m(v);else if(\"string\"===typeof m){var C=J(m,l);\"function\"===typeof C&&C(v)}};var p=this.a[co];this.a[co]=function(){bo(h,null);if(\"function\"===typeof p)p();else if(\"string\"===typeof p){var v=\nJ(p,l);\"function\"===typeof v&&v()}}}var ao=\"callback\",co=\"expired-callback\",Zn=\"sitekey\",$n=\"size\";function bo(a,b){for(var c=0;c<a.l.length;c++)try{a.l[c](b)}catch(d){}}function eo(a,b){Ua(a.l,function(c){return c==b})}function fo(a,b){a.h.push(b);b.ma(function(){Ta(a.h,b)});return b}k=Yn.prototype;\nk.Ga=function(){var a=this;return this.f?this.f:this.f=fo(this,E().then(function(){if(Pe()&&!Ge())return Be();throw new u(\"operation-not-supported-in-this-environment\",\"RecaptchaVerifier is only supported in a browser HTTP/HTTPS environment.\");}).then(function(){return a.m.g(a.w())}).then(function(b){a.g=b;return N(a.s,Dj,{})}).then(function(b){a.a[Zn]=b.recaptchaSiteKey}).o(function(b){a.f=null;throw b;}))};\nk.render=function(){go(this);var a=this;return fo(this,this.Ga().then(function(){if(null===a.c){var b=a.u;if(!a.i){var c=ec(b);b=hc(\"DIV\");c.appendChild(b)}a.c=a.g.render(b,a.a)}return a.c}))};k.verify=function(){go(this);var a=this;return fo(this,this.render().then(function(b){return new D(function(c){var d=a.g.getResponse(b);if(d)c(d);else{var e=function(f){f&&(eo(a,e),c(f))};a.l.push(e);a.i&&a.g.execute(a.c)}})}))};k.reset=function(){go(this);null!==this.c&&this.g.reset(this.c)};\nfunction go(a){if(a.D)throw new u(\"internal-error\",\"RecaptchaVerifier instance has been destroyed.\");}k.clear=function(){go(this);this.D=!0;this.m.c();for(var a=0;a<this.h.length;a++)this.h[a].cancel(\"RecaptchaVerifier instance has been destroyed.\");if(!this.i){a=ec(this.u);for(var b;b=a.firstChild;)a.removeChild(b)}};\nfunction ho(a,b,c){var d=!1;try{this.b=c||firebase.app()}catch(g){throw new u(\"argument-error\",\"No firebase.app.App instance is currently initialized.\");}if(this.b.options&&this.b.options.apiKey)c=this.b.options.apiKey;else throw new u(\"invalid-api-key\");var e=this,f=null;try{f=this.b.auth().Ea()}catch(g){}try{d=this.b.auth().settings.appVerificationDisabledForTesting}catch(g){}f=firebase.SDK_VERSION?Le(firebase.SDK_VERSION,f):null;Yn.call(this,c,a,b,function(){try{var g=e.b.auth().ja()}catch(h){g=\nnull}return g},f,za(Aa),d)}t(ho,Yn);function io(a,b,c,d){a:{c=Array.prototype.slice.call(c);var e=0;for(var f=!1,g=0;g<b.length;g++)if(b[g].optional)f=!0;else{if(f)throw new u(\"internal-error\",\"Argument validator encountered a required argument after an optional argument.\");e++}f=b.length;if(c.length<e||f<c.length)d=\"Expected \"+(e==f?1==e?\"1 argument\":e+\" arguments\":e+\"-\"+f+\" arguments\")+\" but got \"+c.length+\".\";else{for(e=0;e<c.length;e++)if(f=b[e].optional&&void 0===c[e],!b[e].K(c[e])&&!f){b=b[e];if(0>e||e>=jo.length)throw new u(\"internal-error\",\n\"Argument validator received an unsupported number of arguments.\");c=jo[e];d=(d?\"\":c+\" argument \")+(b.name?'\"'+b.name+'\" ':\"\")+\"must be \"+b.J+\".\";break a}d=null}}if(d)throw new u(\"argument-error\",a+\" failed: \"+d);}var jo=\"First Second Third Fourth Fifth Sixth Seventh Eighth Ninth\".split(\" \");function V(a,b){return{name:a||\"\",J:\"a valid string\",optional:!!b,K:function(c){return\"string\"===typeof c}}}\nfunction ko(a,b){return{name:a||\"\",J:\"a boolean\",optional:!!b,K:function(c){return\"boolean\"===typeof c}}}function W(a,b){return{name:a||\"\",J:\"a valid object\",optional:!!b,K:q}}function lo(a,b){return{name:a||\"\",J:\"a function\",optional:!!b,K:n}}function mo(a,b){return{name:a||\"\",J:\"null\",optional:!!b,K:function(c){return null===c}}}function no(){return{name:\"\",J:\"an HTML element\",optional:!1,K:function(a){return!!(a&&a instanceof Element)}}}\nfunction oo(){return{name:\"auth\",J:\"an instance of Firebase Auth\",optional:!0,K:function(a){return!!(a&&a instanceof un)}}}function po(){return{name:\"app\",J:\"an instance of Firebase App\",optional:!0,K:function(a){return!!(a&&a instanceof firebase.app.App)}}}function qo(a){return{name:a?a+\"Credential\":\"credential\",J:a?\"a valid \"+a+\" credential\":\"a valid credential\",optional:!1,K:function(b){if(!b)return!1;var c=!a||b.providerId===a;return!(!b.ia||!c)}}}\nfunction ro(){return{name:\"multiFactorAssertion\",J:\"a valid multiFactorAssertion\",optional:!1,K:function(a){return a?!!a.ob:!1}}}function so(){return{name:\"authProvider\",J:\"a valid Auth provider\",optional:!1,K:function(a){return!!(a&&a.providerId&&a.hasOwnProperty&&a.hasOwnProperty(\"isOAuthProvider\"))}}}function to(a,b){return q(a)&&\"string\"===typeof a.type&&a.type===b&&n(a.Fa)}function uo(a){return q(a)&&\"string\"===typeof a.uid}\nfunction vo(){return{name:\"applicationVerifier\",J:\"an implementation of firebase.auth.ApplicationVerifier\",optional:!1,K:function(a){return!(!a||\"string\"!==typeof a.type||!n(a.verify))}}}function X(a,b,c,d){return{name:c||\"\",J:a.J+\" or \"+b.J,optional:!!d,K:function(e){return a.K(e)||b.K(e)}}};function Y(a,b){for(var c in b){var d=b[c].name;a[d]=wo(d,a[c],b[c].j)}}function xo(a,b){for(var c in b){var d=b[c].name;d!==c&&Object.defineProperty(a,d,{get:sa(function(e){return this[e]},c),set:sa(function(e,f,g,h){io(e,[g],[h],!0);this[f]=h},d,c,b[c].gb),enumerable:!0})}}function Z(a,b,c,d){a[b]=wo(b,c,d)}\nfunction wo(a,b,c){function d(){var g=Array.prototype.slice.call(arguments);io(e,c,g);return b.apply(this,g)}if(!c)return b;var e=yo(a),f;for(f in b)d[f]=b[f];for(f in b.prototype)d.prototype[f]=b.prototype[f];return d}function yo(a){a=a.split(\".\");return a[a.length-1]};Y(un.prototype,{fb:{name:\"applyActionCode\",j:[V(\"code\")]},Pa:{name:\"checkActionCode\",j:[V(\"code\")]},jb:{name:\"confirmPasswordReset\",j:[V(\"code\"),V(\"newPassword\")]},cc:{name:\"createUserWithEmailAndPassword\",j:[V(\"email\"),V(\"password\")]},fc:{name:\"fetchSignInMethodsForEmail\",j:[V(\"email\")]},pa:{name:\"getRedirectResult\",j:[]},zc:{name:\"isSignInWithEmailLink\",j:[V(\"emailLink\")]},Fc:{name:\"onAuthStateChanged\",j:[X(W(),lo(),\"nextOrObserver\"),lo(\"opt_error\",!0),lo(\"opt_completed\",!0)]},Gc:{name:\"onIdTokenChanged\",\nj:[X(W(),lo(),\"nextOrObserver\"),lo(\"opt_error\",!0),lo(\"opt_completed\",!0)]},rb:{name:\"sendPasswordResetEmail\",j:[V(\"email\"),X(W(\"opt_actionCodeSettings\",!0),mo(null,!0),\"opt_actionCodeSettings\",!0)]},sb:{name:\"sendSignInLinkToEmail\",j:[V(\"email\"),W(\"actionCodeSettings\")]},tb:{name:\"setPersistence\",j:[V(\"persistence\")]},Qc:{name:\"signInAndRetrieveDataWithCredential\",j:[qo()]},vb:{name:\"signInAnonymously\",j:[]},Ya:{name:\"signInWithCredential\",j:[qo()]},Rc:{name:\"signInWithCustomToken\",j:[V(\"token\")]},\nSc:{name:\"signInWithEmailAndPassword\",j:[V(\"email\"),V(\"password\")]},Tc:{name:\"signInWithEmailLink\",j:[V(\"email\"),V(\"emailLink\",!0)]},Uc:{name:\"signInWithPhoneNumber\",j:[V(\"phoneNumber\"),vo()]},Vc:{name:\"signInWithPopup\",j:[so()]},Wc:{name:\"signInWithRedirect\",j:[so()]},bd:{name:\"updateCurrentUser\",j:[X(function(a){return{name:\"user\",J:\"an instance of Firebase User\",optional:!!a,K:function(b){return!!(b&&b instanceof P)}}}(),mo(),\"user\")]},wb:{name:\"signOut\",j:[]},toJSON:{name:\"toJSON\",j:[V(null,!0)]},\ndd:{name:\"useDeviceLanguage\",j:[]},fd:{name:\"verifyPasswordResetCode\",j:[V(\"code\")]}});xo(un.prototype,{lc:{name:\"languageCode\",gb:X(V(),mo(),\"languageCode\")},ti:{name:\"tenantId\",gb:X(V(),mo(),\"tenantId\")}});un.Persistence=Kk;un.Persistence.LOCAL=\"local\";un.Persistence.SESSION=\"session\";un.Persistence.NONE=\"none\";\nY(P.prototype,{\"delete\":{name:\"delete\",j:[]},mc:{name:\"getIdTokenResult\",j:[ko(\"opt_forceRefresh\",!0)]},I:{name:\"getIdToken\",j:[ko(\"opt_forceRefresh\",!0)]},Ac:{name:\"linkAndRetrieveDataWithCredential\",j:[qo()]},mb:{name:\"linkWithCredential\",j:[qo()]},Bc:{name:\"linkWithPhoneNumber\",j:[V(\"phoneNumber\"),vo()]},Cc:{name:\"linkWithPopup\",j:[so()]},Dc:{name:\"linkWithRedirect\",j:[so()]},Jc:{name:\"reauthenticateAndRetrieveDataWithCredential\",j:[qo()]},pb:{name:\"reauthenticateWithCredential\",j:[qo()]},Kc:{name:\"reauthenticateWithPhoneNumber\",\nj:[V(\"phoneNumber\"),vo()]},Lc:{name:\"reauthenticateWithPopup\",j:[so()]},Mc:{name:\"reauthenticateWithRedirect\",j:[so()]},reload:{name:\"reload\",j:[]},qb:{name:\"sendEmailVerification\",j:[X(W(\"opt_actionCodeSettings\",!0),mo(null,!0),\"opt_actionCodeSettings\",!0)]},toJSON:{name:\"toJSON\",j:[V(null,!0)]},ad:{name:\"unlink\",j:[V(\"provider\")]},xb:{name:\"updateEmail\",j:[V(\"email\")]},yb:{name:\"updatePassword\",j:[V(\"password\")]},cd:{name:\"updatePhoneNumber\",j:[qo(\"phone\")]},zb:{name:\"updateProfile\",j:[W(\"profile\")]},\nAb:{name:\"verifyBeforeUpdateEmail\",j:[V(\"email\"),X(W(\"opt_actionCodeSettings\",!0),mo(null,!0),\"opt_actionCodeSettings\",!0)]}});Y(Ln.prototype,{execute:{name:\"execute\"},render:{name:\"render\"},reset:{name:\"reset\"},getResponse:{name:\"getResponse\"}});Y(Kn.prototype,{execute:{name:\"execute\"},render:{name:\"render\"},reset:{name:\"reset\"},getResponse:{name:\"getResponse\"}});Y(D.prototype,{ma:{name:\"finally\"},o:{name:\"catch\"},then:{name:\"then\"}});\nxo(Xl.prototype,{appVerificationDisabled:{name:\"appVerificationDisabledForTesting\",gb:ko(\"appVerificationDisabledForTesting\")}});Y(Yl.prototype,{confirm:{name:\"confirm\",j:[V(\"verificationCode\")]}});Z(yg,\"fromJSON\",function(a){a=\"string\"===typeof a?JSON.parse(a):a;for(var b,c=[Jg,$g,gh,Gg],d=0;d<c.length;d++)if(b=c[d](a))return b;return null},[X(V(),W(),\"json\")]);Z(Vg,\"credential\",function(a,b){return new Ug(a,b)},[V(\"email\"),V(\"password\")]);Y(Ug.prototype,{v:{name:\"toJSON\",j:[V(null,!0)]}});\nY(Mg.prototype,{Aa:{name:\"addScope\",j:[V(\"scope\")]},Ia:{name:\"setCustomParameters\",j:[W(\"customOAuthParameters\")]}});Z(Mg,\"credential\",Ng,[X(V(),W(),\"token\")]);Z(Vg,\"credentialWithLink\",ah,[V(\"email\"),V(\"emailLink\")]);Y(Og.prototype,{Aa:{name:\"addScope\",j:[V(\"scope\")]},Ia:{name:\"setCustomParameters\",j:[W(\"customOAuthParameters\")]}});Z(Og,\"credential\",Pg,[X(V(),W(),\"token\")]);Y(Qg.prototype,{Aa:{name:\"addScope\",j:[V(\"scope\")]},Ia:{name:\"setCustomParameters\",j:[W(\"customOAuthParameters\")]}});\nZ(Qg,\"credential\",Rg,[X(V(),X(W(),mo()),\"idToken\"),X(V(),mo(),\"accessToken\",!0)]);Y(Sg.prototype,{Ia:{name:\"setCustomParameters\",j:[W(\"customOAuthParameters\")]}});Z(Sg,\"credential\",Tg,[X(V(),W(),\"token\"),V(\"secret\",!0)]);Y(M.prototype,{Aa:{name:\"addScope\",j:[V(\"scope\")]},credential:{name:\"credential\",j:[X(V(),X(W(),mo()),\"optionsOrIdToken\"),X(V(),mo(),\"accessToken\",!0)]},Ia:{name:\"setCustomParameters\",j:[W(\"customOAuthParameters\")]}});Y(Hg.prototype,{v:{name:\"toJSON\",j:[V(null,!0)]}});\nY(Bg.prototype,{v:{name:\"toJSON\",j:[V(null,!0)]}});Z(hh,\"credential\",lh,[V(\"verificationId\"),V(\"verificationCode\")]);\nY(hh.prototype,{cb:{name:\"verifyPhoneNumber\",j:[X(V(),function(a,b){return{name:a||\"phoneInfoOptions\",J:\"valid phone info options\",optional:!!b,K:function(c){return c?c.session&&c.phoneNumber?to(c.session,wg)&&\"string\"===typeof c.phoneNumber:c.session&&c.multiFactorHint?to(c.session,xg)&&uo(c.multiFactorHint):c.session&&c.multiFactorUid?to(c.session,xg)&&\"string\"===typeof c.multiFactorUid:c.phoneNumber?\"string\"===typeof c.phoneNumber:!1:!1}}}(),\"phoneInfoOptions\"),vo()]}});\nY(ch.prototype,{v:{name:\"toJSON\",j:[V(null,!0)]}});Y(u.prototype,{toJSON:{name:\"toJSON\",j:[V(null,!0)]}});Y(uh.prototype,{toJSON:{name:\"toJSON\",j:[V(null,!0)]}});Y(th.prototype,{toJSON:{name:\"toJSON\",j:[V(null,!0)]}});Y(dm.prototype,{toJSON:{name:\"toJSON\",j:[V(null,!0)]}});Y(am.prototype,{Pc:{name:\"resolveSignIn\",j:[ro()]}});\nY(lm.prototype,{Ob:{name:\"getSession\",j:[]},dc:{name:\"enroll\",j:[ro(),V(\"displayName\",!0)]},$c:{name:\"unenroll\",j:[X({name:\"multiFactorInfo\",J:\"a valid multiFactorInfo\",optional:!1,K:uo},V(),\"multiFactorInfoIdentifier\")]}});Y(ho.prototype,{clear:{name:\"clear\",j:[]},render:{name:\"render\",j:[]},verify:{name:\"verify\",j:[]}});Z(Gf,\"parseLink\",Of,[V(\"link\")]);Z(Rn,\"assertion\",function(a){return new jm(a)},[qo(\"phone\")]);\n(function(){if(\"undefined\"!==typeof firebase&&firebase.INTERNAL&&firebase.INTERNAL.registerComponent){var a={ActionCodeInfo:{Operation:{EMAIL_SIGNIN:xf,PASSWORD_RESET:\"PASSWORD_RESET\",RECOVER_EMAIL:\"RECOVER_EMAIL\",REVERT_SECOND_FACTOR_ADDITION:zf,VERIFY_AND_CHANGE_EMAIL:yf,VERIFY_EMAIL:\"VERIFY_EMAIL\"}},Auth:un,AuthCredential:yg,Error:u};Z(a,\"EmailAuthProvider\",Vg,[]);Z(a,\"FacebookAuthProvider\",Mg,[]);Z(a,\"GithubAuthProvider\",Og,[]);Z(a,\"GoogleAuthProvider\",Qg,[]);Z(a,\"TwitterAuthProvider\",Sg,[]);\nZ(a,\"OAuthProvider\",M,[V(\"providerId\")]);Z(a,\"SAMLAuthProvider\",Lg,[V(\"providerId\")]);Z(a,\"PhoneAuthProvider\",hh,[oo()]);Z(a,\"RecaptchaVerifier\",ho,[X(V(),no(),\"recaptchaContainer\"),W(\"recaptchaParameters\",!0),po()]);Z(a,\"ActionCodeURL\",Gf,[]);Z(a,\"PhoneMultiFactorGenerator\",Rn,[]);firebase.INTERNAL.registerComponent({name:\"auth\",instanceFactory:function(b){b=b.getProvider(\"app\").getImmediate();return new un(b)},multipleInstances:!1,serviceProps:a,instantiationMode:\"LAZY\",type:\"PUBLIC\"});firebase.INTERNAL.registerComponent({name:\"auth-internal\",\ninstanceFactory:function(b){b=b.getProvider(\"auth\").getImmediate();return{getUid:r(b.getUid,b),getToken:r(b.kc,b),addAuthTokenListener:r(b.bc,b),removeAuthTokenListener:r(b.Nc,b)}},multipleInstances:!1,instantiationMode:\"LAZY\",type:\"PRIVATE\"});firebase.registerVersion(\"@firebase/auth\",\"0.14.4\");firebase.INTERNAL.extendNamespace({User:P})}else throw Error(\"Cannot find the firebase namespace; be sure to include firebase-app.js before this library.\");})();}).apply(typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : {});\n\n//# sourceMappingURL=auth.esm.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar logger$1 = require('@firebase/logger');\nvar component = require('@firebase/component');\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Wraps a DOM Storage object and:\r\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\r\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\r\n *\r\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\r\n * and one for localStorage.\r\n *\r\n * @constructor\r\n */\r\nvar DOMStorageWrapper = /** @class */ (function () {\r\n /**\r\n * @param {Storage} domStorage_ The underlying storage object (e.g. localStorage or sessionStorage)\r\n */\r\n function DOMStorageWrapper(domStorage_) {\r\n this.domStorage_ = domStorage_;\r\n // Use a prefix to avoid collisions with other stuff saved by the app.\r\n this.prefix_ = 'firebase:';\r\n }\r\n /**\r\n * @param {string} key The key to save the value under\r\n * @param {?Object} value The value being stored, or null to remove the key.\r\n */\r\n DOMStorageWrapper.prototype.set = function (key, value) {\r\n if (value == null) {\r\n this.domStorage_.removeItem(this.prefixedName_(key));\r\n }\r\n else {\r\n this.domStorage_.setItem(this.prefixedName_(key), util.stringify(value));\r\n }\r\n };\r\n /**\r\n * @param {string} key\r\n * @return {*} The value that was stored under this key, or null\r\n */\r\n DOMStorageWrapper.prototype.get = function (key) {\r\n var storedVal = this.domStorage_.getItem(this.prefixedName_(key));\r\n if (storedVal == null) {\r\n return null;\r\n }\r\n else {\r\n return util.jsonEval(storedVal);\r\n }\r\n };\r\n /**\r\n * @param {string} key\r\n */\r\n DOMStorageWrapper.prototype.remove = function (key) {\r\n this.domStorage_.removeItem(this.prefixedName_(key));\r\n };\r\n /**\r\n * @param {string} name\r\n * @return {string}\r\n */\r\n DOMStorageWrapper.prototype.prefixedName_ = function (name) {\r\n return this.prefix_ + name;\r\n };\r\n DOMStorageWrapper.prototype.toString = function () {\r\n return this.domStorage_.toString();\r\n };\r\n return DOMStorageWrapper;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 in-memory storage implementation that matches the API of DOMStorageWrapper\r\n * (TODO: create interface for both to implement).\r\n *\r\n * @constructor\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache_ = {};\r\n this.isInMemoryStorage = true;\r\n }\r\n MemoryStorage.prototype.set = function (key, value) {\r\n if (value == null) {\r\n delete this.cache_[key];\r\n }\r\n else {\r\n this.cache_[key] = value;\r\n }\r\n };\r\n MemoryStorage.prototype.get = function (key) {\r\n if (util.contains(this.cache_, key)) {\r\n return this.cache_[key];\r\n }\r\n return null;\r\n };\r\n MemoryStorage.prototype.remove = function (key) {\r\n delete this.cache_[key];\r\n };\r\n return MemoryStorage;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\r\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\r\n * to reflect this type\r\n *\r\n * @param {string} domStorageName Name of the underlying storage object\r\n * (e.g. 'localStorage' or 'sessionStorage').\r\n * @return {?} Turning off type information until a common interface is defined.\r\n */\r\nvar createStoragefor = function (domStorageName) {\r\n try {\r\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\r\n // so it must be inside the try/catch.\r\n if (typeof window !== 'undefined' &&\r\n typeof window[domStorageName] !== 'undefined') {\r\n // Need to test cache. Just because it's here doesn't mean it works\r\n var domStorage = window[domStorageName];\r\n domStorage.setItem('firebase:sentinel', 'cache');\r\n domStorage.removeItem('firebase:sentinel');\r\n return new DOMStorageWrapper(domStorage);\r\n }\r\n }\r\n catch (e) { }\r\n // Failed to create wrapper. Just return in-memory storage.\r\n // TODO: log?\r\n return new MemoryStorage();\r\n};\r\n/** A storage object that lasts across sessions */\r\nvar PersistentStorage = createStoragefor('localStorage');\r\n/** A storage object that only lasts one session */\r\nvar SessionStorage = createStoragefor('sessionStorage');\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 logClient = new logger$1.Logger('@firebase/database');\r\n/**\r\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\r\n * @type {function(): number} Generated ID.\r\n */\r\nvar LUIDGenerator = (function () {\r\n var id = 1;\r\n return function () {\r\n return id++;\r\n };\r\n})();\r\n/**\r\n * Sha1 hash of the input string\r\n * @param {!string} str The string to hash\r\n * @return {!string} The resulting hash\r\n */\r\nvar sha1 = function (str) {\r\n var utf8Bytes = util.stringToByteArray(str);\r\n var sha1 = new util.Sha1();\r\n sha1.update(utf8Bytes);\r\n var sha1Bytes = sha1.digest();\r\n return util.base64.encodeByteArray(sha1Bytes);\r\n};\r\n/**\r\n * @param {...*} varArgs\r\n * @return {string}\r\n * @private\r\n */\r\nvar buildLogMessage_ = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var message = '';\r\n for (var i = 0; i < varArgs.length; i++) {\r\n var arg = varArgs[i];\r\n if (Array.isArray(arg) ||\r\n (arg &&\r\n typeof arg === 'object' &&\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n typeof arg.length === 'number')) {\r\n message += buildLogMessage_.apply(null, arg);\r\n }\r\n else if (typeof arg === 'object') {\r\n message += util.stringify(arg);\r\n }\r\n else {\r\n message += arg;\r\n }\r\n message += ' ';\r\n }\r\n return message;\r\n};\r\n/**\r\n * Use this for all debug messages in Firebase.\r\n * @type {?function(string)}\r\n */\r\nvar logger = null;\r\n/**\r\n * Flag to check for log availability on first log message\r\n * @type {boolean}\r\n * @private\r\n */\r\nvar firstLog_ = true;\r\n/**\r\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\r\n * @param {boolean|?function(string)} logger_ A flag to turn on logging, or a custom logger\r\n * @param {boolean=} persistent Whether or not to persist logging settings across refreshes\r\n */\r\nvar enableLogging = function (logger_, persistent) {\r\n util.assert(!persistent || logger_ === true || logger_ === false, \"Can't turn on custom loggers persistently.\");\r\n if (logger_ === true) {\r\n logClient.logLevel = logger$1.LogLevel.VERBOSE;\r\n logger = logClient.log.bind(logClient);\r\n if (persistent) {\r\n SessionStorage.set('logging_enabled', true);\r\n }\r\n }\r\n else if (typeof logger_ === 'function') {\r\n logger = logger_;\r\n }\r\n else {\r\n logger = null;\r\n SessionStorage.remove('logging_enabled');\r\n }\r\n};\r\n/**\r\n *\r\n * @param {...(string|Arguments)} varArgs\r\n */\r\nvar log = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n if (firstLog_ === true) {\r\n firstLog_ = false;\r\n if (logger === null && SessionStorage.get('logging_enabled') === true) {\r\n enableLogging(true);\r\n }\r\n }\r\n if (logger) {\r\n var message = buildLogMessage_.apply(null, varArgs);\r\n logger(message);\r\n }\r\n};\r\n/**\r\n * @param {!string} prefix\r\n * @return {function(...[*])}\r\n */\r\nvar logWrapper = function (prefix) {\r\n return function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n log.apply(void 0, tslib.__spread([prefix], varArgs));\r\n };\r\n};\r\n/**\r\n * @param {...string} varArgs\r\n */\r\nvar error = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_.apply(void 0, tslib.__spread(varArgs));\r\n logClient.error(message);\r\n};\r\n/**\r\n * @param {...string} varArgs\r\n */\r\nvar fatal = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var message = \"FIREBASE FATAL ERROR: \" + buildLogMessage_.apply(void 0, tslib.__spread(varArgs));\r\n logClient.error(message);\r\n throw new Error(message);\r\n};\r\n/**\r\n * @param {...*} varArgs\r\n */\r\nvar warn = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var message = 'FIREBASE WARNING: ' + buildLogMessage_.apply(void 0, tslib.__spread(varArgs));\r\n logClient.warn(message);\r\n};\r\n/**\r\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\r\n * does not use https.\r\n */\r\nvar warnIfPageIsSecure = function () {\r\n // Be very careful accessing browser globals. Who knows what may or may not exist.\r\n if (typeof window !== 'undefined' &&\r\n window.location &&\r\n window.location.protocol &&\r\n window.location.protocol.indexOf('https:') !== -1) {\r\n warn('Insecure Firebase access from a secure page. ' +\r\n 'Please use https in calls to new Firebase().');\r\n }\r\n};\r\n/**\r\n * Returns true if data is NaN, or +/- Infinity.\r\n * @param {*} data\r\n * @return {boolean}\r\n */\r\nvar isInvalidJSONNumber = function (data) {\r\n return (typeof data === 'number' &&\r\n (data !== data || // NaN\r\n data === Number.POSITIVE_INFINITY ||\r\n data === Number.NEGATIVE_INFINITY));\r\n};\r\n/**\r\n * @param {function()} fn\r\n */\r\nvar executeWhenDOMReady = function (fn) {\r\n if (util.isNodeSdk() || document.readyState === 'complete') {\r\n fn();\r\n }\r\n else {\r\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\r\n // fire before onload), but fall back to onload.\r\n var called_1 = false;\r\n var wrappedFn_1 = function () {\r\n if (!document.body) {\r\n setTimeout(wrappedFn_1, Math.floor(10));\r\n return;\r\n }\r\n if (!called_1) {\r\n called_1 = true;\r\n fn();\r\n }\r\n };\r\n if (document.addEventListener) {\r\n document.addEventListener('DOMContentLoaded', wrappedFn_1, false);\r\n // fallback to onload.\r\n window.addEventListener('load', wrappedFn_1, false);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }\r\n else if (document.attachEvent) {\r\n // IE.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n document.attachEvent('onreadystatechange', function () {\r\n if (document.readyState === 'complete') {\r\n wrappedFn_1();\r\n }\r\n });\r\n // fallback to onload.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n window.attachEvent('onload', wrappedFn_1);\r\n // jQuery has an extra hack for IE that we could employ (based on\r\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\r\n // I'm hoping we don't need it.\r\n }\r\n }\r\n};\r\n/**\r\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\r\n * @type {!string}\r\n */\r\nvar MIN_NAME = '[MIN_NAME]';\r\n/**\r\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\r\n * @type {!string}\r\n */\r\nvar MAX_NAME = '[MAX_NAME]';\r\n/**\r\n * Compares valid Firebase key names, plus min and max name\r\n * @param {!string} a\r\n * @param {!string} b\r\n * @return {!number}\r\n */\r\nvar nameCompare = function (a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a === MIN_NAME || b === MAX_NAME) {\r\n return -1;\r\n }\r\n else if (b === MIN_NAME || a === MAX_NAME) {\r\n return 1;\r\n }\r\n else {\r\n var aAsInt = tryParseInt(a), bAsInt = tryParseInt(b);\r\n if (aAsInt !== null) {\r\n if (bAsInt !== null) {\r\n return aAsInt - bAsInt === 0 ? a.length - b.length : aAsInt - bAsInt;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (bAsInt !== null) {\r\n return 1;\r\n }\r\n else {\r\n return a < b ? -1 : 1;\r\n }\r\n }\r\n};\r\n/**\r\n * @param {!string} a\r\n * @param {!string} b\r\n * @return {!number} comparison result.\r\n */\r\nvar stringCompare = function (a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n};\r\n/**\r\n * @param {string} key\r\n * @param {Object} obj\r\n * @return {*}\r\n */\r\nvar requireKey = function (key, obj) {\r\n if (obj && key in obj) {\r\n return obj[key];\r\n }\r\n else {\r\n throw new Error('Missing required key (' + key + ') in object: ' + util.stringify(obj));\r\n }\r\n};\r\n/**\r\n * @param {*} obj\r\n * @return {string}\r\n */\r\nvar ObjectToUniqueKey = function (obj) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return util.stringify(obj);\r\n }\r\n var keys = [];\r\n // eslint-disable-next-line guard-for-in\r\n for (var k in obj) {\r\n keys.push(k);\r\n }\r\n // Export as json, but with the keys sorted.\r\n keys.sort();\r\n var key = '{';\r\n for (var i = 0; i < keys.length; i++) {\r\n if (i !== 0) {\r\n key += ',';\r\n }\r\n key += util.stringify(keys[i]);\r\n key += ':';\r\n key += ObjectToUniqueKey(obj[keys[i]]);\r\n }\r\n key += '}';\r\n return key;\r\n};\r\n/**\r\n * Splits a string into a number of smaller segments of maximum size\r\n * @param {!string} str The string\r\n * @param {!number} segsize The maximum number of chars in the string.\r\n * @return {Array.<string>} The string, split into appropriately-sized chunks\r\n */\r\nvar splitStringBySize = function (str, segsize) {\r\n var len = str.length;\r\n if (len <= segsize) {\r\n return [str];\r\n }\r\n var dataSegs = [];\r\n for (var c = 0; c < len; c += segsize) {\r\n if (c + segsize > len) {\r\n dataSegs.push(str.substring(c, len));\r\n }\r\n else {\r\n dataSegs.push(str.substring(c, c + segsize));\r\n }\r\n }\r\n return dataSegs;\r\n};\r\n/**\r\n * Apply a function to each (key, value) pair in an object or\r\n * apply a function to each (index, value) pair in an array\r\n * @param obj The object or array to iterate over\r\n * @param fn The function to apply\r\n */\r\nfunction each(obj, fn) {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n fn(key, obj[key]);\r\n }\r\n }\r\n}\r\n/**\r\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\r\n * I made one modification at the end and removed the NaN / Infinity\r\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\r\n * @param {!number} v A double\r\n * @return {string}\r\n */\r\nvar doubleToIEEE754String = function (v) {\r\n util.assert(!isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\r\n var ebits = 11, fbits = 52;\r\n var bias = (1 << (ebits - 1)) - 1;\r\n var s, e, f, ln, i;\r\n // Compute sign, exponent, fraction\r\n // Skip NaN / Infinity handling --MJL.\r\n if (v === 0) {\r\n e = 0;\r\n f = 0;\r\n s = 1 / v === -Infinity ? 1 : 0;\r\n }\r\n else {\r\n s = v < 0;\r\n v = Math.abs(v);\r\n if (v >= Math.pow(2, 1 - bias)) {\r\n // Normalized\r\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\r\n e = ln + bias;\r\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\r\n }\r\n else {\r\n // Denormalized\r\n e = 0;\r\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\r\n }\r\n }\r\n // Pack sign, exponent, fraction\r\n var bits = [];\r\n for (i = fbits; i; i -= 1) {\r\n bits.push(f % 2 ? 1 : 0);\r\n f = Math.floor(f / 2);\r\n }\r\n for (i = ebits; i; i -= 1) {\r\n bits.push(e % 2 ? 1 : 0);\r\n e = Math.floor(e / 2);\r\n }\r\n bits.push(s ? 1 : 0);\r\n bits.reverse();\r\n var str = bits.join('');\r\n // Return the data as a hex string. --MJL\r\n var hexByteString = '';\r\n for (i = 0; i < 64; i += 8) {\r\n var hexByte = parseInt(str.substr(i, 8), 2).toString(16);\r\n if (hexByte.length === 1) {\r\n hexByte = '0' + hexByte;\r\n }\r\n hexByteString = hexByteString + hexByte;\r\n }\r\n return hexByteString.toLowerCase();\r\n};\r\n/**\r\n * Used to detect if we're in a Chrome content script (which executes in an\r\n * isolated environment where long-polling doesn't work).\r\n * @return {boolean}\r\n */\r\nvar isChromeExtensionContentScript = function () {\r\n return !!(typeof window === 'object' &&\r\n window['chrome'] &&\r\n window['chrome']['extension'] &&\r\n !/^chrome/.test(window.location.href));\r\n};\r\n/**\r\n * Used to detect if we're in a Windows 8 Store app.\r\n * @return {boolean}\r\n */\r\nvar isWindowsStoreApp = function () {\r\n // Check for the presence of a couple WinRT globals\r\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\r\n};\r\n/**\r\n * Converts a server error code to a Javascript Error\r\n * @param {!string} code\r\n * @param {!Query} query\r\n * @return {Error}\r\n */\r\nvar errorForServerCode = function (code, query) {\r\n var reason = 'Unknown Error';\r\n if (code === 'too_big') {\r\n reason =\r\n 'The data requested exceeds the maximum size ' +\r\n 'that can be accessed with a single request.';\r\n }\r\n else if (code === 'permission_denied') {\r\n reason = \"Client doesn't have permission to access the desired data.\";\r\n }\r\n else if (code === 'unavailable') {\r\n reason = 'The service is unavailable';\r\n }\r\n var error = new Error(code + ' at ' + query.path.toString() + ': ' + reason);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error.code = code.toUpperCase();\r\n return error;\r\n};\r\n/**\r\n * Used to test for integer-looking strings\r\n * @type {RegExp}\r\n * @private\r\n */\r\nvar INTEGER_REGEXP_ = new RegExp('^-?(0*)\\\\d{1,10}$');\r\n/**\r\n * If the string contains a 32-bit integer, return it. Else return null.\r\n * @param {!string} str\r\n * @return {?number}\r\n */\r\nvar tryParseInt = function (str) {\r\n if (INTEGER_REGEXP_.test(str)) {\r\n var intVal = Number(str);\r\n if (intVal >= -2147483648 && intVal <= 2147483647) {\r\n return intVal;\r\n }\r\n }\r\n return null;\r\n};\r\n/**\r\n * Helper to run some code but catch any exceptions and re-throw them later.\r\n * Useful for preventing user callbacks from breaking internal code.\r\n *\r\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\r\n * convenient (we don't have to try to figure out when is a safe point to\r\n * re-throw it), and the behavior seems reasonable:\r\n *\r\n * * If you aren't pausing on exceptions, you get an error in the console with\r\n * the correct stack trace.\r\n * * If you're pausing on all exceptions, the debugger will pause on your\r\n * exception and then again when we rethrow it.\r\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\r\n * on us re-throwing it.\r\n *\r\n * @param {!function()} fn The code to guard.\r\n */\r\nvar exceptionGuard = function (fn) {\r\n try {\r\n fn();\r\n }\r\n catch (e) {\r\n // Re-throw exception when it's safe.\r\n setTimeout(function () {\r\n // It used to be that \"throw e\" would result in a good console error with\r\n // relevant context, but as of Chrome 39, you just get the firebase.js\r\n // file/line number where we re-throw it, which is useless. So we log\r\n // e.stack explicitly.\r\n var stack = e.stack || '';\r\n warn('Exception was thrown by user callback.', stack);\r\n throw e;\r\n }, Math.floor(0));\r\n }\r\n};\r\n/**\r\n * @return {boolean} true if we think we're currently being crawled.\r\n */\r\nvar beingCrawled = function () {\r\n var userAgent = (typeof window === 'object' &&\r\n window['navigator'] &&\r\n window['navigator']['userAgent']) ||\r\n '';\r\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\r\n // believe to support JavaScript/AJAX rendering.\r\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\r\n // would have seen the page\" is flaky if we don't treat it as a crawler.\r\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\r\n};\r\n/**\r\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\r\n *\r\n * It is removed with clearTimeout() as normal.\r\n *\r\n * @param {Function} fn Function to run.\r\n * @param {number} time Milliseconds to wait before running.\r\n * @return {number|Object} The setTimeout() return value.\r\n */\r\nvar setTimeoutNonBlocking = function (fn, time) {\r\n var timeout = setTimeout(fn, time);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof timeout === 'object' && timeout['unref']) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n timeout['unref']();\r\n }\r\n return timeout;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 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 {string|Array.<string>} pathOrString Path string to parse,\r\n * or another path, or the raw tokens array\r\n * @param {number=} pieceNum\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 Object.defineProperty(Path, \"Empty\", {\r\n /**\r\n * Singleton to represent an empty path\r\n *\r\n * @const\r\n */\r\n get: function () {\r\n return new Path('');\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Path.prototype.getFront = function () {\r\n if (this.pieceNum_ >= this.pieces_.length) {\r\n return null;\r\n }\r\n return this.pieces_[this.pieceNum_];\r\n };\r\n /**\r\n * @return {number} The number of segments in this path\r\n */\r\n Path.prototype.getLength = function () {\r\n return this.pieces_.length - this.pieceNum_;\r\n };\r\n /**\r\n * @return {!Path}\r\n */\r\n Path.prototype.popFront = function () {\r\n var pieceNum = this.pieceNum_;\r\n if (pieceNum < this.pieces_.length) {\r\n pieceNum++;\r\n }\r\n return new Path(this.pieces_, pieceNum);\r\n };\r\n /**\r\n * @return {?string}\r\n */\r\n Path.prototype.getBack = function () {\r\n if (this.pieceNum_ < this.pieces_.length) {\r\n return this.pieces_[this.pieces_.length - 1];\r\n }\r\n return null;\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 Path.prototype.toUrlEncodedString = 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 += '/' + encodeURIComponent(String(this.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 * @param {number=} begin\r\n * @return {!Array<string>}\r\n */\r\n Path.prototype.slice = function (begin) {\r\n if (begin === void 0) { begin = 0; }\r\n return this.pieces_.slice(this.pieceNum_ + begin);\r\n };\r\n /**\r\n * @return {?Path}\r\n */\r\n Path.prototype.parent = function () {\r\n if (this.pieceNum_ >= this.pieces_.length) {\r\n return null;\r\n }\r\n var pieces = [];\r\n for (var i = this.pieceNum_; i < this.pieces_.length - 1; i++) {\r\n pieces.push(this.pieces_[i]);\r\n }\r\n return new Path(pieces, 0);\r\n };\r\n /**\r\n * @param {string|!Path} childPathObj\r\n * @return {!Path}\r\n */\r\n Path.prototype.child = function (childPathObj) {\r\n var pieces = [];\r\n for (var i = this.pieceNum_; i < this.pieces_.length; i++) {\r\n pieces.push(this.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 * @return {boolean} True if there are no segments in this path\r\n */\r\n Path.prototype.isEmpty = function () {\r\n return this.pieceNum_ >= this.pieces_.length;\r\n };\r\n /**\r\n * @param {!Path} outerPath\r\n * @param {!Path} innerPath\r\n * @return {!Path} The path from outerPath to innerPath\r\n */\r\n Path.relativePath = function (outerPath, innerPath) {\r\n var outer = outerPath.getFront(), inner = innerPath.getFront();\r\n if (outer === null) {\r\n return innerPath;\r\n }\r\n else if (outer === inner) {\r\n return Path.relativePath(outerPath.popFront(), innerPath.popFront());\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 * @param {!Path} left\r\n * @param {!Path} right\r\n * @return {number} -1, 0, 1 if left is less, equal, or greater than the right.\r\n */\r\n Path.comparePaths = function (left, right) {\r\n var leftKeys = left.slice();\r\n var rightKeys = right.slice();\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 *\r\n * @param {Path} other\r\n * @return {boolean} true if paths are the same.\r\n */\r\n Path.prototype.equals = function (other) {\r\n if (this.getLength() !== other.getLength()) {\r\n return false;\r\n }\r\n for (var i = this.pieceNum_, j = other.pieceNum_; i <= this.pieces_.length; i++, j++) {\r\n if (this.pieces_[i] !== other.pieces_[j]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n /**\r\n *\r\n * @param {!Path} other\r\n * @return {boolean} True if this path is a parent (or the same as) other\r\n */\r\n Path.prototype.contains = function (other) {\r\n var i = this.pieceNum_;\r\n var j = other.pieceNum_;\r\n if (this.getLength() > other.getLength()) {\r\n return false;\r\n }\r\n while (i < this.pieces_.length) {\r\n if (this.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 return Path;\r\n}()); // end Path\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} path Initial Path.\r\n * @param {string} errorPrefix_ Prefix for any error messages.\r\n */\r\n function ValidationPath(path, errorPrefix_) {\r\n this.errorPrefix_ = errorPrefix_;\r\n /** @type {!Array<string>} */\r\n this.parts_ = path.slice();\r\n /** @type {number} 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_ += util.stringLength(this.parts_[i]);\r\n }\r\n this.checkValid_();\r\n }\r\n Object.defineProperty(ValidationPath, \"MAX_PATH_DEPTH\", {\r\n /** @const {number} Maximum key depth. */\r\n get: function () {\r\n return 32;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ValidationPath, \"MAX_PATH_LENGTH_BYTES\", {\r\n /** @const {number} Maximum number of (UTF8) bytes in a Firebase path. */\r\n get: function () {\r\n return 768;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** @param {string} child */\r\n ValidationPath.prototype.push = function (child) {\r\n // Count the needed '/'\r\n if (this.parts_.length > 0) {\r\n this.byteLength_ += 1;\r\n }\r\n this.parts_.push(child);\r\n this.byteLength_ += util.stringLength(child);\r\n this.checkValid_();\r\n };\r\n ValidationPath.prototype.pop = function () {\r\n var last = this.parts_.pop();\r\n this.byteLength_ -= util.stringLength(last);\r\n // Un-count the previous '/'\r\n if (this.parts_.length > 0) {\r\n this.byteLength_ -= 1;\r\n }\r\n };\r\n ValidationPath.prototype.checkValid_ = function () {\r\n if (this.byteLength_ > ValidationPath.MAX_PATH_LENGTH_BYTES) {\r\n throw new Error(this.errorPrefix_ +\r\n 'has a key path longer than ' +\r\n ValidationPath.MAX_PATH_LENGTH_BYTES +\r\n ' bytes (' +\r\n this.byteLength_ +\r\n ').');\r\n }\r\n if (this.parts_.length > ValidationPath.MAX_PATH_DEPTH) {\r\n throw new Error(this.errorPrefix_ +\r\n 'path specified exceeds the maximum depth that can be written (' +\r\n ValidationPath.MAX_PATH_DEPTH +\r\n ') or object contains a cycle ' +\r\n this.toErrorString());\r\n }\r\n };\r\n /**\r\n * String for use in error messages - uses '.' notation for path.\r\n *\r\n * @return {string}\r\n */\r\n ValidationPath.prototype.toErrorString = function () {\r\n if (this.parts_.length === 0) {\r\n return '';\r\n }\r\n return \"in property '\" + this.parts_.join('.') + \"'\";\r\n };\r\n return ValidationPath;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 PROTOCOL_VERSION = '5';\r\nvar VERSION_PARAM = 'v';\r\nvar TRANSPORT_SESSION_PARAM = 's';\r\nvar REFERER_PARAM = 'r';\r\nvar FORGE_REF = 'f';\r\nvar FORGE_DOMAIN = 'firebaseio.com';\r\nvar LAST_SESSION_PARAM = 'ls';\r\nvar WEBSOCKET = 'websocket';\r\nvar LONG_POLLING = 'long_polling';\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 class that holds metadata about a Repo object\r\n *\r\n * @constructor\r\n */\r\nvar RepoInfo = /** @class */ (function () {\r\n /**\r\n * @param {string} host Hostname portion of the url for the repo\r\n * @param {boolean} secure Whether or not this repo is accessed over ssl\r\n * @param {string} namespace The namespace represented by the repo\r\n * @param {boolean} webSocketOnly Whether to prefer websockets over all other transports (used by Nest).\r\n * @param {string=} persistenceKey Override the default session persistence storage key\r\n */\r\n function RepoInfo(host, secure, namespace, webSocketOnly, persistenceKey, includeNamespaceInQueryParams) {\r\n if (persistenceKey === void 0) { persistenceKey = ''; }\r\n if (includeNamespaceInQueryParams === void 0) { includeNamespaceInQueryParams = false; }\r\n this.secure = secure;\r\n this.namespace = namespace;\r\n this.webSocketOnly = webSocketOnly;\r\n this.persistenceKey = persistenceKey;\r\n this.includeNamespaceInQueryParams = includeNamespaceInQueryParams;\r\n this.host = host.toLowerCase();\r\n this.domain = this.host.substr(this.host.indexOf('.') + 1);\r\n this.internalHost =\r\n PersistentStorage.get('host:' + host) || this.host;\r\n }\r\n RepoInfo.prototype.needsQueryParam = function () {\r\n return (this.host !== this.internalHost ||\r\n this.isCustomHost() ||\r\n this.includeNamespaceInQueryParams);\r\n };\r\n RepoInfo.prototype.isCacheableHost = function () {\r\n return this.internalHost.substr(0, 2) === 's-';\r\n };\r\n RepoInfo.prototype.isDemoHost = function () {\r\n return this.domain === 'firebaseio-demo.com';\r\n };\r\n RepoInfo.prototype.isCustomHost = function () {\r\n return (this.domain !== 'firebaseio.com' && this.domain !== 'firebaseio-demo.com');\r\n };\r\n RepoInfo.prototype.updateHost = function (newHost) {\r\n if (newHost !== this.internalHost) {\r\n this.internalHost = newHost;\r\n if (this.isCacheableHost()) {\r\n PersistentStorage.set('host:' + this.host, this.internalHost);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the websocket URL for this repo\r\n * @param {string} type of connection\r\n * @param {Object} params list\r\n * @return {string} The URL for this repo\r\n */\r\n RepoInfo.prototype.connectionURL = function (type, params) {\r\n util.assert(typeof type === 'string', 'typeof type must == string');\r\n util.assert(typeof params === 'object', 'typeof params must == object');\r\n var connURL;\r\n if (type === WEBSOCKET) {\r\n connURL =\r\n (this.secure ? 'wss://' : 'ws://') + this.internalHost + '/.ws?';\r\n }\r\n else if (type === LONG_POLLING) {\r\n connURL =\r\n (this.secure ? 'https://' : 'http://') + this.internalHost + '/.lp?';\r\n }\r\n else {\r\n throw new Error('Unknown connection type: ' + type);\r\n }\r\n if (this.needsQueryParam()) {\r\n params['ns'] = this.namespace;\r\n }\r\n var pairs = [];\r\n each(params, function (key, value) {\r\n pairs.push(key + '=' + value);\r\n });\r\n return connURL + pairs.join('&');\r\n };\r\n /** @return {string} */\r\n RepoInfo.prototype.toString = function () {\r\n var str = this.toURLString();\r\n if (this.persistenceKey) {\r\n str += '<' + this.persistenceKey + '>';\r\n }\r\n return str;\r\n };\r\n /** @return {string} */\r\n RepoInfo.prototype.toURLString = function () {\r\n return (this.secure ? 'https://' : 'http://') + this.host;\r\n };\r\n return RepoInfo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {!string} pathString\r\n * @return {string}\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 * @param {!string} queryString\r\n * @return {!{[key:string]:string}} 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 = tslib.__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\n/**\r\n *\r\n * @param {!string} dataURL\r\n * @return {{repoInfo: !RepoInfo, path: !Path}}\r\n */\r\nvar parseRepoInfo = function (dataURL) {\r\n var parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace;\r\n if (parsedUrl.domain === 'firebase') {\r\n fatal(parsedUrl.host +\r\n ' is no longer supported. ' +\r\n 'Please use <YOUR FIREBASE>.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://<YOUR FIREBASE>.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, webSocketOnly, \r\n /*persistenceKey=*/ '', \r\n /*includeNamespaceInQueryParams=*/ namespace !== parsedUrl.subdomain),\r\n path: new Path(parsedUrl.pathString)\r\n };\r\n};\r\n/**\r\n *\r\n * @param {!string} dataURL\r\n * @return {{host: string, port: number, domain: string, subdomain: string, secure: boolean, scheme: string, pathString: string, namespace: string}}\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 = dataURL.length;\r\n }\r\n var parts = host.split('.');\r\n if (parts.length === 3) {\r\n // Normalize namespaces to lowercase to share storage / connection.\r\n domain = parts[1];\r\n subdomain = parts[0].toLowerCase();\r\n // We interpret the subdomain of a 3 component URL as the namespace name.\r\n namespace = subdomain;\r\n }\r\n else if (parts.length === 2) {\r\n domain = parts[0];\r\n }\r\n else if (parts[0].slice(0, colonInd).toLowerCase() === 'localhost') {\r\n domain = 'localhost';\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 Inc.\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 * @type {RegExp}\r\n * @private\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 * @type {RegExp}\r\n * @private\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 * @type {number}\r\n * @private\r\n */\r\nvar MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\r\n/**\r\n * @param {*} key\r\n * @return {boolean}\r\n */\r\nvar isValidKey = function (key) {\r\n return (typeof key === 'string' && key.length !== 0 && !INVALID_KEY_REGEX_.test(key));\r\n};\r\n/**\r\n * @param {string} pathString\r\n * @return {boolean}\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\n/**\r\n * @param {string} pathString\r\n * @return {boolean}\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\n/**\r\n * @param {*} priority\r\n * @return {boolean}\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 util.contains(priority, '.sv')));\r\n};\r\n/**\r\n * Pre-validate a datum passed as an argument to Firebase function.\r\n *\r\n * @param {string} fnName\r\n * @param {number} argumentNumber\r\n * @param {*} data\r\n * @param {!Path} path\r\n * @param {boolean} optional\r\n */\r\nvar validateFirebaseDataArg = function (fnName, argumentNumber, data, path, optional) {\r\n if (optional && data === undefined) {\r\n return;\r\n }\r\n validateFirebaseData(util.errorPrefix(fnName, argumentNumber, optional), data, path);\r\n};\r\n/**\r\n * Validate a data object client-side before sending to server.\r\n *\r\n * @param {string} errorPrefix\r\n * @param {*} data\r\n * @param {!Path|!ValidationPath} path_\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 ' + path.toErrorString());\r\n }\r\n if (typeof data === 'function') {\r\n throw new Error(errorPrefix +\r\n 'contains a function ' +\r\n path.toErrorString() +\r\n ' with contents = ' +\r\n data.toString());\r\n }\r\n if (isInvalidJSONNumber(data)) {\r\n throw new Error(errorPrefix + 'contains ' + data.toString() + ' ' + path.toErrorString());\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 util.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 path.toErrorString() +\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 path.toErrorString() +\r\n '. Keys must be non-empty strings ' +\r\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\r\n }\r\n }\r\n path.push(key);\r\n validateFirebaseData(errorPrefix, value, path);\r\n path.pop();\r\n });\r\n if (hasDotValue_1 && hasActualChild_1) {\r\n throw new Error(errorPrefix +\r\n ' contains \".value\" child ' +\r\n path.toErrorString() +\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\n * @param {string} errorPrefix\r\n * @param {Array<!Path>} mergePaths\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 = curPath.slice();\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(Path.comparePaths);\r\n var prevPath = null;\r\n for (i = 0; i < mergePaths.length; i++) {\r\n curPath = mergePaths[i];\r\n if (prevPath !== null && prevPath.contains(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\n * @param {string} fnName\r\n * @param {number} argumentNumber\r\n * @param {*} data\r\n * @param {!Path} path\r\n * @param {boolean} optional\r\n */\r\nvar validateFirebaseMergeDataArg = function (fnName, argumentNumber, data, path, optional) {\r\n if (optional && data === undefined) {\r\n return;\r\n }\r\n var errorPrefix = util.errorPrefix(fnName, argumentNumber, optional);\r\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\r\n throw new Error(errorPrefix + ' 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, value, path.child(curPath));\r\n if (curPath.getBack() === '.priority') {\r\n if (!isValidPriority(value)) {\r\n throw new Error(errorPrefix +\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, mergePaths);\r\n};\r\nvar validatePriority = function (fnName, argumentNumber, priority, optional) {\r\n if (optional && priority === undefined) {\r\n return;\r\n }\r\n if (isInvalidJSONNumber(priority)) {\r\n throw new Error(util.errorPrefix(fnName, argumentNumber, optional) +\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(util.errorPrefix(fnName, argumentNumber, optional) +\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, argumentNumber, 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(util.errorPrefix(fnName, argumentNumber, optional) +\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, argumentNumber, key, optional) {\r\n if (optional && key === undefined) {\r\n return;\r\n }\r\n if (!isValidKey(key)) {\r\n throw new Error(util.errorPrefix(fnName, argumentNumber, optional) +\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, argumentNumber, pathString, optional) {\r\n if (optional && pathString === undefined) {\r\n return;\r\n }\r\n if (!isValidPathString(pathString)) {\r\n throw new Error(util.errorPrefix(fnName, argumentNumber, optional) +\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, argumentNumber, 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, argumentNumber, pathString, optional);\r\n};\r\nvar validateWritablePath = function (fnName, path) {\r\n if (path.getFront() === '.info') {\r\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\r\n }\r\n};\r\nvar validateUrl = function (fnName, argumentNumber, 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(util.errorPrefix(fnName, argumentNumber, false) +\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, argumentNumber, bool, optional) {\r\n if (optional && bool === undefined) {\r\n return;\r\n }\r\n if (typeof bool !== 'boolean') {\r\n throw new Error(util.errorPrefix(fnName, argumentNumber, optional) + 'must be a boolean.');\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n */\r\nvar OnDisconnect = /** @class */ (function () {\r\n /**\r\n * @param {!Repo} repo_\r\n * @param {!Path} path_\r\n */\r\n function OnDisconnect(repo_, path_) {\r\n this.repo_ = repo_;\r\n this.path_ = path_;\r\n }\r\n /**\r\n * @param {function(?Error)=} onComplete\r\n * @return {!firebase.Promise}\r\n */\r\n OnDisconnect.prototype.cancel = function (onComplete) {\r\n util.validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\r\n util.validateCallback('OnDisconnect.cancel', 1, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo_.onDisconnectCancel(this.path_, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {function(?Error)=} onComplete\r\n * @return {!firebase.Promise}\r\n */\r\n OnDisconnect.prototype.remove = function (onComplete) {\r\n util.validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\r\n validateWritablePath('OnDisconnect.remove', this.path_);\r\n util.validateCallback('OnDisconnect.remove', 1, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo_.onDisconnectSet(this.path_, null, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*} value\r\n * @param {function(?Error)=} onComplete\r\n * @return {!firebase.Promise}\r\n */\r\n OnDisconnect.prototype.set = function (value, onComplete) {\r\n util.validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\r\n validateWritablePath('OnDisconnect.set', this.path_);\r\n validateFirebaseDataArg('OnDisconnect.set', 1, value, this.path_, false);\r\n util.validateCallback('OnDisconnect.set', 2, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo_.onDisconnectSet(this.path_, value, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*} value\r\n * @param {number|string|null} priority\r\n * @param {function(?Error)=} onComplete\r\n * @return {!firebase.Promise}\r\n */\r\n OnDisconnect.prototype.setWithPriority = function (value, priority, onComplete) {\r\n util.validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\r\n validateWritablePath('OnDisconnect.setWithPriority', this.path_);\r\n validateFirebaseDataArg('OnDisconnect.setWithPriority', 1, value, this.path_, false);\r\n validatePriority('OnDisconnect.setWithPriority', 2, priority, false);\r\n util.validateCallback('OnDisconnect.setWithPriority', 3, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo_.onDisconnectSetWithPriority(this.path_, value, priority, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {!Object} objectToMerge\r\n * @param {function(?Error)=} onComplete\r\n * @return {!firebase.Promise}\r\n */\r\n OnDisconnect.prototype.update = function (objectToMerge, onComplete) {\r\n util.validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\r\n validateWritablePath('OnDisconnect.update', this.path_);\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 validateFirebaseMergeDataArg('OnDisconnect.update', 1, objectToMerge, this.path_, false);\r\n util.validateCallback('OnDisconnect.update', 2, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo_.onDisconnectUpdate(this.path_, objectToMerge, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n return OnDisconnect;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n * @dict\r\n * @param {boolean} committed\r\n * @param {DataSnapshot} snapshot\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 util.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 Inc.\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 * 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 // Modeled after base64 web-safe chars, but ordered by ASCII.\r\n var PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\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 util.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 util.assert(id.length === 20, 'nextPushId: Length should be 20.');\r\n return id;\r\n };\r\n})();\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {!string} name\r\n * @param {!Node} node\r\n * @constructor\r\n * @struct\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 /**\r\n *\r\n * @param {!string} name\r\n * @param {!Node} node\r\n * @return {NamedNode}\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 Inc.\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 * @constructor\r\n */\r\nvar Index = /** @class */ (function () {\r\n function Index() {\r\n }\r\n /**\r\n * @return {function(!NamedNode, !NamedNode):number} 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 * @param {!Node} oldNode\r\n * @param {!Node} newNode\r\n * @return {boolean} 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 * @return {!NamedNode} 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 Inc.\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 tslib.__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: true,\r\n configurable: true\r\n });\r\n /**\r\n * @inheritDoc\r\n */\r\n KeyIndex.prototype.compare = function (a, b) {\r\n return nameCompare(a.name, b.name);\r\n };\r\n /**\r\n * @inheritDoc\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 util.assertionError('KeyIndex.isDefinedOn not expected to be called.');\r\n };\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @param {*} indexValue\r\n * @param {string} name\r\n * @return {!NamedNode}\r\n */\r\n KeyIndex.prototype.makePost = function (indexValue, name) {\r\n util.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 * @return {!string} 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 Inc.\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;\r\nfunction setMaxNode(val) {\r\n MAX_NODE = val;\r\n}\r\n/**\r\n * @param {(!string|!number)} priority\r\n * @return {!string}\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\n * @param {!Node} priorityNode\r\n */\r\nvar validatePriorityNode = function (priorityNode) {\r\n if (priorityNode.isLeafNode()) {\r\n var val = priorityNode.val();\r\n util.assert(typeof val === 'string' ||\r\n typeof val === 'number' ||\r\n (typeof val === 'object' && util.contains(val, '.sv')), 'Priority must be a string or number.');\r\n }\r\n else {\r\n util.assert(priorityNode === MAX_NODE || priorityNode.isEmpty(), 'priority of unexpected type.');\r\n }\r\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\r\n util.assert(priorityNode === MAX_NODE || 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 Inc.\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 * @implements {Node}\r\n * @param {!(string|number|boolean|Object)} value_ The value to store in this leaf node.\r\n * The object type is possible in the event of a deferred value\r\n * @param {!Node=} 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 util.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: true,\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 (path.isEmpty()) {\r\n return this;\r\n }\r\n else if (path.getFront() === '.priority') {\r\n return this.priorityNode_;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\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 = path.getFront();\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 util.assert(front !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\r\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(path.popFront(), 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 /**\r\n * @inheritDoc\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 * @return {Object|string|number|boolean} The value of the node.\r\n */\r\n LeafNode.prototype.getValue = function () {\r\n return this.value_;\r\n };\r\n /**\r\n * @inheritDoc\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 util.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 * @param {!LeafNode} otherLeaf\r\n * @return {!number}\r\n * @private\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 util.assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\r\n util.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 /**\r\n * @inheritDoc\r\n */\r\n LeafNode.prototype.withIndex = function () {\r\n return this;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LeafNode.prototype.isIndexed = function () {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LeafNode.prototype.equals = function (other) {\r\n /**\r\n * @inheritDoc\r\n */\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 * @type {Array.<!string>}\r\n * @const\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 Inc.\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;\r\nvar MAX_NODE$1;\r\nfunction setNodeFromJSON(val) {\r\n nodeFromJSON = val;\r\n}\r\nfunction setMaxNode$1(val) {\r\n MAX_NODE$1 = val;\r\n}\r\n/**\r\n * @constructor\r\n * @extends {Index}\r\n * @private\r\n */\r\nvar PriorityIndex = /** @class */ (function (_super) {\r\n tslib.__extends(PriorityIndex, _super);\r\n function PriorityIndex() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n PriorityIndex.prototype.isDefinedOn = function (node) {\r\n return !node.getPriority().isEmpty();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PriorityIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n return !oldNode.getPriority().equals(newNode.getPriority());\r\n };\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @param {*} indexValue\r\n * @param {string} name\r\n * @return {!NamedNode}\r\n */\r\n PriorityIndex.prototype.makePost = function (indexValue, name) {\r\n var priorityNode = nodeFromJSON(indexValue);\r\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\r\n };\r\n /**\r\n * @return {!string} 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 Inc.\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 * @template K, V, T\r\n * @param {LLRBNode|LLRBEmptyNode} node Node to iterate.\r\n * @param {?K} startKey\r\n * @param {function(K, K): number} comparator\r\n * @param {boolean} isReverse_ Whether or not to iterate in reverse\r\n * @param {(function(K, V):T)=} resultGenerator_\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 /** @private\r\n * @type {Array.<!LLRBNode>}\r\n */\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 * @template K, V\r\n * @param {!K} key Key associated with this node.\r\n * @param {!V} value Value associated with this node.\r\n * @param {?boolean} color Whether this node is red.\r\n * @param {?(LLRBNode|LLRBEmptyNode)=} left Left child.\r\n * @param {?(LLRBNode|LLRBEmptyNode)=} 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 {?K} key New key for the node, or null.\r\n * @param {?V} value New value for the node, or null.\r\n * @param {?boolean} color New color for the node, or null.\r\n * @param {?LLRBNode|LLRBEmptyNode} left New left child for the node, or null.\r\n * @param {?LLRBNode|LLRBEmptyNode} right New right child for the node, or null.\r\n * @return {!LLRBNode} 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 * @return {number} 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 * @return {boolean} 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 {function(!K, !V):*} action Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @return {*} 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 {function(!Object, !Object)} action Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @return {*} 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 * @return {!Object} The minimum node in the tree.\r\n * @private\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 * @return {!K} 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 * @return {!K} 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 *\r\n * @param {!Object} key Key to insert.\r\n * @param {!Object} value Value to insert.\r\n * @param {Comparator} comparator Comparator.\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode|LLRBEmptyNode} 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 {!Object} key The key of the item to remove.\r\n * @param {Comparator} comparator Comparator.\r\n * @return {!LLRBNode|LLRBEmptyNode} 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 * @private\r\n * @return {boolean} 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 * @private\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode} 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 * @private\r\n * @return {!LLRBNode} New tree, 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 * @private\r\n * @return {boolean} 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 /**\r\n * @private\r\n * @return {number} Not sure what this returns exactly. :-).\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 * @return {!LLRBEmptyNode} 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 {!K} key Key to be added.\r\n * @param {!V} value Value to be added.\r\n * @param {Comparator} comparator Comparator.\r\n * @return {!LLRBNode} 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 {!K} key The key to remove.\r\n * @param {Comparator} comparator Comparator.\r\n * @return {!LLRBEmptyNode} 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 * @return {number} 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 * @return {boolean} 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 {function(!K, !V):*} action Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @return {boolean} 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 {function(!K, !V)} action Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @return {boolean} True if traversal was aborted.\r\n */\r\n LLRBEmptyNode.prototype.reverseTraversal = function (action) {\r\n return false;\r\n };\r\n /**\r\n * @return {null}\r\n */\r\n LLRBEmptyNode.prototype.minKey = function () {\r\n return null;\r\n };\r\n /**\r\n * @return {null}\r\n */\r\n LLRBEmptyNode.prototype.maxKey = function () {\r\n return null;\r\n };\r\n /**\r\n * @private\r\n * @return {number} Not sure what this returns exactly. :-).\r\n */\r\n LLRBEmptyNode.prototype.check_ = function () {\r\n return 0;\r\n };\r\n /**\r\n * @private\r\n * @return {boolean} 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 * @template K, V\r\n * @param {function(K, K):number} comparator_ Key comparator.\r\n * @param {LLRBNode=} 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 {!K} key Key to be added.\r\n * @param {!V} value Value to be added.\r\n * @return {!SortedMap.<K, V>} 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 {!K} key The key to remove.\r\n * @return {!SortedMap.<K, V>} 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 {!K} key The key to look up.\r\n * @return {?V} 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 {K} key The key to find the predecessor of\r\n * @return {?K} 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 * @return {boolean} 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 * @return {number} 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 * @return {?K} 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 * @return {?K} 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 {function(!K, !V):*} action Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @return {*} 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 {function(!Object, !Object)} action Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @return {*} 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 * @template T\r\n * @param {(function(K, V):T)=} resultGenerator\r\n * @return {SortedMapIterator.<K, V, T>} 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 * @const\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 Inc.\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\n/**\r\n * @constructor\r\n */\r\nvar Base12Num = /** @class */ (function () {\r\n /**\r\n * @param {number} length\r\n */\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 /**\r\n * @return {boolean}\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 * @template K, V\r\n * @param {Array.<!NamedNode>} childList Unsorted list of children\r\n * @param {function(!NamedNode, !NamedNode):number} cmp The comparison method to be used\r\n * @param {(function(NamedNode):K)=} keyFn An optional function to extract K from a node wrapper, if K's\r\n * type is not NamedNode\r\n * @param {(function(K, K):number)=} mapSortFn An optional override for comparator used by the generated sorted map\r\n * @return {SortedMap.<K, V>}\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 Inc.\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 util.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: true,\r\n configurable: true\r\n });\r\n IndexMap.prototype.get = function (indexKey) {\r\n var sortedMap = util.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 util.contains(this.indexSet_, indexDefinition.toString());\r\n };\r\n IndexMap.prototype.addIndex = function (indexDefinition, existingChildren) {\r\n util.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 = tslib.__assign({}, this.indexSet_);\r\n newIndexSet[indexName] = indexDefinition;\r\n var newIndexes = tslib.__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 = util.map(this.indexes_, function (indexedChildren, indexName) {\r\n var index = util.safeGet(_this.indexSet_, indexName);\r\n util.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 = util.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 Inc.\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 Inc.\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\n * @constructor\r\n * @implements {Node}\r\n */\r\nvar ChildrenNode = /** @class */ (function () {\r\n /**\r\n *\r\n * @param {!SortedMap.<string, !Node>} children_ List of children\r\n * of this node..\r\n * @param {?Node} priorityNode_ The priority of this node (as a snapshot node).\r\n * @param {!IndexMap} indexMap_\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 util.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: true,\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 = path.getFront();\r\n if (front === null) {\r\n return this;\r\n }\r\n return this.getImmediateChild(front).getChild(path.popFront());\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 util.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 = path.getFront();\r\n if (front === null) {\r\n return newChildNode;\r\n }\r\n else {\r\n util.assert(path.getFront() !== '.priority' || path.getLength() === 1, '.priority must be the last token in a path');\r\n var newImmediateChild = this.getImmediateChild(front).updateChild(path.popFront(), 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 /**\r\n * @param {!Index} indexDefinition\r\n * @return {?string}\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 /**\r\n * @param {!Index} indexDefinition\r\n * @return {?NamedNode}\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 * @param {!Index} indexDefinition\r\n * @return {?string}\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 /**\r\n * @param {!Index} indexDefinition\r\n * @return {?NamedNode}\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 /**\r\n * @inheritDoc\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 /**\r\n * @param {!Index} indexDefinition\r\n * @return {SortedMapIterator}\r\n */\r\n ChildrenNode.prototype.getIterator = function (indexDefinition) {\r\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\r\n };\r\n /**\r\n *\r\n * @param {!NamedNode} startPost\r\n * @param {!Index} indexDefinition\r\n * @return {!SortedMapIterator}\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 /**\r\n * @param {!Index} indexDefinition\r\n * @return {!SortedMapIterator}\r\n */\r\n ChildrenNode.prototype.getReverseIterator = function (indexDefinition) {\r\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\r\n };\r\n /**\r\n * @param {!NamedNode} endPost\r\n * @param {!Index} indexDefinition\r\n * @return {!SortedMapIterator}\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 /**\r\n * @inheritDoc\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$2) {\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n ChildrenNode.prototype.isIndexed = function (index) {\r\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\r\n };\r\n /**\r\n * @inheritDoc\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 * @private\r\n * @param {!Index} indexDefinition\r\n * @return {?SortedMap.<NamedNode, Node>}\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 /**\r\n * @private\r\n * @type {RegExp}\r\n */\r\n ChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\r\n return ChildrenNode;\r\n}());\r\n/**\r\n * @constructor\r\n * @extends {ChildrenNode}\r\n * @private\r\n */\r\nvar MaxNode = /** @class */ (function (_super) {\r\n tslib.__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 * @type {!MAX_NODE}\r\n * @const\r\n */\r\nvar MAX_NODE$2 = 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$2)\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(MAX_NODE$2);\r\nsetMaxNode$1(MAX_NODE$2);\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {?string|?number=} priority Optional priority to use. This will be ignored if the\r\n * passed JSON contains a .priority property.\r\n * @return {!Node}\r\n */\r\nfunction nodeFromJSON$1(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 util.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$1(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$1(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$1(priority), new IndexMap({ '.priority': sortedChildSet }, { '.priority': PRIORITY_INDEX }));\r\n }\r\n else {\r\n return new ChildrenNode(childSet, nodeFromJSON$1(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 (util.contains(json, key)) {\r\n if (key.substring(0, 1) !== '.') {\r\n // ignore metadata nodes.\r\n var childNode = nodeFromJSON$1(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$1(priority));\r\n }\r\n}\r\nsetNodeFromJSON(nodeFromJSON$1);\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n * @extends {Index}\r\n * @private\r\n */\r\nvar ValueIndex = /** @class */ (function (_super) {\r\n tslib.__extends(ValueIndex, _super);\r\n function ValueIndex() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n ValueIndex.prototype.isDefinedOn = function (node) {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueIndex.prototype.indexedValueChanged = function (oldNode, newNode) {\r\n return !oldNode.equals(newNode);\r\n };\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @param {*} indexValue\r\n * @param {string} name\r\n * @return {!NamedNode}\r\n */\r\n ValueIndex.prototype.makePost = function (indexValue, name) {\r\n var valueNode = nodeFromJSON$1(indexValue);\r\n return new NamedNode(name, valueNode);\r\n };\r\n /**\r\n * @return {!string} 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 Inc.\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 {!Path} indexPath\r\n * @constructor\r\n * @extends {Index}\r\n */\r\nvar PathIndex = /** @class */ (function (_super) {\r\n tslib.__extends(PathIndex, _super);\r\n function PathIndex(indexPath_) {\r\n var _this = _super.call(this) || this;\r\n _this.indexPath_ = indexPath_;\r\n util.assert(!indexPath_.isEmpty() && indexPath_.getFront() !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\r\n return _this;\r\n }\r\n /**\r\n * @param {!Node} snap\r\n * @return {!Node}\r\n * @protected\r\n */\r\n PathIndex.prototype.extractChild = function (snap) {\r\n return snap.getChild(this.indexPath_);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PathIndex.prototype.isDefinedOn = function (node) {\r\n return !node.getChild(this.indexPath_).isEmpty();\r\n };\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n PathIndex.prototype.makePost = function (indexValue, name) {\r\n var valueNode = nodeFromJSON$1(indexValue);\r\n var node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\r\n return new NamedNode(name, node);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PathIndex.prototype.maxPost = function () {\r\n var node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE$2);\r\n return new NamedNode(MAX_NAME, node);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n PathIndex.prototype.toString = function () {\r\n return this.indexPath_.slice().join('/');\r\n };\r\n return PathIndex;\r\n}(Index));\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 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 /**\r\n * @param {!Node} node_ A SnapshotNode to wrap.\r\n * @param {!Reference} ref_ The ref of the location this snapshot came from.\r\n * @param {!Index} index_ The iteration order for this snapshot\r\n */\r\n function DataSnapshot(node_, ref_, index_) {\r\n this.node_ = node_;\r\n this.ref_ = ref_;\r\n this.index_ = index_;\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 * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n DataSnapshot.prototype.val = function () {\r\n util.validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\r\n return this.node_.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 * @return {*} JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n DataSnapshot.prototype.exportVal = function () {\r\n util.validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\r\n return this.node_.val(true);\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 util.validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\r\n return this.exportVal();\r\n };\r\n /**\r\n * Returns whether the snapshot contains a non-null value.\r\n *\r\n * @return {boolean} Whether the snapshot contains a non-null value, or is empty.\r\n */\r\n DataSnapshot.prototype.exists = function () {\r\n util.validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\r\n return !this.node_.isEmpty();\r\n };\r\n /**\r\n * Returns a DataSnapshot of the specified child node's contents.\r\n *\r\n * @param {!string} childPathString Path to a child.\r\n * @return {!DataSnapshot} DataSnapshot for child node.\r\n */\r\n DataSnapshot.prototype.child = function (childPathString) {\r\n util.validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\r\n // Ensure the childPath is a string (can be a number)\r\n childPathString = String(childPathString);\r\n validatePathString('DataSnapshot.child', 1, childPathString, false);\r\n var childPath = new Path(childPathString);\r\n var childRef = this.ref_.child(childPath);\r\n return new DataSnapshot(this.node_.getChild(childPath), childRef, PRIORITY_INDEX);\r\n };\r\n /**\r\n * Returns whether the snapshot contains a child at the specified path.\r\n *\r\n * @param {!string} childPathString Path to a child.\r\n * @return {boolean} Whether the child exists.\r\n */\r\n DataSnapshot.prototype.hasChild = function (childPathString) {\r\n util.validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\r\n validatePathString('DataSnapshot.hasChild', 1, childPathString, false);\r\n var childPath = new Path(childPathString);\r\n return !this.node_.getChild(childPath).isEmpty();\r\n };\r\n /**\r\n * Returns the priority of the object, or null if no priority was set.\r\n *\r\n * @return {string|number|null} The priority.\r\n */\r\n DataSnapshot.prototype.getPriority = function () {\r\n util.validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\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 /**\r\n * Iterates through child nodes and calls the specified action for each one.\r\n *\r\n * @param {function(!DataSnapshot)} action Callback function to be called\r\n * for each child.\r\n * @return {boolean} 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 util.validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\r\n util.validateCallback('DataSnapshot.forEach', 1, action, false);\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, _this.ref_.child(key), PRIORITY_INDEX));\r\n });\r\n };\r\n /**\r\n * Returns whether this DataSnapshot has children.\r\n * @return {boolean} True if the DataSnapshot contains 1 or more child nodes.\r\n */\r\n DataSnapshot.prototype.hasChildren = function () {\r\n util.validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\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 Object.defineProperty(DataSnapshot.prototype, \"key\", {\r\n get: function () {\r\n return this.ref_.getKey();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Returns the number of children for this DataSnapshot.\r\n * @return {number} The number of children that this DataSnapshot contains.\r\n */\r\n DataSnapshot.prototype.numChildren = function () {\r\n util.validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\r\n return this.node_.numChildren();\r\n };\r\n /**\r\n * @return {Reference} The Firebase reference for the location this snapshot's data came from.\r\n */\r\n DataSnapshot.prototype.getRef = function () {\r\n util.validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\r\n return this.ref_;\r\n };\r\n Object.defineProperty(DataSnapshot.prototype, \"ref\", {\r\n get: function () {\r\n return this.getRef();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DataSnapshot;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @implements {Event}\r\n */\r\nvar DataEvent = /** @class */ (function () {\r\n /**\r\n * @param {!string} eventType One of: value, child_added, child_changed, child_moved, child_removed\r\n * @param {!EventRegistration} eventRegistration The function to call to with the event data. User provided\r\n * @param {!DataSnapshot} snapshot The data backing the event\r\n * @param {?string=} 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 /**\r\n * @inheritDoc\r\n */\r\n DataEvent.prototype.getPath = function () {\r\n var ref = this.snapshot.getRef();\r\n if (this.eventType === 'value') {\r\n return ref.path;\r\n }\r\n else {\r\n return ref.getParent().path;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n DataEvent.prototype.getEventType = function () {\r\n return this.eventType;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n DataEvent.prototype.getEventRunner = function () {\r\n return this.eventRegistration.getEventRunner(this);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n DataEvent.prototype.toString = function () {\r\n return (this.getPath().toString() +\r\n ':' +\r\n this.eventType +\r\n ':' +\r\n util.stringify(this.snapshot.exportVal()));\r\n };\r\n return DataEvent;\r\n}());\r\nvar CancelEvent = /** @class */ (function () {\r\n /**\r\n * @param {EventRegistration} eventRegistration\r\n * @param {Error} error\r\n * @param {!Path} path\r\n */\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 /**\r\n * @inheritDoc\r\n */\r\n CancelEvent.prototype.getPath = function () {\r\n return this.path;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n CancelEvent.prototype.getEventType = function () {\r\n return 'cancel';\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n CancelEvent.prototype.getEventRunner = function () {\r\n return this.eventRegistration.getEventRunner(this);\r\n };\r\n /**\r\n * @inheritDoc\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 Inc.\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 registration for 'value' events.\r\n */\r\nvar ValueEventRegistration = /** @class */ (function () {\r\n /**\r\n * @param {?function(!DataSnapshot)} callback_\r\n * @param {?function(Error)} cancelCallback_\r\n * @param {?Object} context_\r\n */\r\n function ValueEventRegistration(callback_, cancelCallback_, context_) {\r\n this.callback_ = callback_;\r\n this.cancelCallback_ = cancelCallback_;\r\n this.context_ = context_;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueEventRegistration.prototype.respondsTo = function (eventType) {\r\n return eventType === 'value';\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueEventRegistration.prototype.createEvent = function (change, query) {\r\n var index = query.getQueryParams().getIndex();\r\n return new DataEvent('value', this, new DataSnapshot(change.snapshotNode, query.getRef(), index));\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueEventRegistration.prototype.getEventRunner = function (eventData) {\r\n var ctx = this.context_;\r\n if (eventData.getEventType() === 'cancel') {\r\n util.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\r\n var cancelCB_1 = this.cancelCallback_;\r\n return function () {\r\n // We know that error exists, we checked above that this is a cancel event\r\n cancelCB_1.call(ctx, eventData.error);\r\n };\r\n }\r\n else {\r\n var cb_1 = this.callback_;\r\n return function () {\r\n cb_1.call(ctx, eventData.snapshot);\r\n };\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueEventRegistration.prototype.createCancelEvent = function (error, path) {\r\n if (this.cancelCallback_) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\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.callback_ || !this.callback_) {\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.callback_ === this.callback_ && other.context_ === this.context_);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ValueEventRegistration.prototype.hasAnyCallback = function () {\r\n return this.callback_ !== null;\r\n };\r\n return ValueEventRegistration;\r\n}());\r\n/**\r\n * Represents the registration of 1 or more child_xxx events.\r\n *\r\n * Currently, it is always exactly 1 child_xxx event, but the idea is we might let you\r\n * register a group of callbacks together in the future.\r\n *\r\n * @constructor\r\n * @implements {EventRegistration}\r\n */\r\nvar ChildEventRegistration = /** @class */ (function () {\r\n /**\r\n * @param {?Object.<string, function(!DataSnapshot, ?string=)>} callbacks_\r\n * @param {?function(Error)} cancelCallback_\r\n * @param {Object=} context_\r\n */\r\n function ChildEventRegistration(callbacks_, cancelCallback_, context_) {\r\n this.callbacks_ = callbacks_;\r\n this.cancelCallback_ = cancelCallback_;\r\n this.context_ = context_;\r\n }\r\n /**\r\n * @inheritDoc\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 util.contains(this.callbacks_, eventToCheck);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ChildEventRegistration.prototype.createCancelEvent = function (error, path) {\r\n if (this.cancelCallback_) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ChildEventRegistration.prototype.createEvent = function (change, query) {\r\n util.assert(change.childName != null, 'Child events should have a childName.');\r\n var ref = query.getRef().child(/** @type {!string} */ change.childName);\r\n var index = query.getQueryParams().getIndex();\r\n return new DataEvent(change.type, this, new DataSnapshot(change.snapshotNode, ref, index), change.prevName);\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ChildEventRegistration.prototype.getEventRunner = function (eventData) {\r\n var ctx = this.context_;\r\n if (eventData.getEventType() === 'cancel') {\r\n util.assert(this.cancelCallback_, 'Raising a cancel event on a listener with no cancel callback');\r\n var cancelCB_2 = this.cancelCallback_;\r\n return function () {\r\n // We know that error exists, we checked above that this is a cancel event\r\n cancelCB_2.call(ctx, eventData.error);\r\n };\r\n }\r\n else {\r\n var cb_2 = this.callbacks_[eventData.eventType];\r\n return function () {\r\n cb_2.call(ctx, eventData.snapshot, eventData.prevName);\r\n };\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ChildEventRegistration.prototype.matches = function (other) {\r\n var _this = this;\r\n if (other instanceof ChildEventRegistration) {\r\n if (!this.callbacks_ || !other.callbacks_) {\r\n return true;\r\n }\r\n else if (this.context_ === other.context_) {\r\n var otherKeys = Object.keys(other.callbacks_);\r\n var thisKeys = Object.keys(this.callbacks_);\r\n var otherCount = otherKeys.length;\r\n var thisCount = thisKeys.length;\r\n if (otherCount === thisCount) {\r\n // If count is 1, do an exact match on eventType, if either is defined but null, it's a match.\r\n // If event types don't match, not a match\r\n // If count is not 1, exact match across all\r\n if (otherCount === 1) {\r\n var otherKey = otherKeys[0];\r\n var thisKey = thisKeys[0];\r\n return (thisKey === otherKey &&\r\n (!other.callbacks_[otherKey] ||\r\n !this.callbacks_[thisKey] ||\r\n other.callbacks_[otherKey] === this.callbacks_[thisKey]));\r\n }\r\n else {\r\n // Exact match on each key.\r\n return thisKeys.every(function (eventType) {\r\n return other.callbacks_[eventType] === _this.callbacks_[eventType];\r\n });\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n ChildEventRegistration.prototype.hasAnyCallback = function () {\r\n return this.callbacks_ !== null;\r\n };\r\n return ChildEventRegistration;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\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(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(Query, \"__referenceConstructor\", {\r\n get: function () {\r\n util.assert(__referenceConstructor, 'Reference.ts has not been loaded');\r\n return __referenceConstructor;\r\n },\r\n set: function (val) {\r\n __referenceConstructor = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Validates start/end values for queries.\r\n * @param {!QueryParams} params\r\n * @private\r\n */\r\n Query.validateQueryEndpoints_ = function (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(), endAt(),' +\r\n '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 'endAt(), or equalTo() must be a valid priority value (null, a number, or a string).');\r\n }\r\n }\r\n else {\r\n util.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(), endAt(), or equalTo() cannot be ' +\r\n '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 * @param {!QueryParams} params\r\n * @private\r\n */\r\n Query.validateLimit_ = function (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(), endAt(), and limit(). Use limitToFirst() or limitToLast() instead.\");\r\n }\r\n };\r\n /**\r\n * Validates that no other order by call has been made\r\n * @param {!string} fnName\r\n * @private\r\n */\r\n Query.prototype.validateNoPreviousOrderByCall_ = function (fnName) {\r\n if (this.orderByCalled_ === true) {\r\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\r\n }\r\n };\r\n /**\r\n * @return {!QueryParams}\r\n */\r\n Query.prototype.getQueryParams = function () {\r\n return this.queryParams_;\r\n };\r\n /**\r\n * @return {!Reference}\r\n */\r\n Query.prototype.getRef = function () {\r\n util.validateArgCount('Query.ref', 0, 0, arguments.length);\r\n // This is a slight hack. We cannot goog.require('fb.api.Firebase'), since Firebase requires fb.api.Query.\r\n // However, we will always export 'Firebase' to the global namespace, so it's guaranteed to exist by the time this\r\n // method gets called.\r\n return new Query.__referenceConstructor(this.repo, this.path);\r\n };\r\n /**\r\n * @param {!string} eventType\r\n * @param {!function(DataSnapshot, string=)} callback\r\n * @param {(function(Error)|Object)=} cancelCallbackOrContext\r\n * @param {Object=} context\r\n * @return {!function(DataSnapshot, string=)}\r\n */\r\n Query.prototype.on = function (eventType, callback, cancelCallbackOrContext, context) {\r\n util.validateArgCount('Query.on', 2, 4, arguments.length);\r\n validateEventType('Query.on', 1, eventType, false);\r\n util.validateCallback('Query.on', 2, callback, false);\r\n var ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\r\n if (eventType === 'value') {\r\n this.onValueEvent(callback, ret.cancel, ret.context);\r\n }\r\n else {\r\n var callbacks = {};\r\n callbacks[eventType] = callback;\r\n this.onChildEvent(callbacks, ret.cancel, ret.context);\r\n }\r\n return callback;\r\n };\r\n /**\r\n * @param {!function(!DataSnapshot)} callback\r\n * @param {?function(Error)} cancelCallback\r\n * @param {?Object} context\r\n * @protected\r\n */\r\n Query.prototype.onValueEvent = function (callback, cancelCallback, context) {\r\n var container = new ValueEventRegistration(callback, cancelCallback || null, context || null);\r\n this.repo.addEventCallbackForQuery(this, container);\r\n };\r\n /**\r\n * @param {!Object.<string, !function(!DataSnapshot, ?string)>} callbacks\r\n * @param {?function(Error)} cancelCallback\r\n * @param {?Object} context\r\n * @protected\r\n */\r\n Query.prototype.onChildEvent = function (callbacks, cancelCallback, context) {\r\n var container = new ChildEventRegistration(callbacks, cancelCallback, context);\r\n this.repo.addEventCallbackForQuery(this, container);\r\n };\r\n /**\r\n * @param {string=} eventType\r\n * @param {(function(!DataSnapshot, ?string=))=} callback\r\n * @param {Object=} context\r\n */\r\n Query.prototype.off = function (eventType, callback, context) {\r\n util.validateArgCount('Query.off', 0, 3, arguments.length);\r\n validateEventType('Query.off', 1, eventType, true);\r\n util.validateCallback('Query.off', 2, callback, true);\r\n util.validateContextObject('Query.off', 3, context, true);\r\n var container = null;\r\n var callbacks = null;\r\n if (eventType === 'value') {\r\n var valueCallback = callback || null;\r\n container = new ValueEventRegistration(valueCallback, null, context || null);\r\n }\r\n else if (eventType) {\r\n if (callback) {\r\n callbacks = {};\r\n callbacks[eventType] = callback;\r\n }\r\n container = new ChildEventRegistration(callbacks, null, context || null);\r\n }\r\n this.repo.removeEventCallbackForQuery(this, container);\r\n };\r\n /**\r\n * Attaches a listener, waits for the first event, and then removes the listener\r\n * @param {!string} eventType\r\n * @param {!function(!DataSnapshot, string=)} userCallback\r\n * @param failureCallbackOrContext\r\n * @param context\r\n * @return {!firebase.Promise}\r\n */\r\n Query.prototype.once = function (eventType, userCallback, failureCallbackOrContext, context) {\r\n var _this = this;\r\n util.validateArgCount('Query.once', 1, 4, arguments.length);\r\n validateEventType('Query.once', 1, eventType, false);\r\n util.validateCallback('Query.once', 2, userCallback, true);\r\n var ret = Query.getCancelAndContextArgs_('Query.once', failureCallbackOrContext, context);\r\n // TODO: Implement this more efficiently (in particular, use 'get' wire protocol for 'value' event)\r\n // TODO: consider actually wiring the callbacks into the promise. We cannot do this without a breaking change\r\n // because the API currently expects callbacks will be called synchronously if the data is cached, but this is\r\n // against the Promise specification.\r\n var firstCall = true;\r\n var deferred = new util.Deferred();\r\n // A dummy error handler in case a user wasn't expecting promises\r\n deferred.promise.catch(function () { });\r\n var onceCallback = function (snapshot) {\r\n // NOTE: Even though we unsubscribe, we may get called multiple times if a single action (e.g. set() with JSON)\r\n // triggers multiple events (e.g. child_added or child_changed).\r\n if (firstCall) {\r\n firstCall = false;\r\n _this.off(eventType, onceCallback);\r\n if (userCallback) {\r\n userCallback.bind(ret.context)(snapshot);\r\n }\r\n deferred.resolve(snapshot);\r\n }\r\n };\r\n this.on(eventType, onceCallback, \r\n /*cancel=*/ function (err) {\r\n _this.off(eventType, onceCallback);\r\n if (ret.cancel) {\r\n ret.cancel.bind(ret.context)(err);\r\n }\r\n deferred.reject(err);\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 * @param {!number} limit\r\n * @return {!Query}\r\n */\r\n Query.prototype.limitToFirst = function (limit) {\r\n util.validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\r\n if (typeof limit !== 'number' ||\r\n Math.floor(limit) !== limit ||\r\n limit <= 0) {\r\n throw new Error('Query.limitToFirst: First argument must be a positive integer.');\r\n }\r\n if (this.queryParams_.hasLimit()) {\r\n throw new Error('Query.limitToFirst: Limit was already set (by another call to limit, ' +\r\n 'limitToFirst, or limitToLast).');\r\n }\r\n return new Query(this.repo, this.path, this.queryParams_.limitToFirst(limit), this.orderByCalled_);\r\n };\r\n /**\r\n * Set a limit and anchor it to the end of the window.\r\n * @param {!number} limit\r\n * @return {!Query}\r\n */\r\n Query.prototype.limitToLast = function (limit) {\r\n util.validateArgCount('Query.limitToLast', 1, 1, arguments.length);\r\n if (typeof limit !== 'number' ||\r\n Math.floor(limit) !== limit ||\r\n limit <= 0) {\r\n throw new Error('Query.limitToLast: First argument must be a positive integer.');\r\n }\r\n if (this.queryParams_.hasLimit()) {\r\n throw new Error('Query.limitToLast: Limit was already set (by another call to limit, ' +\r\n 'limitToFirst, or limitToLast).');\r\n }\r\n return new Query(this.repo, this.path, this.queryParams_.limitToLast(limit), this.orderByCalled_);\r\n };\r\n /**\r\n * Given a child path, return a new query ordered by the specified grandchild path.\r\n * @param {!string} path\r\n * @return {!Query}\r\n */\r\n Query.prototype.orderByChild = function (path) {\r\n util.validateArgCount('Query.orderByChild', 1, 1, arguments.length);\r\n if (path === '$key') {\r\n throw new Error('Query.orderByChild: \"$key\" is invalid. Use Query.orderByKey() instead.');\r\n }\r\n else if (path === '$priority') {\r\n throw new Error('Query.orderByChild: \"$priority\" is invalid. Use Query.orderByPriority() instead.');\r\n }\r\n else if (path === '$value') {\r\n throw new Error('Query.orderByChild: \"$value\" is invalid. Use Query.orderByValue() instead.');\r\n }\r\n validatePathString('Query.orderByChild', 1, path, false);\r\n this.validateNoPreviousOrderByCall_('Query.orderByChild');\r\n var parsedPath = new Path(path);\r\n if (parsedPath.isEmpty()) {\r\n throw new Error('Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead.');\r\n }\r\n var index = new PathIndex(parsedPath);\r\n var newParams = this.queryParams_.orderBy(index);\r\n Query.validateQueryEndpoints_(newParams);\r\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\r\n };\r\n /**\r\n * Return a new query ordered by the KeyIndex\r\n * @return {!Query}\r\n */\r\n Query.prototype.orderByKey = function () {\r\n util.validateArgCount('Query.orderByKey', 0, 0, arguments.length);\r\n this.validateNoPreviousOrderByCall_('Query.orderByKey');\r\n var newParams = this.queryParams_.orderBy(KEY_INDEX);\r\n Query.validateQueryEndpoints_(newParams);\r\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\r\n };\r\n /**\r\n * Return a new query ordered by the PriorityIndex\r\n * @return {!Query}\r\n */\r\n Query.prototype.orderByPriority = function () {\r\n util.validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\r\n this.validateNoPreviousOrderByCall_('Query.orderByPriority');\r\n var newParams = this.queryParams_.orderBy(PRIORITY_INDEX);\r\n Query.validateQueryEndpoints_(newParams);\r\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\r\n };\r\n /**\r\n * Return a new query ordered by the ValueIndex\r\n * @return {!Query}\r\n */\r\n Query.prototype.orderByValue = function () {\r\n util.validateArgCount('Query.orderByValue', 0, 0, arguments.length);\r\n this.validateNoPreviousOrderByCall_('Query.orderByValue');\r\n var newParams = this.queryParams_.orderBy(VALUE_INDEX);\r\n Query.validateQueryEndpoints_(newParams);\r\n return new Query(this.repo, this.path, newParams, /*orderByCalled=*/ true);\r\n };\r\n /**\r\n * @param {number|string|boolean|null} value\r\n * @param {?string=} name\r\n * @return {!Query}\r\n */\r\n Query.prototype.startAt = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n util.validateArgCount('Query.startAt', 0, 2, arguments.length);\r\n validateFirebaseDataArg('Query.startAt', 1, value, this.path, true);\r\n validateKey('Query.startAt', 2, name, true);\r\n var newParams = this.queryParams_.startAt(value, name);\r\n Query.validateLimit_(newParams);\r\n Query.validateQueryEndpoints_(newParams);\r\n if (this.queryParams_.hasStart()) {\r\n throw new Error('Query.startAt: Starting point was already set (by another call to startAt ' +\r\n 'or equalTo).');\r\n }\r\n // Calling with no params tells us to start at the beginning.\r\n if (value === undefined) {\r\n value = null;\r\n name = null;\r\n }\r\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\r\n };\r\n /**\r\n * @param {number|string|boolean|null} value\r\n * @param {?string=} name\r\n * @return {!Query}\r\n */\r\n Query.prototype.endAt = function (value, name) {\r\n if (value === void 0) { value = null; }\r\n util.validateArgCount('Query.endAt', 0, 2, arguments.length);\r\n validateFirebaseDataArg('Query.endAt', 1, value, this.path, true);\r\n validateKey('Query.endAt', 2, name, true);\r\n var newParams = this.queryParams_.endAt(value, name);\r\n Query.validateLimit_(newParams);\r\n Query.validateQueryEndpoints_(newParams);\r\n if (this.queryParams_.hasEnd()) {\r\n throw new Error('Query.endAt: Ending point was already set (by another call to endAt or ' +\r\n 'equalTo).');\r\n }\r\n return new Query(this.repo, this.path, newParams, this.orderByCalled_);\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 * @param {number|string|boolean|null} value\r\n * @param {string=} name\r\n * @return {!Query}\r\n */\r\n Query.prototype.equalTo = function (value, name) {\r\n util.validateArgCount('Query.equalTo', 1, 2, arguments.length);\r\n validateFirebaseDataArg('Query.equalTo', 1, value, this.path, false);\r\n validateKey('Query.equalTo', 2, name, true);\r\n if (this.queryParams_.hasStart()) {\r\n throw new Error('Query.equalTo: Starting point was already set (by another call to startAt or ' +\r\n 'equalTo).');\r\n }\r\n if (this.queryParams_.hasEnd()) {\r\n throw new Error('Query.equalTo: Ending point was already set (by another call to endAt or ' +\r\n 'equalTo).');\r\n }\r\n return this.startAt(value, name).endAt(value, name);\r\n };\r\n /**\r\n * @return {!string} URL for this location.\r\n */\r\n Query.prototype.toString = function () {\r\n util.validateArgCount('Query.toString', 0, 0, arguments.length);\r\n return this.repo.toString() + this.path.toUrlEncodedString();\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 util.validateArgCount('Query.toJSON', 0, 1, arguments.length);\r\n return this.toString();\r\n };\r\n /**\r\n * An object representation of the query parameters used by this Query.\r\n * @return {!Object}\r\n */\r\n Query.prototype.queryObject = function () {\r\n return this.queryParams_.getQueryObject();\r\n };\r\n /**\r\n * @return {!string}\r\n */\r\n Query.prototype.queryIdentifier = function () {\r\n var obj = this.queryObject();\r\n var id = ObjectToUniqueKey(obj);\r\n return id === '{}' ? 'default' : id;\r\n };\r\n /**\r\n * Return true if this query and the provided query are equivalent; otherwise, return false.\r\n * @param {Query} other\r\n * @return {boolean}\r\n */\r\n Query.prototype.isEqual = function (other) {\r\n util.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 var sameRepo = this.repo === other.repo;\r\n var samePath = this.path.equals(other.path);\r\n var sameQueryIdentifier = this.queryIdentifier() === other.queryIdentifier();\r\n return sameRepo && samePath && sameQueryIdentifier;\r\n };\r\n /**\r\n * Helper used by .on and .once to extract the context and or cancel arguments.\r\n * @param {!string} fnName The function name (on or once)\r\n * @param {(function(Error)|Object)=} cancelOrContext\r\n * @param {Object=} context\r\n * @return {{cancel: ?function(Error), context: ?Object}}\r\n * @private\r\n */\r\n Query.getCancelAndContextArgs_ = function (fnName, cancelOrContext, context) {\r\n var ret = { cancel: null, context: null };\r\n if (cancelOrContext && context) {\r\n ret.cancel = cancelOrContext;\r\n util.validateCallback(fnName, 3, ret.cancel, true);\r\n ret.context = context;\r\n util.validateContextObject(fnName, 4, 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(util.errorPrefix(fnName, 3, true) +\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 this.getRef();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Query;\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 = this.path_.child(childName);\r\n return new DeferredValueProvider(this.syncTree_, childPath);\r\n };\r\n DeferredValueProvider.prototype.node = function () {\r\n return this.syncTree_.calcCompleteEventCache(this.path_);\r\n };\r\n return DeferredValueProvider;\r\n}());\r\n/**\r\n * Generate placeholders for deferred values.\r\n * @param {?Object} values\r\n * @return {!Object}\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 * @param {(Object|string|number|boolean)} value\r\n * @param {!Object} serverValues\r\n * @return {!(string|number|boolean)}\r\n */\r\nvar resolveDeferredLeafValue = function (value, existingVal, serverValues) {\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n util.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 util.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 util.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 util.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 util.assert(false, 'Unexpected increment value: ' + delta);\r\n }\r\n var existingNode = existing.node();\r\n util.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 path to which write is relative\r\n * @param {!Node} node new data written at path\r\n * @param {!SyncTree} syncTree current data\r\n * @param {!Object} serverValues\r\n * @return {!SparseSnapshotTree}\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 * @param {!Node} node\r\n * @param {!Object} serverValues\r\n * @return {!Node}\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$1(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 Inc.\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 * Helper class to store a sparse set of snapshots.\r\n */\r\nvar SparseSnapshotTree = /** @class */ (function () {\r\n function SparseSnapshotTree() {\r\n this.value = null;\r\n this.children = new Map();\r\n }\r\n /**\r\n * Gets the node stored at the given path if one exists.\r\n *\r\n * @param path Path to look up snapshot for.\r\n * @return The retrieved node, or null.\r\n */\r\n SparseSnapshotTree.prototype.find = function (path) {\r\n if (this.value != null) {\r\n return this.value.getChild(path);\r\n }\r\n else if (!path.isEmpty() && this.children.size > 0) {\r\n var childKey = path.getFront();\r\n path = path.popFront();\r\n if (this.children.has(childKey)) {\r\n var childTree = this.children.get(childKey);\r\n return childTree.find(path);\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 * 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\n SparseSnapshotTree.prototype.remember = function (path, data) {\r\n if (path.isEmpty()) {\r\n this.value = data;\r\n this.children.clear();\r\n }\r\n else if (this.value !== null) {\r\n this.value = this.value.updateChild(path, data);\r\n }\r\n else {\r\n var childKey = path.getFront();\r\n if (!this.children.has(childKey)) {\r\n this.children.set(childKey, new SparseSnapshotTree());\r\n }\r\n var child = this.children.get(childKey);\r\n path = path.popFront();\r\n child.remember(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 * @return True if this node should now be removed.\r\n */\r\n SparseSnapshotTree.prototype.forget = function (path) {\r\n if (path.isEmpty()) {\r\n this.value = null;\r\n this.children.clear();\r\n return true;\r\n }\r\n else {\r\n if (this.value !== null) {\r\n if (this.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 = this.value;\r\n this.value = null;\r\n var self_1 = this;\r\n value.forEachChild(PRIORITY_INDEX, function (key, tree) {\r\n self_1.remember(new Path(key), tree);\r\n });\r\n return this.forget(path);\r\n }\r\n }\r\n else if (this.children.size > 0) {\r\n var childKey = path.getFront();\r\n path = path.popFront();\r\n if (this.children.has(childKey)) {\r\n var safeToRemove = this.children.get(childKey).forget(path);\r\n if (safeToRemove) {\r\n this.children.delete(childKey);\r\n }\r\n }\r\n return this.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\n SparseSnapshotTree.prototype.forEachTree = function (prefixPath, func) {\r\n if (this.value !== null) {\r\n func(prefixPath, this.value);\r\n }\r\n else {\r\n this.forEachChild(function (key, tree) {\r\n var path = new Path(prefixPath.toString() + '/' + key);\r\n tree.forEachTree(path, func);\r\n });\r\n }\r\n };\r\n /**\r\n * Iterates through each immediate child and triggers the callback.\r\n *\r\n * @param func The function to invoke for each child.\r\n */\r\n SparseSnapshotTree.prototype.forEachChild = function (func) {\r\n this.children.forEach(function (tree, key) {\r\n func(key, tree);\r\n });\r\n };\r\n return SparseSnapshotTree;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n/**\r\n * @param {boolean} fromUser\r\n * @param {boolean} fromServer\r\n * @param {?string} queryId\r\n * @param {boolean} tagged\r\n * @constructor\r\n */\r\nvar OperationSource = /** @class */ (function () {\r\n function OperationSource(fromUser, fromServer, queryId, tagged) {\r\n this.fromUser = fromUser;\r\n this.fromServer = fromServer;\r\n this.queryId = queryId;\r\n this.tagged = tagged;\r\n util.assert(!tagged || fromServer, 'Tagged queries must be from server.');\r\n }\r\n /**\r\n * @const\r\n * @type {!OperationSource}\r\n */\r\n OperationSource.User = new OperationSource(\r\n /*fromUser=*/ true, false, null, \r\n /*tagged=*/ false);\r\n /**\r\n * @const\r\n * @type {!OperationSource}\r\n */\r\n OperationSource.Server = new OperationSource(false, \r\n /*fromServer=*/ true, null, \r\n /*tagged=*/ false);\r\n /**\r\n * @param {string} queryId\r\n * @return {!OperationSource}\r\n */\r\n OperationSource.forServerTaggedQuery = function (queryId) {\r\n return new OperationSource(false, \r\n /*fromServer=*/ true, queryId, \r\n /*tagged=*/ true);\r\n };\r\n return OperationSource;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 *\r\n * @param {!Path} path\r\n * @param {!ImmutableTree<!boolean>} affectedTree A tree containing true for each affected path. Affected paths can't overlap.\r\n * @param {!boolean} revert\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 = OperationSource.User;\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n AckUserWrite.prototype.operationForChild = function (childName) {\r\n if (!this.path.isEmpty()) {\r\n util.assert(this.path.getFront() === childName, 'operationForChild called for unrelated child.');\r\n return new AckUserWrite(this.path.popFront(), this.affectedTree, this.revert);\r\n }\r\n else if (this.affectedTree.value != null) {\r\n util.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(Path.Empty, childTree, this.revert);\r\n }\r\n };\r\n return AckUserWrite;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @const\r\n * @type {!SortedMap.<string, !ImmutableTree.<?>>}\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 /**\r\n * @template T\r\n * @param {?T} value\r\n * @param {SortedMap.<string, !ImmutableTree.<T>>=} children\r\n */\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 /**\r\n * @template T\r\n * @param {!Object.<string, !T>} obj\r\n * @return {!ImmutableTree.<!T>}\r\n */\r\n ImmutableTree.fromObject = function (obj) {\r\n var tree = ImmutableTree.Empty;\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 * @return {boolean}\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:} objects\r\n * on the way back out, it may be better to pass down a pathSoFar obj.\r\n *\r\n * @param {!Path} relativePath The remainder of the path\r\n * @param {function(T):boolean} predicate The predicate to satisfy to return a\r\n * node\r\n * @return {?{path:!Path, value:!T}}\r\n */\r\n ImmutableTree.prototype.findRootMostMatchingPathAndValue = function (relativePath, predicate) {\r\n if (this.value != null && predicate(this.value)) {\r\n return { path: Path.Empty, value: this.value };\r\n }\r\n else {\r\n if (relativePath.isEmpty()) {\r\n return null;\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var child = this.children.get(front);\r\n if (child !== null) {\r\n var childExistingPathAndValue = child.findRootMostMatchingPathAndValue(relativePath.popFront(), predicate);\r\n if (childExistingPathAndValue != null) {\r\n var fullPath = new Path(front).child(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 * @param {!Path} relativePath\r\n * @return {?{path: !Path, value: !T}}\r\n */\r\n ImmutableTree.prototype.findRootMostValueAndPath = function (relativePath) {\r\n return this.findRootMostMatchingPathAndValue(relativePath, function () { return true; });\r\n };\r\n /**\r\n * @param {!Path} relativePath\r\n * @return {!ImmutableTree.<T>} The subtree at the given path\r\n */\r\n ImmutableTree.prototype.subtree = function (relativePath) {\r\n if (relativePath.isEmpty()) {\r\n return this;\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var childTree = this.children.get(front);\r\n if (childTree !== null) {\r\n return childTree.subtree(relativePath.popFront());\r\n }\r\n else {\r\n return ImmutableTree.Empty;\r\n }\r\n }\r\n };\r\n /**\r\n * Sets a value at the specified path.\r\n *\r\n * @param {!Path} relativePath Path to set value at.\r\n * @param {?T} toSet Value to set.\r\n * @return {!ImmutableTree.<T>} Resulting tree.\r\n */\r\n ImmutableTree.prototype.set = function (relativePath, toSet) {\r\n if (relativePath.isEmpty()) {\r\n return new ImmutableTree(toSet, this.children);\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var child = this.children.get(front) || ImmutableTree.Empty;\r\n var newChild = child.set(relativePath.popFront(), 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 {!Path} relativePath Path to value to remove.\r\n * @return {!ImmutableTree.<T>} Resulting tree.\r\n */\r\n ImmutableTree.prototype.remove = function (relativePath) {\r\n if (relativePath.isEmpty()) {\r\n if (this.children.isEmpty()) {\r\n return ImmutableTree.Empty;\r\n }\r\n else {\r\n return new ImmutableTree(null, this.children);\r\n }\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var child = this.children.get(front);\r\n if (child) {\r\n var newChild = child.remove(relativePath.popFront());\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 ImmutableTree.Empty;\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 {!Path} relativePath Path to get value for.\r\n * @return {?T} Value at path, or null.\r\n */\r\n ImmutableTree.prototype.get = function (relativePath) {\r\n if (relativePath.isEmpty()) {\r\n return this.value;\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var child = this.children.get(front);\r\n if (child) {\r\n return child.get(relativePath.popFront());\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 {!Path} relativePath Path to replace subtree for.\r\n * @param {!ImmutableTree} newTree New tree.\r\n * @return {!ImmutableTree} Resulting tree.\r\n */\r\n ImmutableTree.prototype.setTree = function (relativePath, newTree) {\r\n if (relativePath.isEmpty()) {\r\n return newTree;\r\n }\r\n else {\r\n var front = relativePath.getFront();\r\n var child = this.children.get(front) || ImmutableTree.Empty;\r\n var newChild = child.setTree(relativePath.popFront(), 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 * @template V\r\n * @param {function(Path, ?T, Object.<string, V>):V} fn\r\n * @return {V}\r\n */\r\n ImmutableTree.prototype.fold = function (fn) {\r\n return this.fold_(Path.Empty, fn);\r\n };\r\n /**\r\n * Recursive helper for public-facing fold() method\r\n * @template V\r\n * @param {!Path} pathSoFar\r\n * @param {function(Path, ?T, Object.<string, V>):V} fn\r\n * @return {V}\r\n * @private\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_(pathSoFar.child(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 * @template V\r\n * @param {!Path} path\r\n * @param {!function(!Path, !T):?V} f\r\n * @return {?V}\r\n */\r\n ImmutableTree.prototype.findOnPath = function (path, f) {\r\n return this.findOnPath_(path, Path.Empty, 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 (pathToFollow.isEmpty()) {\r\n return null;\r\n }\r\n else {\r\n var front = pathToFollow.getFront();\r\n var nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.findOnPath_(pathToFollow.popFront(), pathSoFar.child(front), f);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n *\r\n * @param {!Path} path\r\n * @param {!function(!Path, !T)} f\r\n * @returns {!ImmutableTree.<T>}\r\n */\r\n ImmutableTree.prototype.foreachOnPath = function (path, f) {\r\n return this.foreachOnPath_(path, Path.Empty, f);\r\n };\r\n ImmutableTree.prototype.foreachOnPath_ = function (pathToFollow, currentRelativePath, f) {\r\n if (pathToFollow.isEmpty()) {\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 = pathToFollow.getFront();\r\n var nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.foreachOnPath_(pathToFollow.popFront(), currentRelativePath.child(front), f);\r\n }\r\n else {\r\n return ImmutableTree.Empty;\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 {function(!Path, !T)} f A function to be called with\r\n * the path from the root of the tree to a node, and the value at that node.\r\n * Called in depth-first order.\r\n */\r\n ImmutableTree.prototype.foreach = function (f) {\r\n this.foreach_(Path.Empty, f);\r\n };\r\n ImmutableTree.prototype.foreach_ = function (currentRelativePath, f) {\r\n this.children.inorderTraversal(function (childName, childTree) {\r\n childTree.foreach_(currentRelativePath.child(childName), f);\r\n });\r\n if (this.value) {\r\n f(currentRelativePath, this.value);\r\n }\r\n };\r\n /**\r\n *\r\n * @param {function(string, !T)} f\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ImmutableTree.Empty = new ImmutableTree(null);\r\n return ImmutableTree;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {!OperationSource} source\r\n * @param {!Path} path\r\n * @constructor\r\n * @implements {Operation}\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 (this.path.isEmpty()) {\r\n return new ListenComplete(this.source, Path.Empty);\r\n }\r\n else {\r\n return new ListenComplete(this.source, this.path.popFront());\r\n }\r\n };\r\n return ListenComplete;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {!OperationSource} source\r\n * @param {!Path} path\r\n * @param {!Node} snap\r\n * @constructor\r\n * @implements {Operation}\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 (this.path.isEmpty()) {\r\n return new Overwrite(this.source, Path.Empty, this.snap.getImmediateChild(childName));\r\n }\r\n else {\r\n return new Overwrite(this.source, this.path.popFront(), this.snap);\r\n }\r\n };\r\n return Overwrite;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 {!OperationSource} source\r\n * @param {!Path} path\r\n * @param {!ImmutableTree.<!Node>} children\r\n * @constructor\r\n * @implements {Operation}\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 /**\r\n * @inheritDoc\r\n */\r\n Merge.prototype.operationForChild = function (childName) {\r\n if (this.path.isEmpty()) {\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, Path.Empty, childTree.value);\r\n }\r\n else {\r\n // This is a merge at a deeper level\r\n return new Merge(this.source, Path.Empty, childTree);\r\n }\r\n }\r\n else {\r\n util.assert(this.path.getFront() === childName, \"Can't get a merge for a child not on the path of the operation\");\r\n return new Merge(this.source, this.path.popFront(), this.children);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\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 Inc.\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 /**\r\n * @param {!Node} node_\r\n * @param {boolean} fullyInitialized_\r\n * @param {boolean} filtered_\r\n */\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 * @return {boolean}\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 * @return {boolean}\r\n */\r\n CacheNode.prototype.isFiltered = function () {\r\n return this.filtered_;\r\n };\r\n /**\r\n * @param {!Path} path\r\n * @return {boolean}\r\n */\r\n CacheNode.prototype.isCompleteForPath = function (path) {\r\n if (path.isEmpty()) {\r\n return this.isFullyInitialized() && !this.filtered_;\r\n }\r\n var childKey = path.getFront();\r\n return this.isCompleteForChild(childKey);\r\n };\r\n /**\r\n * @param {!string} key\r\n * @return {boolean}\r\n */\r\n CacheNode.prototype.isCompleteForChild = function (key) {\r\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\r\n };\r\n /**\r\n * @return {!Node}\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 Inc.\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 * Stores the data we have cached for a view.\r\n *\r\n * serverSnap is the cached server data, eventSnap is the cached event data (server data plus any local writes).\r\n *\r\n * @constructor\r\n */\r\nvar ViewCache = /** @class */ (function () {\r\n /**\r\n *\r\n * @param {!CacheNode} eventCache_\r\n * @param {!CacheNode} serverCache_\r\n */\r\n function ViewCache(eventCache_, serverCache_) {\r\n this.eventCache_ = eventCache_;\r\n this.serverCache_ = serverCache_;\r\n }\r\n /**\r\n * @param {!Node} eventSnap\r\n * @param {boolean} complete\r\n * @param {boolean} filtered\r\n * @return {!ViewCache}\r\n */\r\n ViewCache.prototype.updateEventSnap = function (eventSnap, complete, filtered) {\r\n return new ViewCache(new CacheNode(eventSnap, complete, filtered), this.serverCache_);\r\n };\r\n /**\r\n * @param {!Node} serverSnap\r\n * @param {boolean} complete\r\n * @param {boolean} filtered\r\n * @return {!ViewCache}\r\n */\r\n ViewCache.prototype.updateServerSnap = function (serverSnap, complete, filtered) {\r\n return new ViewCache(this.eventCache_, new CacheNode(serverSnap, complete, filtered));\r\n };\r\n /**\r\n * @return {!CacheNode}\r\n */\r\n ViewCache.prototype.getEventCache = function () {\r\n return this.eventCache_;\r\n };\r\n /**\r\n * @return {?Node}\r\n */\r\n ViewCache.prototype.getCompleteEventSnap = function () {\r\n return this.eventCache_.isFullyInitialized()\r\n ? this.eventCache_.getNode()\r\n : null;\r\n };\r\n /**\r\n * @return {!CacheNode}\r\n */\r\n ViewCache.prototype.getServerCache = function () {\r\n return this.serverCache_;\r\n };\r\n /**\r\n * @return {?Node}\r\n */\r\n ViewCache.prototype.getCompleteServerSnap = function () {\r\n return this.serverCache_.isFullyInitialized()\r\n ? this.serverCache_.getNode()\r\n : null;\r\n };\r\n /**\r\n * @const\r\n * @type {ViewCache}\r\n */\r\n ViewCache.Empty = new ViewCache(new CacheNode(ChildrenNode.EMPTY_NODE, \r\n /*fullyInitialized=*/ false, \r\n /*filtered=*/ false), new CacheNode(ChildrenNode.EMPTY_NODE, \r\n /*fullyInitialized=*/ false, \r\n /*filtered=*/ false));\r\n return ViewCache;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n * @struct\r\n * @param {!string} type The event type\r\n * @param {!Node} snapshotNode The data\r\n * @param {string=} childName The name for this child, if it's a child event\r\n * @param {Node=} oldSnap Used for intermediate processing of child changed events\r\n * @param {string=} prevName The name for the previous child, if applicable\r\n */\r\nvar Change = /** @class */ (function () {\r\n function Change(type, snapshotNode, childName, oldSnap, prevName) {\r\n this.type = type;\r\n this.snapshotNode = snapshotNode;\r\n this.childName = childName;\r\n this.oldSnap = oldSnap;\r\n this.prevName = prevName;\r\n }\r\n /**\r\n * @param {!Node} snapshot\r\n * @return {!Change}\r\n */\r\n Change.valueChange = function (snapshot) {\r\n return new Change(Change.VALUE, snapshot);\r\n };\r\n /**\r\n * @param {string} childKey\r\n * @param {!Node} snapshot\r\n * @return {!Change}\r\n */\r\n Change.childAddedChange = function (childKey, snapshot) {\r\n return new Change(Change.CHILD_ADDED, snapshot, childKey);\r\n };\r\n /**\r\n * @param {string} childKey\r\n * @param {!Node} snapshot\r\n * @return {!Change}\r\n */\r\n Change.childRemovedChange = function (childKey, snapshot) {\r\n return new Change(Change.CHILD_REMOVED, snapshot, childKey);\r\n };\r\n /**\r\n * @param {string} childKey\r\n * @param {!Node} newSnapshot\r\n * @param {!Node} oldSnapshot\r\n * @return {!Change}\r\n */\r\n Change.childChangedChange = function (childKey, newSnapshot, oldSnapshot) {\r\n return new Change(Change.CHILD_CHANGED, newSnapshot, childKey, oldSnapshot);\r\n };\r\n /**\r\n * @param {string} childKey\r\n * @param {!Node} snapshot\r\n * @return {!Change}\r\n */\r\n Change.childMovedChange = function (childKey, snapshot) {\r\n return new Change(Change.CHILD_MOVED, snapshot, childKey);\r\n };\r\n //event types\r\n /** Event type for a child added */\r\n Change.CHILD_ADDED = 'child_added';\r\n /** Event type for a child removed */\r\n Change.CHILD_REMOVED = 'child_removed';\r\n /** Event type for a child changed */\r\n Change.CHILD_CHANGED = 'child_changed';\r\n /** Event type for a child moved */\r\n Change.CHILD_MOVED = 'child_moved';\r\n /** Event type for a value change */\r\n Change.VALUE = 'value';\r\n return Change;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n * @constructor\r\n * @implements {NodeFilter}\r\n * @param {!Index} index\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 util.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(Change.childRemovedChange(key, oldChild));\r\n }\r\n else {\r\n util.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(Change.childAddedChange(key, newChild));\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(Change.childChangedChange(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 /**\r\n * @inheritDoc\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(Change.childRemovedChange(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(Change.childChangedChange(key, childNode, oldChild));\r\n }\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(Change.childAddedChange(key, childNode));\r\n }\r\n });\r\n }\r\n }\r\n return newSnap.withIndex(this.index_);\r\n };\r\n /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n IndexedFilter.prototype.filtersNodes = function () {\r\n return false;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n IndexedFilter.prototype.getIndexedFilter = function () {\r\n return this;\r\n };\r\n /**\r\n * @inheritDoc\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 Inc.\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 util.assert(type === Change.CHILD_ADDED ||\r\n type === Change.CHILD_CHANGED ||\r\n type === Change.CHILD_REMOVED, 'Only child changes supported for tracking');\r\n util.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 === Change.CHILD_ADDED && oldType === Change.CHILD_REMOVED) {\r\n this.changeMap.set(childKey, Change.childChangedChange(childKey, change.snapshotNode, oldChange.snapshotNode));\r\n }\r\n else if (type === Change.CHILD_REMOVED &&\r\n oldType === Change.CHILD_ADDED) {\r\n this.changeMap.delete(childKey);\r\n }\r\n else if (type === Change.CHILD_REMOVED &&\r\n oldType === Change.CHILD_CHANGED) {\r\n this.changeMap.set(childKey, Change.childRemovedChange(childKey, oldChange.oldSnap));\r\n }\r\n else if (type === Change.CHILD_CHANGED &&\r\n oldType === Change.CHILD_ADDED) {\r\n this.changeMap.set(childKey, Change.childAddedChange(childKey, change.snapshotNode));\r\n }\r\n else if (type === Change.CHILD_CHANGED &&\r\n oldType === Change.CHILD_CHANGED) {\r\n this.changeMap.set(childKey, Change.childChangedChange(childKey, change.snapshotNode, oldChange.oldSnap));\r\n }\r\n else {\r\n throw util.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 Inc.\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 * @private\r\n * @constructor\r\n * @implements CompleteChildSource\r\n */\r\n// eslint-disable-next-line @typescript-eslint/class-name-casing\r\nvar NoCompleteChildSource_ = /** @class */ (function () {\r\n function NoCompleteChildSource_() {\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n NoCompleteChildSource_.prototype.getCompleteChild = function (childKey) {\r\n return null;\r\n };\r\n /**\r\n * @inheritDoc\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 * @const\r\n * @type {!CompleteChildSource}\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\n *\r\n * @implements CompleteChildSource\r\n */\r\nvar WriteTreeCompleteChildSource = /** @class */ (function () {\r\n /**\r\n * @param {!WriteTreeRef} writes_\r\n * @param {!ViewCache} viewCache_\r\n * @param {?Node} optCompleteServerCache_\r\n */\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 /**\r\n * @inheritDoc\r\n */\r\n WriteTreeCompleteChildSource.prototype.getCompleteChild = function (childKey) {\r\n var node = this.viewCache_.getEventCache();\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_.getServerCache();\r\n return this.writes_.calcCompleteChild(childKey, serverNode);\r\n }\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n WriteTreeCompleteChildSource.prototype.getChildAfterChild = function (index, child, reverse) {\r\n var completeServerData = this.optCompleteServerCache_ != null\r\n ? this.optCompleteServerCache_\r\n : this.viewCache_.getCompleteServerSnap();\r\n var nodes = this.writes_.calcIndexedSlice(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 Inc.\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 * @constructor\r\n * @struct\r\n */\r\nvar ProcessorResult = /** @class */ (function () {\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Array.<!Change>} changes\r\n */\r\n function ProcessorResult(viewCache, changes) {\r\n this.viewCache = viewCache;\r\n this.changes = changes;\r\n }\r\n return ProcessorResult;\r\n}());\r\n/**\r\n * @constructor\r\n */\r\nvar ViewProcessor = /** @class */ (function () {\r\n /**\r\n * @param {!NodeFilter} filter_\r\n */\r\n function ViewProcessor(filter_) {\r\n this.filter_ = filter_;\r\n }\r\n /**\r\n * @param {!ViewCache} viewCache\r\n */\r\n ViewProcessor.prototype.assertIndexed = function (viewCache) {\r\n util.assert(viewCache\r\n .getEventCache()\r\n .getNode()\r\n .isIndexed(this.filter_.getIndex()), 'Event snap not indexed');\r\n util.assert(viewCache\r\n .getServerCache()\r\n .getNode()\r\n .isIndexed(this.filter_.getIndex()), 'Server snap not indexed');\r\n };\r\n /**\r\n * @param {!ViewCache} oldViewCache\r\n * @param {!Operation} operation\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeCache\r\n * @return {!ProcessorResult}\r\n */\r\n ViewProcessor.prototype.applyOperation = function (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 = this.applyUserOverwrite_(oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n util.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.getServerCache().isFiltered() &&\r\n !overwrite.path.isEmpty());\r\n newViewCache = this.applyServerOverwrite_(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 = this.applyUserMerge_(oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n util.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.getServerCache().isFiltered();\r\n newViewCache = this.applyServerMerge_(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 = this.ackUserWrite_(oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n newViewCache = this.revertUserWrite_(oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.LISTEN_COMPLETE) {\r\n newViewCache = this.listenComplete_(oldViewCache, operation.path, writesCache, accumulator);\r\n }\r\n else {\r\n throw util.assertionError('Unknown operation type: ' + operation.type);\r\n }\r\n var changes = accumulator.getChanges();\r\n ViewProcessor.maybeAddValueEvent_(oldViewCache, newViewCache, changes);\r\n return new ProcessorResult(newViewCache, changes);\r\n };\r\n /**\r\n * @param {!ViewCache} oldViewCache\r\n * @param {!ViewCache} newViewCache\r\n * @param {!Array.<!Change>} accumulator\r\n * @private\r\n */\r\n ViewProcessor.maybeAddValueEvent_ = function (oldViewCache, newViewCache, accumulator) {\r\n var eventSnap = newViewCache.getEventCache();\r\n if (eventSnap.isFullyInitialized()) {\r\n var isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\r\n var oldCompleteSnap = oldViewCache.getCompleteEventSnap();\r\n if (accumulator.length > 0 ||\r\n !oldViewCache.getEventCache().isFullyInitialized() ||\r\n (isLeafOrEmpty &&\r\n !eventSnap.getNode().equals(/** @type {!Node} */ oldCompleteSnap)) ||\r\n !eventSnap\r\n .getNode()\r\n .getPriority()\r\n .equals(oldCompleteSnap.getPriority())) {\r\n accumulator.push(Change.valueChange(\r\n /** @type {!Node} */ newViewCache.getCompleteEventSnap()));\r\n }\r\n }\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} changePath\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {!CompleteChildSource} source\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.generateEventCacheAfterServerEvent_ = function (viewCache, changePath, writesCache, source, accumulator) {\r\n var oldEventSnap = viewCache.getEventCache();\r\n if (writesCache.shadowingWrite(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 (changePath.isEmpty()) {\r\n // TODO: figure out how this plays with \"sliding ack windows\"\r\n util.assert(viewCache.getServerCache().isFullyInitialized(), 'If change path is empty, we must have complete server data');\r\n if (viewCache.getServerCache().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 = viewCache.getCompleteServerSnap();\r\n var completeChildren = serverCache instanceof ChildrenNode\r\n ? serverCache\r\n : ChildrenNode.EMPTY_NODE;\r\n var completeEventChildren = writesCache.calcCompleteEventChildren(completeChildren);\r\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeEventChildren, accumulator);\r\n }\r\n else {\r\n var completeNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\r\n newEventCache = this.filter_.updateFullNode(viewCache.getEventCache().getNode(), completeNode, accumulator);\r\n }\r\n }\r\n else {\r\n var childKey = changePath.getFront();\r\n if (childKey === '.priority') {\r\n util.assert(changePath.getLength() === 1, \"Can't have a priority with additional path components\");\r\n var oldEventNode = oldEventSnap.getNode();\r\n serverNode = viewCache.getServerCache().getNode();\r\n // we might have overwrites for this priority\r\n var updatedPriority = writesCache.calcEventCacheAfterServerOverwrite(changePath, oldEventNode, serverNode);\r\n if (updatedPriority != null) {\r\n newEventCache = this.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 = changePath.popFront();\r\n // update child\r\n var newEventChild = void 0;\r\n if (oldEventSnap.isCompleteForChild(childKey)) {\r\n serverNode = viewCache.getServerCache().getNode();\r\n var eventChildUpdate = writesCache.calcEventCacheAfterServerOverwrite(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\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n }\r\n }\r\n else {\r\n newEventChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\r\n }\r\n if (newEventChild != null) {\r\n newEventCache = this.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 viewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized() || changePath.isEmpty(), this.filter_.filtersNodes());\r\n }\r\n };\r\n /**\r\n * @param {!ViewCache} oldViewCache\r\n * @param {!Path} changePath\r\n * @param {!Node} changedSnap\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeCache\r\n * @param {boolean} filterServerNode\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.applyServerOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\r\n var oldServerSnap = oldViewCache.getServerCache();\r\n var newServerCache;\r\n var serverFilter = filterServerNode\r\n ? this.filter_\r\n : this.filter_.getIndexedFilter();\r\n if (changePath.isEmpty()) {\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 = changePath.getFront();\r\n if (!oldServerSnap.isCompleteForPath(changePath) &&\r\n changePath.getLength() > 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 = changePath.popFront();\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 = oldViewCache.updateServerSnap(newServerCache, oldServerSnap.isFullyInitialized() || changePath.isEmpty(), serverFilter.filtersNodes());\r\n var source = new WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\r\n return this.generateEventCacheAfterServerEvent_(newViewCache, changePath, writesCache, source, accumulator);\r\n };\r\n /**\r\n * @param {!ViewCache} oldViewCache\r\n * @param {!Path} changePath\r\n * @param {!Node} changedSnap\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeCache\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.applyUserOverwrite_ = function (oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\r\n var oldEventSnap = oldViewCache.getEventCache();\r\n var newViewCache, newEventCache;\r\n var source = new WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\r\n if (changePath.isEmpty()) {\r\n newEventCache = this.filter_.updateFullNode(oldViewCache.getEventCache().getNode(), changedSnap, accumulator);\r\n newViewCache = oldViewCache.updateEventSnap(newEventCache, true, this.filter_.filtersNodes());\r\n }\r\n else {\r\n var childKey = changePath.getFront();\r\n if (childKey === '.priority') {\r\n newEventCache = this.filter_.updatePriority(oldViewCache.getEventCache().getNode(), changedSnap);\r\n newViewCache = oldViewCache.updateEventSnap(newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\r\n }\r\n else {\r\n var childChangePath = changePath.popFront();\r\n var oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\r\n var newChild = void 0;\r\n if (childChangePath.isEmpty()) {\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 (childChangePath.getBack() === '.priority' &&\r\n childNode.getChild(childChangePath.parent()).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 = this.filter_.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\r\n newViewCache = oldViewCache.updateEventSnap(newEventSnap, oldEventSnap.isFullyInitialized(), this.filter_.filtersNodes());\r\n }\r\n else {\r\n newViewCache = oldViewCache;\r\n }\r\n }\r\n }\r\n return newViewCache;\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {string} childKey\r\n * @return {boolean}\r\n * @private\r\n */\r\n ViewProcessor.cacheHasChild_ = function (viewCache, childKey) {\r\n return viewCache.getEventCache().isCompleteForChild(childKey);\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} path\r\n * @param {ImmutableTree.<!Node>} changedChildren\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} serverCache\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.applyUserMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\r\n var _this = this;\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 = path.child(relativePath);\r\n if (ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\r\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n changedChildren.foreach(function (relativePath, childNode) {\r\n var writePath = path.child(relativePath);\r\n if (!ViewProcessor.cacheHasChild_(viewCache, writePath.getFront())) {\r\n curViewCache = _this.applyUserOverwrite_(curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n };\r\n /**\r\n * @param {!Node} node\r\n * @param {ImmutableTree.<!Node>} merge\r\n * @return {!Node}\r\n * @private\r\n */\r\n ViewProcessor.prototype.applyMerge_ = function (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\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} path\r\n * @param {!ImmutableTree.<!Node>} changedChildren\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} serverCache\r\n * @param {boolean} filterServerNode\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.applyServerMerge_ = function (viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\r\n var _this = this;\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\r\n .getServerCache()\r\n .getNode()\r\n .isEmpty() &&\r\n !viewCache.getServerCache().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 (path.isEmpty()) {\r\n viewMergeTree = changedChildren;\r\n }\r\n else {\r\n viewMergeTree = ImmutableTree.Empty.setTree(path, changedChildren);\r\n }\r\n var serverNode = viewCache.getServerCache().getNode();\r\n viewMergeTree.children.inorderTraversal(function (childKey, childTree) {\r\n if (serverNode.hasChild(childKey)) {\r\n var serverChild = viewCache\r\n .getServerCache()\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n var newChild = _this.applyMerge_(serverChild, childTree);\r\n curViewCache = _this.applyServerOverwrite_(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.getServerCache().isCompleteForChild(childKey) &&\r\n childMergeTree.value == null;\r\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\r\n var serverChild = viewCache\r\n .getServerCache()\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n var newChild = _this.applyMerge_(serverChild, childMergeTree);\r\n curViewCache = _this.applyServerOverwrite_(curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} ackPath\r\n * @param {!ImmutableTree<!boolean>} affectedTree\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeCache\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.ackUserWrite_ = function (viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\r\n if (writesCache.shadowingWrite(ackPath) != null) {\r\n return viewCache;\r\n }\r\n // Only filter server node if it is currently filtered\r\n var filterServerNode = viewCache.getServerCache().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.getServerCache();\r\n if (affectedTree.value != null) {\r\n // This is an overwrite.\r\n if ((ackPath.isEmpty() && serverCache.isFullyInitialized()) ||\r\n serverCache.isCompleteForPath(ackPath)) {\r\n return this.applyServerOverwrite_(viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n else if (ackPath.isEmpty()) {\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 = ImmutableTree.Empty;\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 this.applyServerMerge_(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 = ImmutableTree.Empty;\r\n affectedTree.foreach(function (mergePath, value) {\r\n var serverCachePath = ackPath.child(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 this.applyServerMerge_(viewCache, ackPath, changedChildren_2, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} path\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.listenComplete_ = function (viewCache, path, writesCache, accumulator) {\r\n var oldServerNode = viewCache.getServerCache();\r\n var newViewCache = viewCache.updateServerSnap(oldServerNode.getNode(), oldServerNode.isFullyInitialized() || path.isEmpty(), oldServerNode.isFiltered());\r\n return this.generateEventCacheAfterServerEvent_(newViewCache, path, writesCache, NO_COMPLETE_CHILD_SOURCE, accumulator);\r\n };\r\n /**\r\n * @param {!ViewCache} viewCache\r\n * @param {!Path} path\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeServerCache\r\n * @param {!ChildChangeAccumulator} accumulator\r\n * @return {!ViewCache}\r\n * @private\r\n */\r\n ViewProcessor.prototype.revertUserWrite_ = function (viewCache, path, writesCache, completeServerCache, accumulator) {\r\n var complete;\r\n if (writesCache.shadowingWrite(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.getEventCache().getNode();\r\n var newEventCache = void 0;\r\n if (path.isEmpty() || path.getFront() === '.priority') {\r\n var newNode = void 0;\r\n if (viewCache.getServerCache().isFullyInitialized()) {\r\n newNode = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\r\n }\r\n else {\r\n var serverChildren = viewCache.getServerCache().getNode();\r\n util.assert(serverChildren instanceof ChildrenNode, 'serverChildren would be complete if leaf node');\r\n newNode = writesCache.calcCompleteEventChildren(serverChildren);\r\n }\r\n newNode = newNode;\r\n newEventCache = this.filter_.updateFullNode(oldEventCache, newNode, accumulator);\r\n }\r\n else {\r\n var childKey = path.getFront();\r\n var newChild = writesCache.calcCompleteChild(childKey, viewCache.getServerCache());\r\n if (newChild == null &&\r\n viewCache.getServerCache().isCompleteForChild(childKey)) {\r\n newChild = oldEventCache.getImmediateChild(childKey);\r\n }\r\n if (newChild != null) {\r\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, newChild, path.popFront(), source, accumulator);\r\n }\r\n else if (viewCache\r\n .getEventCache()\r\n .getNode()\r\n .hasChild(childKey)) {\r\n // No complete child available, delete the existing one, if any\r\n newEventCache = this.filter_.updateChild(oldEventCache, childKey, ChildrenNode.EMPTY_NODE, path.popFront(), source, accumulator);\r\n }\r\n else {\r\n newEventCache = oldEventCache;\r\n }\r\n if (newEventCache.isEmpty() &&\r\n viewCache.getServerCache().isFullyInitialized()) {\r\n // We might have reverted all child writes. Maybe the old event was a leaf node\r\n complete = writesCache.calcCompleteEventCache(viewCache.getCompleteServerSnap());\r\n if (complete.isLeafNode()) {\r\n newEventCache = this.filter_.updateFullNode(newEventCache, complete, accumulator);\r\n }\r\n }\r\n }\r\n complete =\r\n viewCache.getServerCache().isFullyInitialized() ||\r\n writesCache.shadowingWrite(Path.Empty) != null;\r\n return viewCache.updateEventSnap(newEventCache, complete, this.filter_.filtersNodes());\r\n }\r\n };\r\n return ViewProcessor;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n */\r\nvar EventGenerator = /** @class */ (function () {\r\n /**\r\n *\r\n * @param {!Query} query_\r\n */\r\n function EventGenerator(query_) {\r\n this.query_ = query_;\r\n /**\r\n * @private\r\n * @type {!Index}\r\n */\r\n this.index_ = this.query_.getQueryParams().getIndex();\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\n * @param {!Array.<!Change>} changes\r\n * @param {!Node} eventCache\r\n * @param {!Array.<!EventRegistration>} eventRegistrations\r\n * @return {!Array.<!Event>}\r\n */\r\n EventGenerator.prototype.generateEventsForChanges = function (changes, eventCache, eventRegistrations) {\r\n var _this = this;\r\n var events = [];\r\n var moves = [];\r\n changes.forEach(function (change) {\r\n if (change.type === Change.CHILD_CHANGED &&\r\n _this.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\r\n moves.push(Change.childMovedChange(change.childName, change.snapshotNode));\r\n }\r\n });\r\n this.generateEventsForType_(events, Change.CHILD_REMOVED, changes, eventRegistrations, eventCache);\r\n this.generateEventsForType_(events, Change.CHILD_ADDED, changes, eventRegistrations, eventCache);\r\n this.generateEventsForType_(events, Change.CHILD_MOVED, moves, eventRegistrations, eventCache);\r\n this.generateEventsForType_(events, Change.CHILD_CHANGED, changes, eventRegistrations, eventCache);\r\n this.generateEventsForType_(events, Change.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\n * @param {!Array.<!Event>} events\r\n * @param {!string} eventType\r\n * @param {!Array.<!Change>} changes\r\n * @param {!Array.<!EventRegistration>} registrations\r\n * @param {!Node} eventCache\r\n * @private\r\n */\r\n EventGenerator.prototype.generateEventsForType_ = function (events, eventType, changes, registrations, eventCache) {\r\n var _this = this;\r\n var filteredChanges = changes.filter(function (change) { return change.type === eventType; });\r\n filteredChanges.sort(this.compareChanges_.bind(this));\r\n filteredChanges.forEach(function (change) {\r\n var materializedChange = _this.materializeSingleChange_(change, eventCache);\r\n registrations.forEach(function (registration) {\r\n if (registration.respondsTo(change.type)) {\r\n events.push(registration.createEvent(materializedChange, _this.query_));\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @param {!Change} change\r\n * @param {!Node} eventCache\r\n * @return {!Change}\r\n * @private\r\n */\r\n EventGenerator.prototype.materializeSingleChange_ = function (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(\r\n /** @type {!string} */\r\n change.childName, change.snapshotNode, this.index_);\r\n return change;\r\n }\r\n };\r\n /**\r\n * @param {!Change} a\r\n * @param {!Change} b\r\n * @return {number}\r\n * @private\r\n */\r\n EventGenerator.prototype.compareChanges_ = function (a, b) {\r\n if (a.childName == null || b.childName == null) {\r\n throw util.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 this.index_.compare(aWrapped, bWrapped);\r\n };\r\n return EventGenerator;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n */\r\nvar View = /** @class */ (function () {\r\n /**\r\n *\r\n * @param {!Query} query_\r\n * @param {!ViewCache} initialViewCache\r\n */\r\n function View(query_, initialViewCache) {\r\n this.query_ = query_;\r\n this.eventRegistrations_ = [];\r\n var params = this.query_.getQueryParams();\r\n var indexFilter = new IndexedFilter(params.getIndex());\r\n var filter = params.getNodeFilter();\r\n /**\r\n * @type {ViewProcessor}\r\n * @private\r\n */\r\n this.processor_ = new ViewProcessor(filter);\r\n var initialServerCache = initialViewCache.getServerCache();\r\n var initialEventCache = initialViewCache.getEventCache();\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 /**\r\n * @type {!ViewCache}\r\n * @private\r\n */\r\n this.viewCache_ = new ViewCache(newEventCache, newServerCache);\r\n /**\r\n * @type {!EventGenerator}\r\n * @private\r\n */\r\n this.eventGenerator_ = new EventGenerator(this.query_);\r\n }\r\n /**\r\n * @return {!Query}\r\n */\r\n View.prototype.getQuery = function () {\r\n return this.query_;\r\n };\r\n /**\r\n * @return {?Node}\r\n */\r\n View.prototype.getServerCache = function () {\r\n return this.viewCache_.getServerCache().getNode();\r\n };\r\n /**\r\n * @param {!Path} path\r\n * @return {?Node}\r\n */\r\n View.prototype.getCompleteServerCache = function (path) {\r\n var cache = this.viewCache_.getCompleteServerSnap();\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 (this.query_.getQueryParams().loadsAllData() ||\r\n (!path.isEmpty() && !cache.getImmediateChild(path.getFront()).isEmpty())) {\r\n return cache.getChild(path);\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n View.prototype.isEmpty = function () {\r\n return this.eventRegistrations_.length === 0;\r\n };\r\n /**\r\n * @param {!EventRegistration} eventRegistration\r\n */\r\n View.prototype.addEventRegistration = function (eventRegistration) {\r\n this.eventRegistrations_.push(eventRegistration);\r\n };\r\n /**\r\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\r\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\r\n * @return {!Array.<!Event>} Cancel events, if cancelError was provided.\r\n */\r\n View.prototype.removeEventRegistration = function (eventRegistration, cancelError) {\r\n var cancelEvents = [];\r\n if (cancelError) {\r\n util.assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\r\n var path_1 = this.query_.path;\r\n this.eventRegistrations_.forEach(function (registration) {\r\n cancelError /** @type {!Error} */ = cancelError;\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 < this.eventRegistrations_.length; ++i) {\r\n var existing = this.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(this.eventRegistrations_.slice(i + 1));\r\n break;\r\n }\r\n }\r\n this.eventRegistrations_ = remaining;\r\n }\r\n else {\r\n this.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\n * @param {!Operation} operation\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} completeServerCache\r\n * @return {!Array.<!Event>}\r\n */\r\n View.prototype.applyOperation = function (operation, writesCache, completeServerCache) {\r\n if (operation.type === OperationType.MERGE &&\r\n operation.source.queryId !== null) {\r\n util.assert(this.viewCache_.getCompleteServerSnap(), 'We should always have a full cache before handling merges');\r\n util.assert(this.viewCache_.getCompleteEventSnap(), 'Missing event cache, even though we have a server cache');\r\n }\r\n var oldViewCache = this.viewCache_;\r\n var result = this.processor_.applyOperation(oldViewCache, operation, writesCache, completeServerCache);\r\n this.processor_.assertIndexed(result.viewCache);\r\n util.assert(result.viewCache.getServerCache().isFullyInitialized() ||\r\n !oldViewCache.getServerCache().isFullyInitialized(), 'Once a server snap is complete, it should never go back');\r\n this.viewCache_ = result.viewCache;\r\n return this.generateEventsForChanges_(result.changes, result.viewCache.getEventCache().getNode(), null);\r\n };\r\n /**\r\n * @param {!EventRegistration} registration\r\n * @return {!Array.<!Event>}\r\n */\r\n View.prototype.getInitialEvents = function (registration) {\r\n var eventSnap = this.viewCache_.getEventCache();\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(Change.childAddedChange(key, childNode));\r\n });\r\n }\r\n if (eventSnap.isFullyInitialized()) {\r\n initialChanges.push(Change.valueChange(eventSnap.getNode()));\r\n }\r\n return this.generateEventsForChanges_(initialChanges, eventSnap.getNode(), registration);\r\n };\r\n /**\r\n * @private\r\n * @param {!Array.<!Change>} changes\r\n * @param {!Node} eventCache\r\n * @param {EventRegistration=} eventRegistration\r\n * @return {!Array.<!Event>}\r\n */\r\n View.prototype.generateEventsForChanges_ = function (changes, eventCache, eventRegistration) {\r\n var registrations = eventRegistration\r\n ? [eventRegistration]\r\n : this.eventRegistrations_;\r\n return this.eventGenerator_.generateEventsForChanges(changes, eventCache, registrations);\r\n };\r\n return View;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Object.defineProperty(SyncPoint, \"__referenceConstructor\", {\r\n get: function () {\r\n util.assert(__referenceConstructor$1, 'Reference.ts has not been loaded');\r\n return __referenceConstructor$1;\r\n },\r\n set: function (val) {\r\n util.assert(!__referenceConstructor$1, '__referenceConstructor has already been defined');\r\n __referenceConstructor$1 = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n SyncPoint.prototype.isEmpty = function () {\r\n return this.views.size === 0;\r\n };\r\n SyncPoint.prototype.applyOperation = function (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 = this.views.get(queryId);\r\n util.assert(view != null, 'SyncTree gave us an op for an invalid query.');\r\n return view.applyOperation(operation, writesCache, optCompleteServerCache);\r\n }\r\n else {\r\n var events = [];\r\n try {\r\n for (var _b = tslib.__values(this.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n events = events.concat(view.applyOperation(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 * Add an event callback for the specified query.\r\n *\r\n * @param {!Query} query\r\n * @param {!EventRegistration} eventRegistration\r\n * @param {!WriteTreeRef} writesCache\r\n * @param {?Node} serverCache Complete server cache, if we have it.\r\n * @param {boolean} serverCacheComplete\r\n * @return {!Array.<!Event>} Events to raise.\r\n */\r\n SyncPoint.prototype.addEventRegistration = function (query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\r\n var queryId = query.queryIdentifier();\r\n var view = this.views.get(queryId);\r\n if (!view) {\r\n // TODO: make writesCache take flag for complete server node\r\n var eventCache = writesCache.calcCompleteEventCache(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 = writesCache.calcCompleteEventChildren(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 = new ViewCache(new CacheNode(\r\n /** @type {!Node} */ eventCache, eventCacheComplete, false), new CacheNode(\r\n /** @type {!Node} */ serverCache, serverCacheComplete, false));\r\n view = new View(query, viewCache);\r\n this.views.set(queryId, view);\r\n }\r\n // This is guaranteed to exist now, we just created anything that was missing\r\n view.addEventRegistration(eventRegistration);\r\n return view.getInitialEvents(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 {!Query} query\r\n * @param {?EventRegistration} eventRegistration If null, remove all callbacks.\r\n * @param {Error=} cancelError If a cancelError is provided, appropriate cancel events will be returned.\r\n * @return {{removed:!Array.<!Query>, events:!Array.<!Event>}} removed queries and any cancel events\r\n */\r\n SyncPoint.prototype.removeEventRegistration = function (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 = this.hasCompleteView();\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 = tslib.__values(this.views.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var _d = tslib.__read(_c.value, 2), viewQueryId = _d[0], view = _d[1];\r\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\r\n if (view.isEmpty()) {\r\n this.views.delete(viewQueryId);\r\n // We'll deal with complete views later.\r\n if (!view\r\n .getQuery()\r\n .getQueryParams()\r\n .loadsAllData()) {\r\n removed.push(view.getQuery());\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 = this.views.get(queryId);\r\n if (view) {\r\n cancelEvents = cancelEvents.concat(view.removeEventRegistration(eventRegistration, cancelError));\r\n if (view.isEmpty()) {\r\n this.views.delete(queryId);\r\n // We'll deal with complete views later.\r\n if (!view\r\n .getQuery()\r\n .getQueryParams()\r\n .loadsAllData()) {\r\n removed.push(view.getQuery());\r\n }\r\n }\r\n }\r\n }\r\n if (hadCompleteView && !this.hasCompleteView()) {\r\n // We removed our last complete view.\r\n removed.push(new SyncPoint.__referenceConstructor(query.repo, query.path));\r\n }\r\n return { removed: removed, events: cancelEvents };\r\n };\r\n SyncPoint.prototype.getQueryViews = function () {\r\n var e_3, _a;\r\n var result = [];\r\n try {\r\n for (var _b = tslib.__values(this.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n if (!view\r\n .getQuery()\r\n .getQueryParams()\r\n .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 * @return A complete cache, if it exists\r\n */\r\n SyncPoint.prototype.getCompleteServerCache = function (path) {\r\n var e_4, _a;\r\n var serverCache = null;\r\n try {\r\n for (var _b = tslib.__values(this.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n serverCache = serverCache || view.getCompleteServerCache(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\n SyncPoint.prototype.viewForQuery = function (query) {\r\n var params = query.getQueryParams();\r\n if (params.loadsAllData()) {\r\n return this.getCompleteView();\r\n }\r\n else {\r\n var queryId = query.queryIdentifier();\r\n return this.views.get(queryId);\r\n }\r\n };\r\n SyncPoint.prototype.viewExistsForQuery = function (query) {\r\n return this.viewForQuery(query) != null;\r\n };\r\n SyncPoint.prototype.hasCompleteView = function () {\r\n return this.getCompleteView() != null;\r\n };\r\n SyncPoint.prototype.getCompleteView = function () {\r\n var e_5, _a;\r\n try {\r\n for (var _b = tslib.__values(this.views.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\r\n var view = _c.value;\r\n if (view\r\n .getQuery()\r\n .getQueryParams()\r\n .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 };\r\n return SyncPoint;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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.prototype.addWrite = function (path, node) {\r\n if (path.isEmpty()) {\r\n return new CompoundWrite(new ImmutableTree(node));\r\n }\r\n else {\r\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n var rootMostPath = rootmost.path;\r\n var value = rootmost.value;\r\n var relativePath = Path.relativePath(rootMostPath, path);\r\n value = value.updateChild(relativePath, node);\r\n return new CompoundWrite(this.writeTree_.set(rootMostPath, value));\r\n }\r\n else {\r\n var subtree = new ImmutableTree(node);\r\n var newWriteTree = this.writeTree_.setTree(path, subtree);\r\n return new CompoundWrite(newWriteTree);\r\n }\r\n }\r\n };\r\n CompoundWrite.prototype.addWrites = function (path, updates) {\r\n var newWrite = this;\r\n each(updates, function (childKey, node) {\r\n newWrite = newWrite.addWrite(path.child(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 <em>not</em> 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 path The path at which a write and all deeper writes should be removed\r\n * @return {!CompoundWrite} The new CompoundWrite with the removed path\r\n */\r\n CompoundWrite.prototype.removeWrite = function (path) {\r\n if (path.isEmpty()) {\r\n return CompoundWrite.Empty;\r\n }\r\n else {\r\n var newWriteTree = this.writeTree_.setTree(path, ImmutableTree.Empty);\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 path The path to check for\r\n * @return Whether there is a complete write at that path\r\n */\r\n CompoundWrite.prototype.hasCompleteWrite = function (path) {\r\n return this.getCompleteNode(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 path The path to get a complete write\r\n * @return The node if complete at that path, or null otherwise.\r\n */\r\n CompoundWrite.prototype.getCompleteNode = function (path) {\r\n var rootmost = this.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n return this.writeTree_\r\n .get(rootmost.path)\r\n .getChild(Path.relativePath(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 * @return A list of all complete children.\r\n */\r\n CompoundWrite.prototype.getCompleteChildren = function () {\r\n var children = [];\r\n var node = this.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 this.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\n CompoundWrite.prototype.childCompoundWrite = function (path) {\r\n if (path.isEmpty()) {\r\n return this;\r\n }\r\n else {\r\n var shadowingNode = this.getCompleteNode(path);\r\n if (shadowingNode != null) {\r\n return new CompoundWrite(new ImmutableTree(shadowingNode));\r\n }\r\n else {\r\n return new CompoundWrite(this.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 * @return Whether this CompoundWrite is empty\r\n */\r\n CompoundWrite.prototype.isEmpty = function () {\r\n return this.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 * @return The node with all writes applied\r\n */\r\n CompoundWrite.prototype.apply = function (node) {\r\n return applySubtreeWrite(Path.Empty, this.writeTree_, node);\r\n };\r\n CompoundWrite.Empty = new CompoundWrite(new ImmutableTree(null));\r\n return CompoundWrite;\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 util.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(relativePath.child(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(relativePath.child('.priority'), priorityWrite_1);\r\n }\r\n return node;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * WriteTree tracks all pending user-initiated writes and has methods to calculate the result of merging them\r\n * with underlying server data (to create \"event cache\" data). Pending writes are added with addOverwrite()\r\n * and addMerge(), and removed with removeWrite().\r\n *\r\n * @constructor\r\n */\r\nvar WriteTree = /** @class */ (function () {\r\n function WriteTree() {\r\n /**\r\n * A tree tracking the result of applying all visible writes. This does not include transactions with\r\n * applyLocally=false or writes that are completely shadowed by other writes.\r\n *\r\n * @type {!CompoundWrite}\r\n * @private\r\n */\r\n this.visibleWrites_ = CompoundWrite.Empty;\r\n /**\r\n * A list of all pending writes, regardless of visibility and shadowed-ness. Used to calculate arbitrary\r\n * sets of the changed data, such as hidden writes (from transactions) or changes with certain writes excluded (also\r\n * used by transactions).\r\n *\r\n * @type {!Array.<!WriteRecord>}\r\n * @private\r\n */\r\n this.allWrites_ = [];\r\n this.lastWriteId_ = -1;\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 * @param {!Path} path\r\n * @return {!WriteTreeRef}\r\n */\r\n WriteTree.prototype.childWrites = function (path) {\r\n return new WriteTreeRef(path, this);\r\n };\r\n /**\r\n * Record a new overwrite from user code.\r\n *\r\n * @param {!Path} path\r\n * @param {!Node} snap\r\n * @param {!number} writeId\r\n * @param {boolean=} visible This is set to false by some transactions. It should be excluded from event caches\r\n */\r\n WriteTree.prototype.addOverwrite = function (path, snap, writeId, visible) {\r\n util.assert(writeId > this.lastWriteId_, 'Stacking an older write on top of newer ones');\r\n if (visible === undefined) {\r\n visible = true;\r\n }\r\n this.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 this.visibleWrites_ = this.visibleWrites_.addWrite(path, snap);\r\n }\r\n this.lastWriteId_ = writeId;\r\n };\r\n /**\r\n * Record a new merge from user code.\r\n *\r\n * @param {!Path} path\r\n * @param {!Object.<string, !Node>} changedChildren\r\n * @param {!number} writeId\r\n */\r\n WriteTree.prototype.addMerge = function (path, changedChildren, writeId) {\r\n util.assert(writeId > this.lastWriteId_, 'Stacking an older merge on top of newer ones');\r\n this.allWrites_.push({\r\n path: path,\r\n children: changedChildren,\r\n writeId: writeId,\r\n visible: true\r\n });\r\n this.visibleWrites_ = this.visibleWrites_.addWrites(path, changedChildren);\r\n this.lastWriteId_ = writeId;\r\n };\r\n /**\r\n * @param {!number} writeId\r\n * @return {?WriteRecord}\r\n */\r\n WriteTree.prototype.getWrite = function (writeId) {\r\n for (var i = 0; i < this.allWrites_.length; i++) {\r\n var record = this.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 * @param {!number} writeId\r\n * @return {boolean} true if the write may have been visible (meaning we'll need to reevaluate / raise\r\n * events as a result).\r\n */\r\n WriteTree.prototype.removeWrite = function (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 _this = this;\r\n var idx = this.allWrites_.findIndex(function (s) {\r\n return s.writeId === writeId;\r\n });\r\n util.assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\r\n var writeToRemove = this.allWrites_[idx];\r\n this.allWrites_.splice(idx, 1);\r\n var removedWriteWasVisible = writeToRemove.visible;\r\n var removedWriteOverlapsWithOtherWrites = false;\r\n var i = this.allWrites_.length - 1;\r\n while (removedWriteWasVisible && i >= 0) {\r\n var currentWrite = this.allWrites_[i];\r\n if (currentWrite.visible) {\r\n if (i >= idx &&\r\n this.recordContainsPath_(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 (writeToRemove.path.contains(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 this.resetTree_();\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 this.visibleWrites_ = this.visibleWrites_.removeWrite(writeToRemove.path);\r\n }\r\n else {\r\n var children = writeToRemove.children;\r\n each(children, function (childName) {\r\n _this.visibleWrites_ = _this.visibleWrites_.removeWrite(writeToRemove.path.child(childName));\r\n });\r\n }\r\n return true;\r\n }\r\n };\r\n /**\r\n * Return a complete snapshot for the given path if there's visible write data at that path, else null.\r\n * No server data is considered.\r\n *\r\n * @param {!Path} path\r\n * @return {?Node}\r\n */\r\n WriteTree.prototype.getCompleteWriteData = function (path) {\r\n return this.visibleWrites_.getCompleteNode(path);\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 {!Path} treePath\r\n * @param {?Node} completeServerCache\r\n * @param {Array.<number>=} writeIdsToExclude An optional set to be excluded\r\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\r\n * @return {?Node}\r\n */\r\n WriteTree.prototype.calcCompleteEventCache = function (treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n if (!writeIdsToExclude && !includeHiddenWrites) {\r\n var shadowingNode = this.visibleWrites_.getCompleteNode(treePath);\r\n if (shadowingNode != null) {\r\n return shadowingNode;\r\n }\r\n else {\r\n var subMerge = this.visibleWrites_.childCompoundWrite(treePath);\r\n if (subMerge.isEmpty()) {\r\n return completeServerCache;\r\n }\r\n else if (completeServerCache == null &&\r\n !subMerge.hasCompleteWrite(Path.Empty)) {\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 subMerge.apply(layeredCache);\r\n }\r\n }\r\n }\r\n else {\r\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\r\n if (!includeHiddenWrites && merge.isEmpty()) {\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 !merge.hasCompleteWrite(Path.Empty)) {\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 (write.path.contains(treePath) || treePath.contains(write.path)));\r\n };\r\n var mergeAtPath = WriteTree.layerTree_(this.allWrites_, filter, treePath);\r\n var layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\r\n return mergeAtPath.apply(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\n * @param {!Path} treePath\r\n * @param {?ChildrenNode} completeServerChildren\r\n * @return {!ChildrenNode}\r\n */\r\n WriteTree.prototype.calcCompleteEventChildren = function (treePath, completeServerChildren) {\r\n var completeChildren = ChildrenNode.EMPTY_NODE;\r\n var topLevelSet = this.visibleWrites_.getCompleteNode(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 = this.visibleWrites_.childCompoundWrite(treePath);\r\n completeServerChildren.forEachChild(PRIORITY_INDEX, function (childName, childNode) {\r\n var node = merge_1\r\n .childCompoundWrite(new Path(childName))\r\n .apply(childNode);\r\n completeChildren = completeChildren.updateImmediateChild(childName, node);\r\n });\r\n // Add any complete children we have from the set\r\n merge_1.getCompleteChildren().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 = this.visibleWrites_.childCompoundWrite(treePath);\r\n merge.getCompleteChildren().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\n * @param {!Path} treePath\r\n * @param {!Path} childPath\r\n * @param {?Node} existingEventSnap\r\n * @param {?Node} existingServerSnap\r\n * @return {?Node}\r\n */\r\n WriteTree.prototype.calcEventCacheAfterServerOverwrite = function (treePath, childPath, existingEventSnap, existingServerSnap) {\r\n util.assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\r\n var path = treePath.child(childPath);\r\n if (this.visibleWrites_.hasCompleteWrite(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 = this.visibleWrites_.childCompoundWrite(path);\r\n if (childMerge.isEmpty()) {\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 childMerge.apply(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\n * @param {!Path} treePath\r\n * @param {!string} childKey\r\n * @param {!CacheNode} existingServerSnap\r\n * @return {?Node}\r\n */\r\n WriteTree.prototype.calcCompleteChild = function (treePath, childKey, existingServerSnap) {\r\n var path = treePath.child(childKey);\r\n var shadowingNode = this.visibleWrites_.getCompleteNode(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 = this.visibleWrites_.childCompoundWrite(path);\r\n return childMerge.apply(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\n WriteTree.prototype.shadowingWrite = function (path) {\r\n return this.visibleWrites_.getCompleteNode(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\n WriteTree.prototype.calcIndexedSlice = function (treePath, completeServerData, startPost, count, reverse, index) {\r\n var toIterate;\r\n var merge = this.visibleWrites_.childCompoundWrite(treePath);\r\n var shadowingNode = merge.getCompleteNode(Path.Empty);\r\n if (shadowingNode != null) {\r\n toIterate = shadowingNode;\r\n }\r\n else if (completeServerData != null) {\r\n toIterate = merge.apply(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\n WriteTree.prototype.recordContainsPath_ = function (writeRecord, path) {\r\n if (writeRecord.snap) {\r\n return writeRecord.path.contains(path);\r\n }\r\n else {\r\n for (var childName in writeRecord.children) {\r\n if (writeRecord.children.hasOwnProperty(childName) &&\r\n writeRecord.path.child(childName).contains(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\n WriteTree.prototype.resetTree_ = function () {\r\n this.visibleWrites_ = WriteTree.layerTree_(this.allWrites_, WriteTree.DefaultFilter_, Path.Empty);\r\n if (this.allWrites_.length > 0) {\r\n this.lastWriteId_ = this.allWrites_[this.allWrites_.length - 1].writeId;\r\n }\r\n else {\r\n this.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\n WriteTree.DefaultFilter_ = function (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\n WriteTree.layerTree_ = function (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 (treeRoot.contains(writePath)) {\r\n relativePath = Path.relativePath(treeRoot, writePath);\r\n compoundWrite = compoundWrite.addWrite(relativePath, write.snap);\r\n }\r\n else if (writePath.contains(treeRoot)) {\r\n relativePath = Path.relativePath(writePath, treeRoot);\r\n compoundWrite = compoundWrite.addWrite(Path.Empty, write.snap.getChild(relativePath));\r\n }\r\n }\r\n else if (write.children) {\r\n if (treeRoot.contains(writePath)) {\r\n relativePath = Path.relativePath(treeRoot, writePath);\r\n compoundWrite = compoundWrite.addWrites(relativePath, write.children);\r\n }\r\n else if (writePath.contains(treeRoot)) {\r\n relativePath = Path.relativePath(writePath, treeRoot);\r\n if (relativePath.isEmpty()) {\r\n compoundWrite = compoundWrite.addWrites(Path.Empty, write.children);\r\n }\r\n else {\r\n var child = util.safeGet(write.children, relativePath.getFront());\r\n if (child) {\r\n // There exists a child in this node that matches the root path\r\n var deepNode = child.getChild(relativePath.popFront());\r\n compoundWrite = compoundWrite.addWrite(Path.Empty, deepNode);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n throw util.assertionError('WriteRecord should have .snap or .children');\r\n }\r\n }\r\n }\r\n return compoundWrite;\r\n };\r\n return WriteTree;\r\n}());\r\n/**\r\n * A WriteTreeRef wraps a WriteTree and a path, for convenient access to a particular subtree. All of the methods\r\n * just proxy to the underlying WriteTree.\r\n *\r\n * @constructor\r\n */\r\nvar WriteTreeRef = /** @class */ (function () {\r\n /**\r\n * @param {!Path} path\r\n * @param {!WriteTree} writeTree\r\n */\r\n function WriteTreeRef(path, writeTree) {\r\n this.treePath_ = path;\r\n this.writeTree_ = writeTree;\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 {?Node} completeServerCache\r\n * @param {Array.<number>=} writeIdsToExclude Optional writes to exclude.\r\n * @param {boolean=} includeHiddenWrites Defaults to false, whether or not to layer on writes with visible set to false\r\n * @return {?Node}\r\n */\r\n WriteTreeRef.prototype.calcCompleteEventCache = function (completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n return this.writeTree_.calcCompleteEventCache(this.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 * @param {?ChildrenNode} completeServerChildren\r\n * @return {!ChildrenNode}\r\n */\r\n WriteTreeRef.prototype.calcCompleteEventChildren = function (completeServerChildren) {\r\n return this.writeTree_.calcCompleteEventChildren(this.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 * @param {!Path} path\r\n * @param {?Node} existingEventSnap\r\n * @param {?Node} existingServerSnap\r\n * @return {?Node}\r\n */\r\n WriteTreeRef.prototype.calcEventCacheAfterServerOverwrite = function (path, existingEventSnap, existingServerSnap) {\r\n return this.writeTree_.calcEventCacheAfterServerOverwrite(this.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 * @param {!Path} path\r\n * @return {?Node}\r\n */\r\n WriteTreeRef.prototype.shadowingWrite = function (path) {\r\n return this.writeTree_.shadowingWrite(this.treePath_.child(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\n * @param {?Node} completeServerData\r\n * @param {!NamedNode} startPost\r\n * @param {!number} count\r\n * @param {boolean} reverse\r\n * @param {!Index} index\r\n * @return {!Array.<!NamedNode>}\r\n */\r\n WriteTreeRef.prototype.calcIndexedSlice = function (completeServerData, startPost, count, reverse, index) {\r\n return this.writeTree_.calcIndexedSlice(this.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\n * @param {!string} childKey\r\n * @param {!CacheNode} existingServerCache\r\n * @return {?Node}\r\n */\r\n WriteTreeRef.prototype.calcCompleteChild = function (childKey, existingServerCache) {\r\n return this.writeTree_.calcCompleteChild(this.treePath_, childKey, existingServerCache);\r\n };\r\n /**\r\n * Return a WriteTreeRef for a child.\r\n *\r\n * @param {string} childName\r\n * @return {!WriteTreeRef}\r\n */\r\n WriteTreeRef.prototype.child = function (childName) {\r\n return new WriteTreeRef(this.treePath_.child(childName), this.writeTree_);\r\n };\r\n return WriteTreeRef;\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 * 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 * @constructor\r\n */\r\nvar SyncTree = /** @class */ (function () {\r\n /**\r\n * @param {!ListenProvider} 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_ = ImmutableTree.Empty;\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_ = new WriteTree();\r\n this.tagToQueryMap = new Map();\r\n this.queryToTagMap = new Map();\r\n }\r\n /**\r\n * Apply the data changes for a user-generated set() or transaction() call.\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyUserOverwrite = function (path, newData, writeId, visible) {\r\n // Record pending write.\r\n this.pendingWriteTree_.addOverwrite(path, newData, writeId, visible);\r\n if (!visible) {\r\n return [];\r\n }\r\n else {\r\n return this.applyOperationToSyncPoints_(new Overwrite(OperationSource.User, path, newData));\r\n }\r\n };\r\n /**\r\n * Apply the data from a user-generated update() call\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyUserMerge = function (path, changedChildren, writeId) {\r\n // Record pending merge.\r\n this.pendingWriteTree_.addMerge(path, changedChildren, writeId);\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n return this.applyOperationToSyncPoints_(new Merge(OperationSource.User, 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 * @return Events to raise.\r\n */\r\n SyncTree.prototype.ackUserWrite = function (writeId, revert) {\r\n if (revert === void 0) { revert = false; }\r\n var write = this.pendingWriteTree_.getWrite(writeId);\r\n var needToReevaluate = this.pendingWriteTree_.removeWrite(writeId);\r\n if (!needToReevaluate) {\r\n return [];\r\n }\r\n else {\r\n var affectedTree_1 = ImmutableTree.Empty;\r\n if (write.snap != null) {\r\n // overwrite\r\n affectedTree_1 = affectedTree_1.set(Path.Empty, true);\r\n }\r\n else {\r\n each(write.children, function (pathString, node) {\r\n affectedTree_1 = affectedTree_1.set(new Path(pathString), node);\r\n });\r\n }\r\n return this.applyOperationToSyncPoints_(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 * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyServerOverwrite = function (path, newData) {\r\n return this.applyOperationToSyncPoints_(new Overwrite(OperationSource.Server, path, newData));\r\n };\r\n /**\r\n * Apply new server data to be merged in at the specified path.\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyServerMerge = function (path, changedChildren) {\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n return this.applyOperationToSyncPoints_(new Merge(OperationSource.Server, path, changeTree));\r\n };\r\n /**\r\n * Apply a listen complete for a query\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyListenComplete = function (path) {\r\n return this.applyOperationToSyncPoints_(new ListenComplete(OperationSource.Server, path));\r\n };\r\n /**\r\n * Apply new server data for the specified tagged query.\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyTaggedQueryOverwrite = function (path, snap, tag) {\r\n var queryKey = this.queryKeyForTag_(tag);\r\n if (queryKey != null) {\r\n var r = SyncTree.parseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = Path.relativePath(queryPath, path);\r\n var op = new Overwrite(OperationSource.forServerTaggedQuery(queryId), relativePath, snap);\r\n return this.applyTaggedOperation_(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 * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyTaggedQueryMerge = function (path, changedChildren, tag) {\r\n var queryKey = this.queryKeyForTag_(tag);\r\n if (queryKey) {\r\n var r = SyncTree.parseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = Path.relativePath(queryPath, path);\r\n var changeTree = ImmutableTree.fromObject(changedChildren);\r\n var op = new Merge(OperationSource.forServerTaggedQuery(queryId), relativePath, changeTree);\r\n return this.applyTaggedOperation_(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 * Apply a listen complete for a tagged query\r\n *\r\n * @return Events to raise.\r\n */\r\n SyncTree.prototype.applyTaggedListenComplete = function (path, tag) {\r\n var queryKey = this.queryKeyForTag_(tag);\r\n if (queryKey) {\r\n var r = SyncTree.parseQueryKey_(queryKey);\r\n var queryPath = r.path, queryId = r.queryId;\r\n var relativePath = Path.relativePath(queryPath, path);\r\n var op = new ListenComplete(OperationSource.forServerTaggedQuery(queryId), relativePath);\r\n return this.applyTaggedOperation_(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 * @return Events to raise.\r\n */\r\n SyncTree.prototype.addEventRegistration = function (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 this.syncPointTree_.foreachOnPath(path, function (pathToSyncPoint, sp) {\r\n var relativePath = Path.relativePath(pathToSyncPoint, path);\r\n serverCache = serverCache || sp.getCompleteServerCache(relativePath);\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || sp.hasCompleteView();\r\n });\r\n var syncPoint = this.syncPointTree_.get(path);\r\n if (!syncPoint) {\r\n syncPoint = new SyncPoint();\r\n this.syncPointTree_ = this.syncPointTree_.set(path, syncPoint);\r\n }\r\n else {\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || syncPoint.hasCompleteView();\r\n serverCache = serverCache || syncPoint.getCompleteServerCache(Path.Empty);\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 = this.syncPointTree_.subtree(path);\r\n subtree.foreachChild(function (childName, childSyncPoint) {\r\n var completeCache = childSyncPoint.getCompleteServerCache(Path.Empty);\r\n if (completeCache) {\r\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\r\n }\r\n });\r\n }\r\n var viewAlreadyExists = syncPoint.viewExistsForQuery(query);\r\n if (!viewAlreadyExists && !query.getQueryParams().loadsAllData()) {\r\n // We need to track a tag for this query\r\n var queryKey = SyncTree.makeQueryKey_(query);\r\n util.assert(!this.queryToTagMap.has(queryKey), 'View does not exist, but we have a tag');\r\n var tag = SyncTree.getNextQueryTag_();\r\n this.queryToTagMap.set(queryKey, tag);\r\n this.tagToQueryMap.set(tag, queryKey);\r\n }\r\n var writesCache = this.pendingWriteTree_.childWrites(path);\r\n var events = syncPoint.addEventRegistration(query, eventRegistration, writesCache, serverCache, serverCacheComplete);\r\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\r\n var view /** @type !View */ = syncPoint.viewForQuery(query);\r\n events = events.concat(this.setupListener_(query, view));\r\n }\r\n return events;\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 * @return Cancel events, if cancelError was provided.\r\n */\r\n SyncTree.prototype.removeEventRegistration = function (query, eventRegistration, cancelError) {\r\n var _this = this;\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 = this.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 maybeSyncPoint.viewExistsForQuery(query))) {\r\n /**\r\n * @type {{removed: !Array.<!Query>, events: !Array.<!Event>}}\r\n */\r\n var removedAndEvents = maybeSyncPoint.removeEventRegistration(query, eventRegistration, cancelError);\r\n if (maybeSyncPoint.isEmpty()) {\r\n this.syncPointTree_ = this.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.getQueryParams().loadsAllData();\r\n });\r\n var covered = this.syncPointTree_.findOnPath(path, function (relativePath, parentSyncPoint) {\r\n return parentSyncPoint.hasCompleteView();\r\n });\r\n if (removingDefault && !covered) {\r\n var subtree = this.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 = this.collectDistinctViewsForSubTree_(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.getQuery();\r\n var listener = this.createListenerForView_(view);\r\n this.listenProvider_.startListening(SyncTree.queryForListening_(newQuery), this.tagForQuery_(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 this.listenProvider_.stopListening(SyncTree.queryForListening_(query), defaultTag);\r\n }\r\n else {\r\n removed.forEach(function (queryToRemove) {\r\n var tagToRemove = _this.queryToTagMap.get(SyncTree.makeQueryKey_(queryToRemove));\r\n _this.listenProvider_.stopListening(SyncTree.queryForListening_(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 this.removeTags_(removed);\r\n }\r\n return cancelEvents;\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 <increment value> ->\r\n * <incremented total> 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\n SyncTree.prototype.calcCompleteEventCache = function (path, writeIdsToExclude) {\r\n var includeHiddenSets = true;\r\n var writeTree = this.pendingWriteTree_;\r\n var serverCache = this.syncPointTree_.findOnPath(path, function (pathSoFar, syncPoint) {\r\n var relativePath = Path.relativePath(pathSoFar, path);\r\n var serverCache = syncPoint.getCompleteServerCache(relativePath);\r\n if (serverCache) {\r\n return serverCache;\r\n }\r\n });\r\n return writeTree.calcCompleteEventCache(path, serverCache, writeIdsToExclude, includeHiddenSets);\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\n SyncTree.prototype.collectDistinctViewsForSubTree_ = function (subtree) {\r\n return subtree.fold(function (relativePath, maybeChildSyncPoint, childMap) {\r\n if (maybeChildSyncPoint && maybeChildSyncPoint.hasCompleteView()) {\r\n var completeView = maybeChildSyncPoint.getCompleteView();\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 = maybeChildSyncPoint.getQueryViews();\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 SyncTree.prototype.removeTags_ = function (queries) {\r\n for (var j = 0; j < queries.length; ++j) {\r\n var removedQuery = queries[j];\r\n if (!removedQuery.getQueryParams().loadsAllData()) {\r\n // We should have a tag for this\r\n var removedQueryKey = SyncTree.makeQueryKey_(removedQuery);\r\n var removedQueryTag = this.queryToTagMap.get(removedQueryKey);\r\n this.queryToTagMap.delete(removedQueryKey);\r\n this.tagToQueryMap.delete(removedQueryTag);\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 * @return The normalized query\r\n */\r\n SyncTree.queryForListening_ = function (query) {\r\n if (query.getQueryParams().loadsAllData() &&\r\n !query.getQueryParams().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 query.getRef();\r\n }\r\n else {\r\n return query;\r\n }\r\n };\r\n /**\r\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\r\n *\r\n * @return This method can return events to support synchronous data sources\r\n */\r\n SyncTree.prototype.setupListener_ = function (query, view) {\r\n var path = query.path;\r\n var tag = this.tagForQuery_(query);\r\n var listener = this.createListenerForView_(view);\r\n var events = this.listenProvider_.startListening(SyncTree.queryForListening_(query), tag, listener.hashFn, listener.onComplete);\r\n var subtree = this.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 util.assert(!subtree.value.hasCompleteView(), \"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 (!relativePath.isEmpty() &&\r\n maybeChildSyncPoint &&\r\n maybeChildSyncPoint.hasCompleteView()) {\r\n return [maybeChildSyncPoint.getCompleteView().getQuery()];\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(maybeChildSyncPoint.getQueryViews().map(function (view) { return view.getQuery(); }));\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 this.listenProvider_.stopListening(SyncTree.queryForListening_(queryToStop), this.tagForQuery_(queryToStop));\r\n }\r\n }\r\n return events;\r\n };\r\n SyncTree.prototype.createListenerForView_ = function (view) {\r\n var _this = this;\r\n var query = view.getQuery();\r\n var tag = this.tagForQuery_(query);\r\n return {\r\n hashFn: function () {\r\n var cache = view.getServerCache() || 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 _this.applyTaggedListenComplete(query.path, tag);\r\n }\r\n else {\r\n return _this.applyListenComplete(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 _this.removeEventRegistration(query, \r\n /*eventRegistration*/ null, error);\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\r\n */\r\n SyncTree.makeQueryKey_ = function (query) {\r\n return query.path.toString() + '$' + query.queryIdentifier();\r\n };\r\n /**\r\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\r\n */\r\n SyncTree.parseQueryKey_ = function (queryKey) {\r\n var splitIndex = queryKey.indexOf('$');\r\n util.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 * Return the query associated with the given tag, if we have one\r\n */\r\n SyncTree.prototype.queryKeyForTag_ = function (tag) {\r\n return this.tagToQueryMap.get(tag);\r\n };\r\n /**\r\n * Return the tag associated with the given query.\r\n */\r\n SyncTree.prototype.tagForQuery_ = function (query) {\r\n var queryKey = SyncTree.makeQueryKey_(query);\r\n return this.queryToTagMap.get(queryKey);\r\n };\r\n /**\r\n * Static accessor for query tags.\r\n */\r\n SyncTree.getNextQueryTag_ = function () {\r\n return SyncTree.nextQueryTag_++;\r\n };\r\n /**\r\n * A helper method to apply tagged operations\r\n */\r\n SyncTree.prototype.applyTaggedOperation_ = function (queryPath, operation) {\r\n var syncPoint = this.syncPointTree_.get(queryPath);\r\n util.assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\r\n var writesCache = this.pendingWriteTree_.childWrites(queryPath);\r\n return syncPoint.applyOperation(operation, writesCache, \r\n /*serverCache=*/ null);\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\n SyncTree.prototype.applyOperationToSyncPoints_ = function (operation) {\r\n return this.applyOperationHelper_(operation, this.syncPointTree_, \r\n /*serverCache=*/ null, this.pendingWriteTree_.childWrites(Path.Empty));\r\n };\r\n /**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\n SyncTree.prototype.applyOperationHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\r\n if (operation.path.isEmpty()) {\r\n return this.applyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\r\n }\r\n else {\r\n var syncPoint = syncPointTree.get(Path.Empty);\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 = syncPoint.getCompleteServerCache(Path.Empty);\r\n }\r\n var events = [];\r\n var childName = operation.path.getFront();\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 = writesCache.child(childName);\r\n events = events.concat(this.applyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n if (syncPoint) {\r\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\r\n }\r\n return events;\r\n }\r\n };\r\n /**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\n SyncTree.prototype.applyOperationDescendantsHelper_ = function (operation, syncPointTree, serverCache, writesCache) {\r\n var _this = this;\r\n var syncPoint = syncPointTree.get(Path.Empty);\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 = syncPoint.getCompleteServerCache(Path.Empty);\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 = writesCache.child(childName);\r\n var childOperation = operation.operationForChild(childName);\r\n if (childOperation) {\r\n events = events.concat(_this.applyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n });\r\n if (syncPoint) {\r\n events = events.concat(syncPoint.applyOperation(operation, writesCache, serverCache));\r\n }\r\n return events;\r\n };\r\n /**\r\n * Static tracker for next query tag.\r\n */\r\n SyncTree.nextQueryTag_ = 1;\r\n return SyncTree;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n * @constructor\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 Inc.\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 * Abstraction around FirebaseApp's token fetching capabilities.\r\n */\r\nvar AuthTokenProvider = /** @class */ (function () {\r\n function AuthTokenProvider(app_, authProvider_) {\r\n var _this = this;\r\n this.app_ = app_;\r\n this.authProvider_ = authProvider_;\r\n this.auth_ = null;\r\n this.auth_ = authProvider_.getImmediate({ optional: true });\r\n if (!this.auth_) {\r\n authProvider_.get().then(function (auth) { return (_this.auth_ = auth); });\r\n }\r\n }\r\n /**\r\n * @param {boolean} forceRefresh\r\n * @return {!Promise<FirebaseAuthTokenData>}\r\n */\r\n AuthTokenProvider.prototype.getToken = function (forceRefresh) {\r\n if (!this.auth_) {\r\n return Promise.resolve(null);\r\n }\r\n return this.auth_.getToken(forceRefresh).catch(function (error) {\r\n // TODO: Need to figure out all the cases this is raised and whether\r\n // this makes sense.\r\n if (error && error.code === 'auth/token-not-initialized') {\r\n log('Got auth/token-not-initialized error. Treating as null token.');\r\n return null;\r\n }\r\n else {\r\n return Promise.reject(error);\r\n }\r\n });\r\n };\r\n AuthTokenProvider.prototype.addTokenChangeListener = function (listener) {\r\n // TODO: We might want to wrap the listener and call it with no args to\r\n // avoid a leaky abstraction, but that makes removing the listener harder.\r\n if (this.auth_) {\r\n this.auth_.addAuthTokenListener(listener);\r\n }\r\n else {\r\n setTimeout(function () { return listener(null); }, 0);\r\n this.authProvider_\r\n .get()\r\n .then(function (auth) { return auth.addAuthTokenListener(listener); });\r\n }\r\n };\r\n AuthTokenProvider.prototype.removeTokenChangeListener = function (listener) {\r\n this.authProvider_\r\n .get()\r\n .then(function (auth) { return auth.removeAuthTokenListener(listener); });\r\n };\r\n AuthTokenProvider.prototype.notifyForInvalidToken = function () {\r\n var errorMessage = 'Provided authentication credentials for the app named \"' +\r\n this.app_.name +\r\n '\" are invalid. This usually indicates your app was not ' +\r\n 'initialized correctly. ';\r\n if ('credential' in this.app_.options) {\r\n errorMessage +=\r\n 'Make sure the \"credential\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else if ('serviceAccount' in this.app_.options) {\r\n errorMessage +=\r\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else {\r\n errorMessage +=\r\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\r\n 'initializeApp() match the values provided for your app at ' +\r\n 'https://console.firebase.google.com/.';\r\n }\r\n warn(errorMessage);\r\n };\r\n return AuthTokenProvider;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Tracks a collection of stats.\r\n *\r\n * @constructor\r\n */\r\nvar StatsCollection = /** @class */ (function () {\r\n function StatsCollection() {\r\n this.counters_ = {};\r\n }\r\n StatsCollection.prototype.incrementCounter = function (name, amount) {\r\n if (amount === void 0) { amount = 1; }\r\n if (!util.contains(this.counters_, name)) {\r\n this.counters_[name] = 0;\r\n }\r\n this.counters_[name] += amount;\r\n };\r\n StatsCollection.prototype.get = function () {\r\n return util.deepCopy(this.counters_);\r\n };\r\n return StatsCollection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 StatsManager = /** @class */ (function () {\r\n function StatsManager() {\r\n }\r\n StatsManager.getCollection = function (repoInfo) {\r\n var hashString = repoInfo.toString();\r\n if (!this.collections_[hashString]) {\r\n this.collections_[hashString] = new StatsCollection();\r\n }\r\n return this.collections_[hashString];\r\n };\r\n StatsManager.getOrCreateReporter = function (repoInfo, creatorFunction) {\r\n var hashString = repoInfo.toString();\r\n if (!this.reporters_[hashString]) {\r\n this.reporters_[hashString] = creatorFunction();\r\n }\r\n return this.reporters_[hashString];\r\n };\r\n StatsManager.collections_ = {};\r\n StatsManager.reporters_ = {};\r\n return StatsManager;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\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 = tslib.__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 Inc.\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\n/**\r\n * @constructor\r\n */\r\nvar StatsReporter = /** @class */ (function () {\r\n /**\r\n * @param collection\r\n * @param server_\r\n */\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.includeStat = function (stat) {\r\n this.statsToReport_[stat] = true;\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 && util.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}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n */\r\nvar EventQueue = /** @class */ (function () {\r\n function EventQueue() {\r\n /**\r\n * @private\r\n * @type {!Array.<EventList>}\r\n */\r\n this.eventLists_ = [];\r\n /**\r\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\r\n * @private\r\n * @type {!number}\r\n */\r\n this.recursionDepth_ = 0;\r\n }\r\n /**\r\n * @param {!Array.<Event>} eventDataList The new events to queue.\r\n */\r\n EventQueue.prototype.queueEvents = function (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 eventData = eventDataList[i];\r\n var eventPath = eventData.getPath();\r\n if (currList !== null && !eventPath.equals(currList.getPath())) {\r\n this.eventLists_.push(currList);\r\n currList = null;\r\n }\r\n if (currList === null) {\r\n currList = new EventList(eventPath);\r\n }\r\n currList.add(eventData);\r\n }\r\n if (currList) {\r\n this.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} path The path to raise events for.\r\n * @param {!Array.<Event>} eventDataList The new events to raise.\r\n */\r\n EventQueue.prototype.raiseEventsAtPath = function (path, eventDataList) {\r\n this.queueEvents(eventDataList);\r\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\r\n return eventPath.equals(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 {!Path} changedPath The path to raise events for.\r\n * @param {!Array.<!Event>} eventDataList The events to raise\r\n */\r\n EventQueue.prototype.raiseEventsForChangedPath = function (changedPath, eventDataList) {\r\n this.queueEvents(eventDataList);\r\n this.raiseQueuedEventsMatchingPredicate_(function (eventPath) {\r\n return eventPath.contains(changedPath) || changedPath.contains(eventPath);\r\n });\r\n };\r\n /**\r\n * @param {!function(!Path):boolean} predicate\r\n * @private\r\n */\r\n EventQueue.prototype.raiseQueuedEventsMatchingPredicate_ = function (predicate) {\r\n this.recursionDepth_++;\r\n var sentAll = true;\r\n for (var i = 0; i < this.eventLists_.length; i++) {\r\n var eventList = this.eventLists_[i];\r\n if (eventList) {\r\n var eventPath = eventList.getPath();\r\n if (predicate(eventPath)) {\r\n this.eventLists_[i].raise();\r\n this.eventLists_[i] = null;\r\n }\r\n else {\r\n sentAll = false;\r\n }\r\n }\r\n }\r\n if (sentAll) {\r\n this.eventLists_ = [];\r\n }\r\n this.recursionDepth_--;\r\n };\r\n return EventQueue;\r\n}());\r\n/**\r\n * @param {!Path} path\r\n * @constructor\r\n */\r\nvar EventList = /** @class */ (function () {\r\n function EventList(path_) {\r\n this.path_ = path_;\r\n /**\r\n * @type {!Array.<Event>}\r\n * @private\r\n */\r\n this.events_ = [];\r\n }\r\n /**\r\n * @param {!Event} eventData\r\n */\r\n EventList.prototype.add = function (eventData) {\r\n this.events_.push(eventData);\r\n };\r\n /**\r\n * Iterates through the list and raises each event\r\n */\r\n EventList.prototype.raise = function () {\r\n for (var i = 0; i < this.events_.length; i++) {\r\n var eventData = this.events_[i];\r\n if (eventData !== null) {\r\n this.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 };\r\n /**\r\n * @return {!Path}\r\n */\r\n EventList.prototype.getPath = function () {\r\n return this.path_;\r\n };\r\n return EventList;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 /**\r\n * @param {!Array.<string>} allowedEvents_\r\n */\r\n function EventEmitter(allowedEvents_) {\r\n this.allowedEvents_ = allowedEvents_;\r\n this.listeners_ = {};\r\n util.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 * @param {!string} eventType\r\n * @param {...*} varArgs\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 = tslib.__spread(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 util.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 Inc.\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 * @extends {EventEmitter}\r\n */\r\nvar VisibilityMonitor = /** @class */ (function (_super) {\r\n tslib.__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 /**\r\n * @param {!string} eventType\r\n * @return {Array.<boolean>}\r\n */\r\n VisibilityMonitor.prototype.getInitialEvent = function (eventType) {\r\n util.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 Inc.\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\n * @extends {EventEmitter}\r\n */\r\nvar OnlineMonitor = /** @class */ (function (_super) {\r\n tslib.__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 !util.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 /**\r\n * @param {!string} eventType\r\n * @return {Array.<boolean>}\r\n */\r\n OnlineMonitor.prototype.getInitialEvent = function (eventType) {\r\n util.assert(eventType === 'online', 'Unknown event type: ' + eventType);\r\n return [this.online_];\r\n };\r\n /**\r\n * @return {boolean}\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 Inc.\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 ensures the packets from the server arrive in order\r\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\r\n * @constructor\r\n */\r\nvar PacketReceiver = /** @class */ (function () {\r\n /**\r\n * @param onMessage_\r\n */\r\n function PacketReceiver(onMessage_) {\r\n this.onMessage_ = onMessage_;\r\n this.pendingResponses = [];\r\n this.currentResponseNum = 0;\r\n this.closeAfterResponse = -1;\r\n this.onClose = null;\r\n }\r\n PacketReceiver.prototype.closeAfter = function (responseNum, callback) {\r\n this.closeAfterResponse = responseNum;\r\n this.onClose = callback;\r\n if (this.closeAfterResponse < this.currentResponseNum) {\r\n this.onClose();\r\n this.onClose = null;\r\n }\r\n };\r\n /**\r\n * Each message from the server comes with a response number, and an array of data. The responseNumber\r\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\r\n * browsers will respond in the same order as the requests we sent\r\n * @param {number} requestNum\r\n * @param {Array} data\r\n */\r\n PacketReceiver.prototype.handleResponse = function (requestNum, data) {\r\n var _this = this;\r\n this.pendingResponses[requestNum] = data;\r\n var _loop_1 = function () {\r\n var toProcess = this_1.pendingResponses[this_1.currentResponseNum];\r\n delete this_1.pendingResponses[this_1.currentResponseNum];\r\n var _loop_2 = function (i) {\r\n if (toProcess[i]) {\r\n exceptionGuard(function () {\r\n _this.onMessage_(toProcess[i]);\r\n });\r\n }\r\n };\r\n for (var i = 0; i < toProcess.length; ++i) {\r\n _loop_2(i);\r\n }\r\n if (this_1.currentResponseNum === this_1.closeAfterResponse) {\r\n if (this_1.onClose) {\r\n this_1.onClose();\r\n this_1.onClose = null;\r\n }\r\n return \"break\";\r\n }\r\n this_1.currentResponseNum++;\r\n };\r\n var this_1 = this;\r\n while (this.pendingResponses[this.currentResponseNum]) {\r\n var state_1 = _loop_1();\r\n if (state_1 === \"break\")\r\n break;\r\n }\r\n };\r\n return PacketReceiver;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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// URL query parameters associated with longpolling\r\nvar FIREBASE_LONGPOLL_START_PARAM = 'start';\r\nvar FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\r\nvar FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\r\nvar FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\r\nvar FIREBASE_LONGPOLL_ID_PARAM = 'id';\r\nvar FIREBASE_LONGPOLL_PW_PARAM = 'pw';\r\nvar FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\r\nvar FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\r\nvar FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\r\nvar FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\r\nvar FIREBASE_LONGPOLL_DATA_PARAM = 'd';\r\nvar FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\r\n//Data size constants.\r\n//TODO: Perf: the maximum length actually differs from browser to browser.\r\n// We should check what browser we're on and set accordingly.\r\nvar MAX_URL_DATA_SIZE = 1870;\r\nvar SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\r\nvar MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\r\n/**\r\n * Keepalive period\r\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\r\n * length of 30 seconds that we can't exceed.\r\n * @const\r\n * @type {number}\r\n */\r\nvar KEEPALIVE_REQUEST_INTERVAL = 25000;\r\n/**\r\n * How long to wait before aborting a long-polling connection attempt.\r\n * @const\r\n * @type {number}\r\n */\r\nvar LP_CONNECT_TIMEOUT = 30000;\r\n/**\r\n * This class manages a single long-polling connection.\r\n *\r\n * @constructor\r\n * @implements {Transport}\r\n */\r\nvar BrowserPollConnection = /** @class */ (function () {\r\n /**\r\n * @param {string} connId An identifier for this connection, used for logging\r\n * @param {RepoInfo} repoInfo The info for the endpoint to send data to.\r\n * @param {string=} transportSessionId Optional transportSessionid if we are reconnecting for an existing\r\n * transport session\r\n * @param {string=} lastSessionId Optional lastSessionId if the PersistentConnection has already created a\r\n * connection previously\r\n */\r\n function BrowserPollConnection(connId, repoInfo, transportSessionId, lastSessionId) {\r\n this.connId = connId;\r\n this.repoInfo = repoInfo;\r\n this.transportSessionId = transportSessionId;\r\n this.lastSessionId = lastSessionId;\r\n this.bytesSent = 0;\r\n this.bytesReceived = 0;\r\n this.everConnected_ = false;\r\n this.log_ = logWrapper(connId);\r\n this.stats_ = StatsManager.getCollection(repoInfo);\r\n this.urlFn = function (params) {\r\n return repoInfo.connectionURL(LONG_POLLING, params);\r\n };\r\n }\r\n /**\r\n *\r\n * @param {function(Object)} onMessage Callback when messages arrive\r\n * @param {function()} onDisconnect Callback with connection lost.\r\n */\r\n BrowserPollConnection.prototype.open = function (onMessage, onDisconnect) {\r\n var _this = this;\r\n this.curSegmentNum = 0;\r\n this.onDisconnect_ = onDisconnect;\r\n this.myPacketOrderer = new PacketReceiver(onMessage);\r\n this.isClosed_ = false;\r\n this.connectTimeoutTimer_ = setTimeout(function () {\r\n _this.log_('Timed out trying to connect.');\r\n // Make sure we clear the host cache\r\n _this.onClosed_();\r\n _this.connectTimeoutTimer_ = null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(LP_CONNECT_TIMEOUT));\r\n // Ensure we delay the creation of the iframe until the DOM is loaded.\r\n executeWhenDOMReady(function () {\r\n if (_this.isClosed_) {\r\n return;\r\n }\r\n //Set up a callback that gets triggered once a connection is set up.\r\n _this.scriptTagHolder = new FirebaseIFrameScriptHolder(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 _a = tslib.__read(args, 5), command = _a[0], arg1 = _a[1], arg2 = _a[2], arg3 = _a[3], arg4 = _a[4];\r\n _this.incrementIncomingBytes_(args);\r\n if (!_this.scriptTagHolder) {\r\n return; // we closed the connection.\r\n }\r\n if (_this.connectTimeoutTimer_) {\r\n clearTimeout(_this.connectTimeoutTimer_);\r\n _this.connectTimeoutTimer_ = null;\r\n }\r\n _this.everConnected_ = true;\r\n if (command === FIREBASE_LONGPOLL_START_PARAM) {\r\n _this.id = arg1;\r\n _this.password = arg2;\r\n }\r\n else if (command === FIREBASE_LONGPOLL_CLOSE_COMMAND) {\r\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\r\n if (arg1) {\r\n // We aren't expecting any more data (other than what the server's already in the process of sending us\r\n // through our already open polls), so don't send any more.\r\n _this.scriptTagHolder.sendNewPolls = false;\r\n // arg1 in this case is the last response number sent by the server. We should try to receive\r\n // all of the responses up to this one before closing\r\n _this.myPacketOrderer.closeAfter(arg1, function () {\r\n _this.onClosed_();\r\n });\r\n }\r\n else {\r\n _this.onClosed_();\r\n }\r\n }\r\n else {\r\n throw new Error('Unrecognized command received: ' + command);\r\n }\r\n }, 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 _a = tslib.__read(args, 2), pN = _a[0], data = _a[1];\r\n _this.incrementIncomingBytes_(args);\r\n _this.myPacketOrderer.handleResponse(pN, data);\r\n }, function () {\r\n _this.onClosed_();\r\n }, _this.urlFn);\r\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\r\n //from cache.\r\n var urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_START_PARAM] = 't';\r\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\r\n if (_this.scriptTagHolder.uniqueCallbackIdentifier) {\r\n urlParams[FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] = _this.scriptTagHolder.uniqueCallbackIdentifier;\r\n }\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (_this.transportSessionId) {\r\n urlParams[TRANSPORT_SESSION_PARAM] = _this.transportSessionId;\r\n }\r\n if (_this.lastSessionId) {\r\n urlParams[LAST_SESSION_PARAM] = _this.lastSessionId;\r\n }\r\n if (typeof location !== 'undefined' &&\r\n location.href &&\r\n location.href.indexOf(FORGE_DOMAIN) !== -1) {\r\n urlParams[REFERER_PARAM] = FORGE_REF;\r\n }\r\n var connectURL = _this.urlFn(urlParams);\r\n _this.log_('Connecting via long-poll to ' + connectURL);\r\n _this.scriptTagHolder.addTag(connectURL, function () {\r\n /* do nothing */\r\n });\r\n });\r\n };\r\n /**\r\n * Call this when a handshake has completed successfully and we want to consider the connection established\r\n */\r\n BrowserPollConnection.prototype.start = function () {\r\n this.scriptTagHolder.startLongPoll(this.id, this.password);\r\n this.addDisconnectPingFrame(this.id, this.password);\r\n };\r\n /**\r\n * Forces long polling to be considered as a potential transport\r\n */\r\n BrowserPollConnection.forceAllow = function () {\r\n BrowserPollConnection.forceAllow_ = true;\r\n };\r\n /**\r\n * Forces longpolling to not be considered as a potential transport\r\n */\r\n BrowserPollConnection.forceDisallow = function () {\r\n BrowserPollConnection.forceDisallow_ = true;\r\n };\r\n // Static method, use string literal so it can be accessed in a generic way\r\n BrowserPollConnection.isAvailable = function () {\r\n if (util.isNodeSdk()) {\r\n return false;\r\n }\r\n else if (BrowserPollConnection.forceAllow_) {\r\n return true;\r\n }\r\n else {\r\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\r\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\r\n return (!BrowserPollConnection.forceDisallow_ &&\r\n typeof document !== 'undefined' &&\r\n document.createElement != null &&\r\n !isChromeExtensionContentScript() &&\r\n !isWindowsStoreApp());\r\n }\r\n };\r\n /**\r\n * No-op for polling\r\n */\r\n BrowserPollConnection.prototype.markConnectionHealthy = function () { };\r\n /**\r\n * Stops polling and cleans up the iframe\r\n * @private\r\n */\r\n BrowserPollConnection.prototype.shutdown_ = function () {\r\n this.isClosed_ = true;\r\n if (this.scriptTagHolder) {\r\n this.scriptTagHolder.close();\r\n this.scriptTagHolder = null;\r\n }\r\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\r\n if (this.myDisconnFrame) {\r\n document.body.removeChild(this.myDisconnFrame);\r\n this.myDisconnFrame = null;\r\n }\r\n if (this.connectTimeoutTimer_) {\r\n clearTimeout(this.connectTimeoutTimer_);\r\n this.connectTimeoutTimer_ = null;\r\n }\r\n };\r\n /**\r\n * Triggered when this transport is closed\r\n * @private\r\n */\r\n BrowserPollConnection.prototype.onClosed_ = function () {\r\n if (!this.isClosed_) {\r\n this.log_('Longpoll is closing itself');\r\n this.shutdown_();\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. RealTime has requested we shut down. Kill our connection and tell the server\r\n * that we've left.\r\n */\r\n BrowserPollConnection.prototype.close = function () {\r\n if (!this.isClosed_) {\r\n this.log_('Longpoll is being closed.');\r\n this.shutdown_();\r\n }\r\n };\r\n /**\r\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\r\n * broken into chunks (since URLs have a small maximum length).\r\n * @param {!Object} data The JSON data to transmit.\r\n */\r\n BrowserPollConnection.prototype.send = function (data) {\r\n var dataStr = util.stringify(data);\r\n this.bytesSent += dataStr.length;\r\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\r\n //first, lets get the base64-encoded data\r\n var base64data = util.base64Encode(dataStr);\r\n //We can only fit a certain amount in each URL, 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(base64data, MAX_PAYLOAD_SIZE);\r\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\r\n //of segments so that we can reassemble the packet on the server.\r\n for (var i = 0; i < dataSegs.length; i++) {\r\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\r\n this.curSegmentNum++;\r\n }\r\n };\r\n /**\r\n * This is how we notify the server that we're leaving.\r\n * We aren't able to send requests with DHTML on a window close event, but we can\r\n * trigger XHR requests in some browsers (everything but Opera basically).\r\n * @param {!string} id\r\n * @param {!string} pw\r\n */\r\n BrowserPollConnection.prototype.addDisconnectPingFrame = function (id, pw) {\r\n if (util.isNodeSdk()) {\r\n return;\r\n }\r\n this.myDisconnFrame = document.createElement('iframe');\r\n var urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\r\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = id;\r\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = pw;\r\n this.myDisconnFrame.src = this.urlFn(urlParams);\r\n this.myDisconnFrame.style.display = 'none';\r\n document.body.appendChild(this.myDisconnFrame);\r\n };\r\n /**\r\n * Used to track the bytes received by this client\r\n * @param {*} args\r\n * @private\r\n */\r\n BrowserPollConnection.prototype.incrementIncomingBytes_ = function (args) {\r\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\r\n var bytesReceived = util.stringify(args).length;\r\n this.bytesReceived += bytesReceived;\r\n this.stats_.incrementCounter('bytes_received', bytesReceived);\r\n };\r\n return BrowserPollConnection;\r\n}());\r\n/*********************************************************************************************\r\n * A wrapper around an iframe that is used as a long-polling script holder.\r\n * @constructor\r\n *********************************************************************************************/\r\nvar FirebaseIFrameScriptHolder = /** @class */ (function () {\r\n /**\r\n * @param commandCB - The callback to be called when control commands are recevied from the server.\r\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\r\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\r\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\r\n */\r\n function FirebaseIFrameScriptHolder(commandCB, onMessageCB, onDisconnect, urlFn) {\r\n this.onDisconnect = onDisconnect;\r\n this.urlFn = urlFn;\r\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\r\n //problems in some browsers.\r\n this.outstandingRequests = new Set();\r\n //A queue of the pending segments waiting for transmission to the server.\r\n this.pendingSegs = [];\r\n //A serial number. We use this for two things:\r\n // 1) A way to ensure the browser doesn't cache responses to polls\r\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\r\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\r\n // JSONP code in the order it was added to the iframe.\r\n this.currentSerial = Math.floor(Math.random() * 100000000);\r\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\r\n // incoming data from the server that we're waiting for).\r\n this.sendNewPolls = true;\r\n if (!util.isNodeSdk()) {\r\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\r\n //iframes where we put the long-polling script tags. We have two callbacks:\r\n // 1) Command Callback - Triggered for control issues, like starting a connection.\r\n // 2) Message Callback - Triggered when new data arrives.\r\n this.uniqueCallbackIdentifier = LUIDGenerator();\r\n window[FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\r\n window[FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] = onMessageCB;\r\n //Create an iframe for us to add script tags to.\r\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\r\n // Set the iframe's contents.\r\n var script = '';\r\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\r\n // for ie9, but ie8 needs to do it again in the document itself.\r\n if (this.myIFrame.src &&\r\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\r\n var currentDomain = document.domain;\r\n script = '<script>document.domain=\"' + currentDomain + '\";</script>';\r\n }\r\n var iframeContents = '<html><body>' + script + '</body></html>';\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 * @private\r\n * @return {Element}\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 {!string} id - The ID of this connection\r\n * @param {!string} 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 {!string} url - The URL of the script tag.\r\n * @param {!number} serial - The serial number of the request.\r\n * @private\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 {!string} url - The URL for the script tag source.\r\n * @param {!function()} 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 (util.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 2019 Google Inc.\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/** The semver (www.semver.org) version of the SDK. */\r\nvar SDK_VERSION = '';\r\n// SDK_VERSION should be set before any database instance is created\r\nfunction setSDKVersion(version) {\r\n SDK_VERSION = version;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n * @implements {Transport}\r\n */\r\nvar WebSocketConnection = /** @class */ (function () {\r\n /**\r\n * @param {string} connId identifier for this transport\r\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\r\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\r\n */\r\n function WebSocketConnection(connId, repoInfo, transportSessionId, lastSessionId) {\r\n this.connId = connId;\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_ = StatsManager.getCollection(repoInfo);\r\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId);\r\n }\r\n /**\r\n * @param {RepoInfo} repoInfo The info for the websocket endpoint.\r\n * @param {string=} transportSessionId Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param {string=} lastSessionId Optional lastSessionId if there was a previous connection\r\n * @return {string} connection url\r\n * @private\r\n */\r\n WebSocketConnection.connectionURL_ = function (repoInfo, transportSessionId, lastSessionId) {\r\n var urlParams = {};\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (!util.isNodeSdk() &&\r\n typeof location !== 'undefined' &&\r\n location.href &&\r\n location.href.indexOf(FORGE_DOMAIN) !== -1) {\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 return repoInfo.connectionURL(WEBSOCKET, urlParams);\r\n };\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 (util.isNodeSdk()) {\r\n var device = util.CONSTANTS.NODE_ADMIN ? 'AdminNode' : 'Node';\r\n // UA Format: Firebase/<wire_protocol>/<sdk_version>/<platform>/<device>\r\n var options = {\r\n headers: {\r\n 'User-Agent': \"Firebase/\" + PROTOCOL_VERSION + \"/\" + SDK_VERSION + \"/\" + process.platform + \"/\" + device\r\n }\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 this.mySock = new WebSocketImpl(this.connURL);\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 * @return {boolean}\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 = util.jsonEval(fullMess);\r\n //handle the message\r\n this.onMessage(jsonMess);\r\n }\r\n };\r\n /**\r\n * @param {number} frameCount The number of frames we are expecting from the server\r\n * @private\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 * @param {!String} data\r\n * @return {?String} Any remaining data to be process, or null if there is none\r\n * @private\r\n */\r\n WebSocketConnection.prototype.extractFrameCount_ = function (data) {\r\n util.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 {Object} data The JSON object to transmit\r\n */\r\n WebSocketConnection.prototype.send = function (data) {\r\n this.resetKeepAlive();\r\n var dataStr = util.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 {string} str String to send.\r\n * @private\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 * @type {number}\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 * @type {number}\r\n */\r\n WebSocketConnection.healthyTimeout = 30000;\r\n return WebSocketConnection;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @constructor\r\n */\r\nvar TransportManager = /** @class */ (function () {\r\n /**\r\n * @param {!RepoInfo} 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 /**\r\n * @const\r\n * @type {!Array.<function(new:Transport, string, RepoInfo, string=)>}\r\n */\r\n get: function () {\r\n return [BrowserPollConnection, WebSocketConnection];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {!RepoInfo} repoInfo\r\n * @private\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 = tslib.__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 * @return {function(new:Transport, !string, !RepoInfo, string=, string=)} The constructor for the\r\n * 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 * @return {?function(new:Transport, function(),function(), string=)} The constructor for the next\r\n * 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 Inc.\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\n * @constructor\r\n */\r\nvar Connection = /** @class */ (function () {\r\n /**\r\n * @param {!string} id - an id for this connection\r\n * @param {!RepoInfo} repoInfo_ - the info for the endpoint to connect to\r\n * @param {function(Object)} onMessage_ - the callback to be triggered when a server-push message arrives\r\n * @param {function(number, string)} onReady_ - the callback to be triggered when this connection is ready to send messages.\r\n * @param {function()} onDisconnect_ - the callback to be triggered when a connection was lost\r\n * @param {function(string)} onKill_ - the callback to be triggered when this connection has permanently shut down.\r\n * @param {string=} 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_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\r\n this.id = id;\r\n this.repoInfo_ = repoInfo_;\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 * @private\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_, undefined, 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 /**\r\n * @return {!string}\r\n * @private\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 *\r\n * @param {Object} 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 *\r\n * @param {Object} handshake The handshake data returned from the server\r\n * @private\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_.updateHost(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.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_.updateHost(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 *\r\n * @param {boolean} everConnected Whether or not the connection ever reached a server. Used to determine if\r\n * we should flush the host cache\r\n * @private\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. <ns>.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 /**\r\n *\r\n * @param {string} reason\r\n * @private\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 /**\r\n *\r\n * @private\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 Inc.\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 /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n * @param {string=} hash\r\n */\r\n ServerActions.prototype.put = function (pathString, data, onComplete, hash) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, ?string)} onComplete\r\n * @param {string=} hash\r\n */\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 {string} token The authentication token\r\n */\r\n ServerActions.prototype.refreshAuthToken = function (token) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectPut = function (pathString, data, onComplete) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {*} data\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectMerge = function (pathString, data, onComplete) { };\r\n /**\r\n * @param {string} pathString\r\n * @param {function(string, string)=} onComplete\r\n */\r\n ServerActions.prototype.onDisconnectCancel = function (pathString, onComplete) { };\r\n /**\r\n * @param {Object.<string, *>} stats\r\n */\r\n ServerActions.prototype.reportStats = function (stats) { };\r\n return ServerActions;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 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_AUTH_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 tslib.__extends(PersistentConnection, _super);\r\n /**\r\n * @implements {ServerActions}\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 PersistentConnection(repoInfo_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, authOverride_) {\r\n var _this = _super.call(this) || this;\r\n _this.repoInfo_ = repoInfo_;\r\n _this.onDataUpdate_ = onDataUpdate_;\r\n _this.onConnectStatus_ = onConnectStatus_;\r\n _this.onServerInfoUpdate_ = onServerInfoUpdate_;\r\n _this.authTokenProvider_ = authTokenProvider_;\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 /** Map<path, Map<queryId, ListenSpec>> */\r\n _this.listens = new Map();\r\n _this.outstandingPuts_ = [];\r\n _this.outstandingPutCount_ = 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.forceTokenRefresh_ = false;\r\n _this.invalidAuthTokenCount_ = 0;\r\n _this.firstConnection_ = true;\r\n _this.lastConnectionAttemptTime_ = null;\r\n _this.lastConnectionEstablishedTime_ = null;\r\n if (authOverride_ && !util.isNodeSdk()) {\r\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\r\n }\r\n _this.scheduleConnect_(0);\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_(util.stringify(msg));\r\n util.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 /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.listen = function (query, currentHashFn, tag, onComplete) {\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 util.assert(query.getQueryParams().isDefault() ||\r\n !query.getQueryParams().loadsAllData(), 'listen() called for non-default but complete query');\r\n util.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.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' && util.contains(payload, 'w')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var warnings = util.safeGet(payload, 'w');\r\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\r\n var indexSpec = '\".indexOn\": \"' +\r\n query\r\n .getQueryParams()\r\n .getIndex()\r\n .toString() +\r\n '\"';\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 /**\r\n * @inheritDoc\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 || util.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 /**\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 = util.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 * @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 util.assert(query.getQueryParams().isDefault() ||\r\n !query.getQueryParams().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 /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectPut = function (pathString, data, onComplete) {\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 /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectMerge = function (pathString, data, onComplete) {\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 /**\r\n * @inheritDoc\r\n */\r\n PersistentConnection.prototype.onDisconnectCancel = function (pathString, onComplete) {\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 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 /**\r\n * @inheritDoc\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: ' + util.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 === 'sd') {\r\n this.onSecurityDebugPacket_(body);\r\n }\r\n else {\r\n error('Unrecognized action received from server: ' +\r\n util.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 util.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.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 if (this.shouldReconnect_()) {\r\n this.log_('Making a connection attempt');\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n this.lastConnectionEstablishedTime_ = null;\r\n var onDataMessage_1 = this.onDataMessage_.bind(this);\r\n var onReady_1 = this.onReady_.bind(this);\r\n var onDisconnect_1 = this.onRealtimeDisconnect_.bind(this);\r\n var connId_1 = this.id + ':' + PersistentConnection.nextConnectionId_++;\r\n var self_1 = this;\r\n var lastSessionId_1 = this.lastSessionId;\r\n var canceled_1 = false;\r\n var connection_1 = null;\r\n var closeFn_1 = 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 var sendRequestFn = function (msg) {\r\n util.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_1,\r\n sendRequest: sendRequestFn\r\n };\r\n var forceRefresh = this.forceTokenRefresh_;\r\n this.forceTokenRefresh_ = false;\r\n // First fetch auth token, and establish connection after fetching the token was successful\r\n this.authTokenProvider_\r\n .getToken(forceRefresh)\r\n .then(function (result) {\r\n if (!canceled_1) {\r\n log('getToken() completed. Creating connection.');\r\n self_1.authToken_ = result && result.accessToken;\r\n connection_1 = new Connection(connId_1, self_1.repoInfo_, onDataMessage_1, onReady_1, onDisconnect_1, \r\n /* onKill= */ function (reason) {\r\n warn(reason + ' (' + self_1.repoInfo_.toString() + ')');\r\n self_1.interrupt(SERVER_KILL_INTERRUPT_REASON);\r\n }, lastSessionId_1);\r\n }\r\n else {\r\n log('getToken() completed but was canceled');\r\n }\r\n })\r\n .then(null, function (error) {\r\n self_1.log_('Failed to get token: ' + error);\r\n if (!canceled_1) {\r\n if (util.CONSTANTS.NODE_ADMIN) {\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);\r\n }\r\n closeFn_1();\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 (util.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_AUTH_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.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 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 = tslib.__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, tslib.__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 };\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 (util.CONSTANTS.NODE_ADMIN) {\r\n clientName = 'admin_node';\r\n }\r\n else if (util.CONSTANTS.NODE_CLIENT) {\r\n clientName = 'node';\r\n }\r\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\r\n if (util.isMobileCordova()) {\r\n stats['framework.cordova'] = 1;\r\n }\r\n else if (util.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 util.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 Inc.\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 tslib.__extends(ReadonlyRestClient, _super);\r\n /**\r\n * @param {!RepoInfo} repoInfo_ Data about the namespace we are connecting to\r\n * @param {function(string, *, boolean, ?number)} onDataUpdate_ A callback for new data from the server\r\n * @param {AuthTokenProvider} authTokenProvider_\r\n * @implements {ServerActions}\r\n */\r\n function ReadonlyRestClient(repoInfo_, onDataUpdate_, authTokenProvider_) {\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 /** @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 * @private {!Object.<string, !Object>}\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 /**\r\n * @param {!Query} query\r\n * @param {?number=} tag\r\n * @return {string}\r\n * @private\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 util.assert(query.getQueryParams().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 = query\r\n .getQueryParams()\r\n .toRestQueryStringParameters();\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 (util.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 /** @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 * @param {!string} pathString\r\n * @param {!Object.<string, *>} queryStringParameters\r\n * @param {?function(?number, *=)} callback\r\n * @private\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 this.authTokenProvider_\r\n .getToken(/*forceRefresh=*/ false)\r\n .then(function (authTokenData) {\r\n var authToken = authTokenData && authTokenData.accessToken;\r\n if (authToken) {\r\n queryStringParameters['auth'] = authToken;\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 util.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 = util.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\nvar INTERRUPT_REASON = 'repo_interrupt';\r\n/**\r\n * A connection to a single data repository.\r\n */\r\nvar Repo = /** @class */ (function () {\r\n function Repo(repoInfo_, forceRestClient, app, authProvider) {\r\n var _this = this;\r\n this.repoInfo_ = repoInfo_;\r\n this.app = app;\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_ = new SparseSnapshotTree();\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 var authTokenProvider = new AuthTokenProvider(app, authProvider);\r\n this.stats_ = StatsManager.getCollection(repoInfo_);\r\n if (forceRestClient || beingCrawled()) {\r\n this.server_ = new ReadonlyRestClient(this.repoInfo_, this.onDataUpdate_.bind(this), authTokenProvider);\r\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\r\n setTimeout(this.onConnectStatus_.bind(this, true), 0);\r\n }\r\n else {\r\n var authOverride = app.options['databaseAuthVariableOverride'];\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 util.stringify(authOverride);\r\n }\r\n catch (e) {\r\n throw new Error('Invalid authOverride provided: ' + e);\r\n }\r\n }\r\n this.persistentConnection_ = new PersistentConnection(this.repoInfo_, this.onDataUpdate_.bind(this), this.onConnectStatus_.bind(this), this.onServerInfoUpdate_.bind(this), authTokenProvider, authOverride);\r\n this.server_ = this.persistentConnection_;\r\n }\r\n authTokenProvider.addTokenChangeListener(function (token) {\r\n _this.server_.refreshAuthToken(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 this.statsReporter_ = StatsManager.getOrCreateReporter(repoInfo_, function () { return new StatsReporter(_this.stats_, _this.server_); });\r\n this.transactionsInit_();\r\n // Used for .info.\r\n this.infoData_ = new SnapshotHolder();\r\n this.infoSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n var infoEvents = [];\r\n var node = _this.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 = _this.infoSyncTree_.applyServerOverwrite(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 this.updateInfo_('connected', false);\r\n this.serverSyncTree_ = new SyncTree({\r\n startListening: function (query, tag, currentHashFn, onComplete) {\r\n _this.server_.listen(query, currentHashFn, tag, function (status, data) {\r\n var events = onComplete(status, data);\r\n _this.eventQueue_.raiseEventsForChangedPath(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 _this.server_.unlisten(query, tag);\r\n }\r\n });\r\n }\r\n /**\r\n * @return 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 /**\r\n * @return The namespace represented by the repo.\r\n */\r\n Repo.prototype.name = function () {\r\n return this.repoInfo_.namespace;\r\n };\r\n /**\r\n * @return The time in milliseconds, taking the server offset into account if we have one.\r\n */\r\n Repo.prototype.serverTime = function () {\r\n var offsetNode = this.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\n Repo.prototype.generateServerValues = function () {\r\n return generateWithValues({\r\n timestamp: this.serverTime()\r\n });\r\n };\r\n /**\r\n * Called by realtime when we get new messages from the server.\r\n */\r\n Repo.prototype.onDataUpdate_ = function (pathString, data, isMerge, tag) {\r\n // For testing.\r\n this.dataUpdateCount++;\r\n var path = new Path(pathString);\r\n data = this.interceptServerDataCallback_\r\n ? this.interceptServerDataCallback_(pathString, data)\r\n : data;\r\n var events = [];\r\n if (tag) {\r\n if (isMerge) {\r\n var taggedChildren = util.map(data, function (raw) { return nodeFromJSON$1(raw); });\r\n events = this.serverSyncTree_.applyTaggedQueryMerge(path, taggedChildren, tag);\r\n }\r\n else {\r\n var taggedSnap = nodeFromJSON$1(data);\r\n events = this.serverSyncTree_.applyTaggedQueryOverwrite(path, taggedSnap, tag);\r\n }\r\n }\r\n else if (isMerge) {\r\n var changedChildren = util.map(data, function (raw) { return nodeFromJSON$1(raw); });\r\n events = this.serverSyncTree_.applyServerMerge(path, changedChildren);\r\n }\r\n else {\r\n var snap = nodeFromJSON$1(data);\r\n events = this.serverSyncTree_.applyServerOverwrite(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 = this.rerunTransactions_(path);\r\n }\r\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, events);\r\n };\r\n // TODO: This should be @private but it's used by test_access.js and internal.js\r\n Repo.prototype.interceptServerData_ = function (callback) {\r\n this.interceptServerDataCallback_ = callback;\r\n };\r\n Repo.prototype.onConnectStatus_ = function (connectStatus) {\r\n this.updateInfo_('connected', connectStatus);\r\n if (connectStatus === false) {\r\n this.runOnDisconnectEvents_();\r\n }\r\n };\r\n Repo.prototype.onServerInfoUpdate_ = function (updates) {\r\n var _this = this;\r\n each(updates, function (key, value) {\r\n _this.updateInfo_(key, value);\r\n });\r\n };\r\n Repo.prototype.updateInfo_ = function (pathString, value) {\r\n var path = new Path('/.info/' + pathString);\r\n var newNode = nodeFromJSON$1(value);\r\n this.infoData_.updateSnapshot(path, newNode);\r\n var events = this.infoSyncTree_.applyServerOverwrite(path, newNode);\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n };\r\n Repo.prototype.getNextWriteId_ = function () {\r\n return this.nextWriteId_++;\r\n };\r\n Repo.prototype.setWithPriority = function (path, newVal, newPriority, onComplete) {\r\n var _this = this;\r\n this.log_('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 = this.generateServerValues();\r\n var newNodeUnresolved = nodeFromJSON$1(newVal, newPriority);\r\n var existing = this.serverSyncTree_.calcCompleteEventCache(path);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\r\n var writeId = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, writeId, true);\r\n this.eventQueue_.queueEvents(events);\r\n this.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 = _this.serverSyncTree_.ackUserWrite(writeId, !success);\r\n _this.eventQueue_.raiseEventsForChangedPath(path, clearEvents);\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n var affectedPath = this.abortTransactions_(path);\r\n this.rerunTransactions_(affectedPath);\r\n // We queued the events above, so just flush the queue here\r\n this.eventQueue_.raiseEventsForChangedPath(affectedPath, []);\r\n };\r\n Repo.prototype.update = function (path, childrenToMerge, onComplete) {\r\n var _this = this;\r\n this.log_('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 = this.generateServerValues();\r\n var changedChildren = {};\r\n each(childrenToMerge, function (changedKey, changedValue) {\r\n empty = false;\r\n changedChildren[changedKey] = resolveDeferredValueTree(path.child(changedKey), nodeFromJSON$1(changedValue), _this.serverSyncTree_, serverValues);\r\n });\r\n if (!empty) {\r\n var writeId_1 = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserMerge(path, changedChildren, writeId_1);\r\n this.eventQueue_.queueEvents(events);\r\n this.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 = _this.serverSyncTree_.ackUserWrite(writeId_1, !success);\r\n var affectedPath = clearEvents.length > 0 ? _this.rerunTransactions_(path) : path;\r\n _this.eventQueue_.raiseEventsForChangedPath(affectedPath, clearEvents);\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n each(childrenToMerge, function (changedPath) {\r\n var affectedPath = _this.abortTransactions_(path.child(changedPath));\r\n _this.rerunTransactions_(affectedPath);\r\n });\r\n // We queued the events above, so just flush the queue here\r\n this.eventQueue_.raiseEventsForChangedPath(path, []);\r\n }\r\n else {\r\n log(\"update() called with empty data. Don't do anything.\");\r\n this.callOnCompleteCallback(onComplete, 'ok');\r\n }\r\n };\r\n /**\r\n * Applies all of the changes stored up in the onDisconnect_ tree.\r\n */\r\n Repo.prototype.runOnDisconnectEvents_ = function () {\r\n var _this = this;\r\n this.log_('onDisconnectEvents');\r\n var serverValues = this.generateServerValues();\r\n var resolvedOnDisconnectTree = new SparseSnapshotTree();\r\n this.onDisconnect_.forEachTree(Path.Empty, function (path, node) {\r\n var resolved = resolveDeferredValueTree(path, node, _this.serverSyncTree_, serverValues);\r\n resolvedOnDisconnectTree.remember(path, resolved);\r\n });\r\n var events = [];\r\n resolvedOnDisconnectTree.forEachTree(Path.Empty, function (path, snap) {\r\n events = events.concat(_this.serverSyncTree_.applyServerOverwrite(path, snap));\r\n var affectedPath = _this.abortTransactions_(path);\r\n _this.rerunTransactions_(affectedPath);\r\n });\r\n this.onDisconnect_ = new SparseSnapshotTree();\r\n this.eventQueue_.raiseEventsForChangedPath(Path.Empty, events);\r\n };\r\n Repo.prototype.onDisconnectCancel = function (path, onComplete) {\r\n var _this = this;\r\n this.server_.onDisconnectCancel(path.toString(), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.forget(path);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectSet = function (path, value, onComplete) {\r\n var _this = this;\r\n var newNode = nodeFromJSON$1(value);\r\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.remember(path, newNode);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectSetWithPriority = function (path, value, priority, onComplete) {\r\n var _this = this;\r\n var newNode = nodeFromJSON$1(value, priority);\r\n this.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), function (status, errorReason) {\r\n if (status === 'ok') {\r\n _this.onDisconnect_.remember(path, newNode);\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.onDisconnectUpdate = function (path, childrenToMerge, onComplete) {\r\n var _this = this;\r\n if (util.isEmpty(childrenToMerge)) {\r\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\r\n this.callOnCompleteCallback(onComplete, 'ok');\r\n return;\r\n }\r\n this.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$1(childNode);\r\n _this.onDisconnect_.remember(path.child(childName), newChildNode);\r\n });\r\n }\r\n _this.callOnCompleteCallback(onComplete, status, errorReason);\r\n });\r\n };\r\n Repo.prototype.addEventCallbackForQuery = function (query, eventRegistration) {\r\n var events;\r\n if (query.path.getFront() === '.info') {\r\n events = this.infoSyncTree_.addEventRegistration(query, eventRegistration);\r\n }\r\n else {\r\n events = this.serverSyncTree_.addEventRegistration(query, eventRegistration);\r\n }\r\n this.eventQueue_.raiseEventsAtPath(query.path, events);\r\n };\r\n Repo.prototype.removeEventCallbackForQuery = function (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 (query.path.getFront() === '.info') {\r\n events = this.infoSyncTree_.removeEventRegistration(query, eventRegistration);\r\n }\r\n else {\r\n events = this.serverSyncTree_.removeEventRegistration(query, eventRegistration);\r\n }\r\n this.eventQueue_.raiseEventsAtPath(query.path, events);\r\n };\r\n Repo.prototype.interrupt = function () {\r\n if (this.persistentConnection_) {\r\n this.persistentConnection_.interrupt(INTERRUPT_REASON);\r\n }\r\n };\r\n Repo.prototype.resume = function () {\r\n if (this.persistentConnection_) {\r\n this.persistentConnection_.resume(INTERRUPT_REASON);\r\n }\r\n };\r\n Repo.prototype.stats = function (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 (!this.statsListener_) {\r\n this.statsListener_ = new StatsListener(this.stats_);\r\n }\r\n stats = this.statsListener_.get();\r\n }\r\n else {\r\n stats = this.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\n Repo.prototype.statsIncrementCounter = function (metric) {\r\n this.stats_.incrementCounter(metric);\r\n this.statsReporter_.includeStat(metric);\r\n };\r\n Repo.prototype.log_ = function () {\r\n var varArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n varArgs[_i] = arguments[_i];\r\n }\r\n var prefix = '';\r\n if (this.persistentConnection_) {\r\n prefix = this.persistentConnection_.id + ':';\r\n }\r\n log.apply(void 0, tslib.__spread([prefix], varArgs));\r\n };\r\n Repo.prototype.callOnCompleteCallback = function (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 Object.defineProperty(Repo.prototype, \"database\", {\r\n get: function () {\r\n return this.__database || (this.__database = new Database(this));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Repo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n * @constructor\r\n * @implements {NodeFilter}\r\n */\r\nvar RangedFilter = /** @class */ (function () {\r\n /**\r\n * @param {!QueryParams} params\r\n */\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 /**\r\n * @return {!NamedNode}\r\n */\r\n RangedFilter.prototype.getStartPost = function () {\r\n return this.startPost_;\r\n };\r\n /**\r\n * @return {!NamedNode}\r\n */\r\n RangedFilter.prototype.getEndPost = function () {\r\n return this.endPost_;\r\n };\r\n /**\r\n * @param {!NamedNode} node\r\n * @return {boolean}\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.getIndexedFilter = function () {\r\n return this.indexedFilter_;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n RangedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @param {!QueryParams} params\r\n * @return {!NamedNode}\r\n * @private\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 /**\r\n * @param {!QueryParams} params\r\n * @return {!NamedNode}\r\n * @private\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 Inc.\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\n * @constructor\r\n * @implements {NodeFilter}\r\n */\r\nvar LimitedFilter = /** @class */ (function () {\r\n /**\r\n * @param {!QueryParams} params\r\n */\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\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 /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.filtersNodes = function () {\r\n return true;\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.getIndexedFilter = function () {\r\n return this.rangedFilter_.getIndexedFilter();\r\n };\r\n /**\r\n * @inheritDoc\r\n */\r\n LimitedFilter.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @param {!Node} snap\r\n * @param {string} childKey\r\n * @param {!Node} childSnap\r\n * @param {!CompleteChildSource} source\r\n * @param {?ChildChangeAccumulator} changeAccumulator\r\n * @return {!Node}\r\n * @private\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 util.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(Change.childChangedChange(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(Change.childRemovedChange(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(Change.childAddedChange(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(Change.childRemovedChange(windowBoundary.name, windowBoundary.node));\r\n changeAccumulator.trackChildChange(Change.childAddedChange(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 Inc.\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 * @constructor\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.endSet_ = false;\r\n this.endNameSet_ = 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 /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.hasStart = function () {\r\n return this.startSet_;\r\n };\r\n /**\r\n * @return {boolean} 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_ === QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT);\r\n }\r\n };\r\n /**\r\n * Only valid to call if hasStart() returns true\r\n * @return {*}\r\n */\r\n QueryParams.prototype.getIndexStartValue = function () {\r\n util.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 * @return {!string}\r\n */\r\n QueryParams.prototype.getIndexStartName = function () {\r\n util.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 /**\r\n * @return {boolean}\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 * @return {*}\r\n */\r\n QueryParams.prototype.getIndexEndValue = function () {\r\n util.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 * @return {!string}\r\n */\r\n QueryParams.prototype.getIndexEndName = function () {\r\n util.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 /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.hasLimit = function () {\r\n return this.limitSet_;\r\n };\r\n /**\r\n * @return {boolean} 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 * @return {!number}\r\n */\r\n QueryParams.prototype.getLimit = function () {\r\n util.assert(this.limitSet_, 'Only valid if limit has been set');\r\n return this.limit_;\r\n };\r\n /**\r\n * @return {!Index}\r\n */\r\n QueryParams.prototype.getIndex = function () {\r\n return this.index_;\r\n };\r\n /**\r\n * @return {!QueryParams}\r\n * @private\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 /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limit = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = '';\r\n return newParams;\r\n };\r\n /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limitToFirst = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_LEFT;\r\n return newParams;\r\n };\r\n /**\r\n * @param {!number} newLimit\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.limitToLast = function (newLimit) {\r\n var newParams = this.copy_();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = QueryParams.WIRE_PROTOCOL_CONSTANTS_.VIEW_FROM_RIGHT;\r\n return newParams;\r\n };\r\n /**\r\n * @param {*} indexValue\r\n * @param {?string=} key\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.startAt = function (indexValue, key) {\r\n var newParams = this.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\n /**\r\n * @param {*} indexValue\r\n * @param {?string=} key\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.endAt = function (indexValue, key) {\r\n var newParams = this.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\n /**\r\n * @param {!Index} index\r\n * @return {!QueryParams}\r\n */\r\n QueryParams.prototype.orderBy = function (index) {\r\n var newParams = this.copy_();\r\n newParams.index_ = index;\r\n return newParams;\r\n };\r\n /**\r\n * @return {!Object}\r\n */\r\n QueryParams.prototype.getQueryObject = function () {\r\n var WIRE_PROTOCOL_CONSTANTS = QueryParams.WIRE_PROTOCOL_CONSTANTS_;\r\n var obj = {};\r\n if (this.startSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_VALUE] = this.indexStartValue_;\r\n if (this.startNameSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_START_NAME] = this.indexStartName_;\r\n }\r\n }\r\n if (this.endSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_VALUE] = this.indexEndValue_;\r\n if (this.endNameSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX_END_NAME] = this.indexEndName_;\r\n }\r\n }\r\n if (this.limitSet_) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.LIMIT] = this.limit_;\r\n var viewFrom = this.viewFrom_;\r\n if (viewFrom === '') {\r\n if (this.isViewFromLeft()) {\r\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_LEFT;\r\n }\r\n else {\r\n viewFrom = WIRE_PROTOCOL_CONSTANTS.VIEW_FROM_RIGHT;\r\n }\r\n }\r\n obj[WIRE_PROTOCOL_CONSTANTS.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 (this.index_ !== PRIORITY_INDEX) {\r\n obj[WIRE_PROTOCOL_CONSTANTS.INDEX] = this.index_.toString();\r\n }\r\n return obj;\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.loadsAllData = function () {\r\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\r\n };\r\n /**\r\n * @return {boolean}\r\n */\r\n QueryParams.prototype.isDefault = function () {\r\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\r\n };\r\n /**\r\n * @return {!NodeFilter}\r\n */\r\n QueryParams.prototype.getNodeFilter = function () {\r\n if (this.loadsAllData()) {\r\n return new IndexedFilter(this.getIndex());\r\n }\r\n else if (this.hasLimit()) {\r\n return new LimitedFilter(this);\r\n }\r\n else {\r\n return new RangedFilter(this);\r\n }\r\n };\r\n /**\r\n * Returns a set of REST query string parameters representing this query.\r\n *\r\n * @return {!Object.<string,*>} query string parameters\r\n */\r\n QueryParams.prototype.toRestQueryStringParameters = function () {\r\n var REST_CONSTANTS = QueryParams.REST_QUERY_CONSTANTS_;\r\n var qs = {};\r\n if (this.isDefault()) {\r\n return qs;\r\n }\r\n var orderBy;\r\n if (this.index_ === PRIORITY_INDEX) {\r\n orderBy = REST_CONSTANTS.PRIORITY_INDEX;\r\n }\r\n else if (this.index_ === VALUE_INDEX) {\r\n orderBy = REST_CONSTANTS.VALUE_INDEX;\r\n }\r\n else if (this.index_ === KEY_INDEX) {\r\n orderBy = REST_CONSTANTS.KEY_INDEX;\r\n }\r\n else {\r\n util.assert(this.index_ instanceof PathIndex, 'Unrecognized index type!');\r\n orderBy = this.index_.toString();\r\n }\r\n qs[REST_CONSTANTS.ORDER_BY] = util.stringify(orderBy);\r\n if (this.startSet_) {\r\n qs[REST_CONSTANTS.START_AT] = util.stringify(this.indexStartValue_);\r\n if (this.startNameSet_) {\r\n qs[REST_CONSTANTS.START_AT] += ',' + util.stringify(this.indexStartName_);\r\n }\r\n }\r\n if (this.endSet_) {\r\n qs[REST_CONSTANTS.END_AT] = util.stringify(this.indexEndValue_);\r\n if (this.endNameSet_) {\r\n qs[REST_CONSTANTS.END_AT] += ',' + util.stringify(this.indexEndName_);\r\n }\r\n }\r\n if (this.limitSet_) {\r\n if (this.isViewFromLeft()) {\r\n qs[REST_CONSTANTS.LIMIT_TO_FIRST] = this.limit_;\r\n }\r\n else {\r\n qs[REST_CONSTANTS.LIMIT_TO_LAST] = this.limit_;\r\n }\r\n }\r\n return qs;\r\n };\r\n /**\r\n * Wire Protocol Constants\r\n * @const\r\n * @enum {string}\r\n * @private\r\n */\r\n QueryParams.WIRE_PROTOCOL_CONSTANTS_ = {\r\n INDEX_START_VALUE: 'sp',\r\n INDEX_START_NAME: 'sn',\r\n INDEX_END_VALUE: 'ep',\r\n INDEX_END_NAME: 'en',\r\n LIMIT: 'l',\r\n VIEW_FROM: 'vf',\r\n VIEW_FROM_LEFT: 'l',\r\n VIEW_FROM_RIGHT: 'r',\r\n INDEX: 'i'\r\n };\r\n /**\r\n * REST Query Constants\r\n * @const\r\n * @enum {string}\r\n * @private\r\n */\r\n QueryParams.REST_QUERY_CONSTANTS_ = {\r\n ORDER_BY: 'orderBy',\r\n PRIORITY_INDEX: '$priority',\r\n VALUE_INDEX: '$value',\r\n KEY_INDEX: '$key',\r\n START_AT: 'startAt',\r\n END_AT: 'endAt',\r\n LIMIT_TO_FIRST: 'limitToFirst',\r\n LIMIT_TO_LAST: 'limitToLast'\r\n };\r\n /**\r\n * Default, empty query parameters\r\n * @type {!QueryParams}\r\n * @const\r\n */\r\n QueryParams.DEFAULT = new QueryParams();\r\n return QueryParams;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Reference = /** @class */ (function (_super) {\r\n tslib.__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 * @param {!Repo} repo\r\n * @param {(!Path)} path\r\n * @extends {Query}\r\n */\r\n function Reference(repo, path) {\r\n var _this = this;\r\n if (!(repo instanceof Repo)) {\r\n throw new Error('new Reference() no longer supported - use app.database().');\r\n }\r\n // call Query's constructor, passing in the repo and path.\r\n _this = _super.call(this, repo, path, QueryParams.DEFAULT, false) || this;\r\n return _this;\r\n }\r\n /** @return {?string} */\r\n Reference.prototype.getKey = function () {\r\n util.validateArgCount('Reference.key', 0, 0, arguments.length);\r\n if (this.path.isEmpty()) {\r\n return null;\r\n }\r\n else {\r\n return this.path.getBack();\r\n }\r\n };\r\n /**\r\n * @param {!(string|Path)} pathString\r\n * @return {!Reference}\r\n */\r\n Reference.prototype.child = function (pathString) {\r\n util.validateArgCount('Reference.child', 1, 1, arguments.length);\r\n if (typeof pathString === 'number') {\r\n pathString = String(pathString);\r\n }\r\n else if (!(pathString instanceof Path)) {\r\n if (this.path.getFront() === null) {\r\n validateRootPathString('Reference.child', 1, pathString, false);\r\n }\r\n else {\r\n validatePathString('Reference.child', 1, pathString, false);\r\n }\r\n }\r\n return new Reference(this.repo, this.path.child(pathString));\r\n };\r\n /** @return {?Reference} */\r\n Reference.prototype.getParent = function () {\r\n util.validateArgCount('Reference.parent', 0, 0, arguments.length);\r\n var parentPath = this.path.parent();\r\n return parentPath === null ? null : new Reference(this.repo, parentPath);\r\n };\r\n /** @return {!Reference} */\r\n Reference.prototype.getRoot = function () {\r\n util.validateArgCount('Reference.root', 0, 0, arguments.length);\r\n var ref = this;\r\n while (ref.getParent() !== null) {\r\n ref = ref.getParent();\r\n }\r\n return ref;\r\n };\r\n /** @return {!Database} */\r\n Reference.prototype.databaseProp = function () {\r\n return this.repo.database;\r\n };\r\n /**\r\n * @param {*} newVal\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.set = function (newVal, onComplete) {\r\n util.validateArgCount('Reference.set', 1, 2, arguments.length);\r\n validateWritablePath('Reference.set', this.path);\r\n validateFirebaseDataArg('Reference.set', 1, newVal, this.path, false);\r\n util.validateCallback('Reference.set', 2, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo.setWithPriority(this.path, newVal, \r\n /*priority=*/ null, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {!Object} objectToMerge\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.update = function (objectToMerge, onComplete) {\r\n util.validateArgCount('Reference.update', 1, 2, arguments.length);\r\n validateWritablePath('Reference.update', this.path);\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.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 validateFirebaseMergeDataArg('Reference.update', 1, objectToMerge, this.path, false);\r\n util.validateCallback('Reference.update', 2, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo.update(this.path, objectToMerge, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*} newVal\r\n * @param {string|number|null} newPriority\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.setWithPriority = function (newVal, newPriority, onComplete) {\r\n util.validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\r\n validateWritablePath('Reference.setWithPriority', this.path);\r\n validateFirebaseDataArg('Reference.setWithPriority', 1, newVal, this.path, false);\r\n validatePriority('Reference.setWithPriority', 2, newPriority, false);\r\n util.validateCallback('Reference.setWithPriority', 3, onComplete, true);\r\n if (this.getKey() === '.length' || this.getKey() === '.keys') {\r\n throw 'Reference.setWithPriority failed: ' +\r\n this.getKey() +\r\n ' is a read-only object.';\r\n }\r\n var deferred = new util.Deferred();\r\n this.repo.setWithPriority(this.path, newVal, newPriority, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.remove = function (onComplete) {\r\n util.validateArgCount('Reference.remove', 0, 1, arguments.length);\r\n validateWritablePath('Reference.remove', this.path);\r\n util.validateCallback('Reference.remove', 1, onComplete, true);\r\n return this.set(null, onComplete);\r\n };\r\n /**\r\n * @param {function(*):*} transactionUpdate\r\n * @param {(function(?Error, boolean, ?DataSnapshot))=} onComplete\r\n * @param {boolean=} applyLocally\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.transaction = function (transactionUpdate, onComplete, applyLocally) {\r\n util.validateArgCount('Reference.transaction', 1, 3, arguments.length);\r\n validateWritablePath('Reference.transaction', this.path);\r\n util.validateCallback('Reference.transaction', 1, transactionUpdate, false);\r\n util.validateCallback('Reference.transaction', 2, onComplete, true);\r\n // NOTE: applyLocally is an internal-only option for now. We need to decide if we want to keep it and how\r\n // to expose it.\r\n validateBoolean('Reference.transaction', 3, applyLocally, true);\r\n if (this.getKey() === '.length' || this.getKey() === '.keys') {\r\n throw 'Reference.transaction failed: ' +\r\n this.getKey() +\r\n ' is a read-only object.';\r\n }\r\n if (applyLocally === undefined) {\r\n applyLocally = true;\r\n }\r\n var deferred = new util.Deferred();\r\n if (typeof onComplete === 'function') {\r\n deferred.promise.catch(function () { });\r\n }\r\n var promiseComplete = function (error, committed, snapshot) {\r\n if (error) {\r\n deferred.reject(error);\r\n }\r\n else {\r\n deferred.resolve(new TransactionResult(committed, snapshot));\r\n }\r\n if (typeof onComplete === 'function') {\r\n onComplete(error, committed, snapshot);\r\n }\r\n };\r\n this.repo.startTransaction(this.path, transactionUpdate, promiseComplete, applyLocally);\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {string|number|null} priority\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Promise}\r\n */\r\n Reference.prototype.setPriority = function (priority, onComplete) {\r\n util.validateArgCount('Reference.setPriority', 1, 2, arguments.length);\r\n validateWritablePath('Reference.setPriority', this.path);\r\n validatePriority('Reference.setPriority', 1, priority, false);\r\n util.validateCallback('Reference.setPriority', 2, onComplete, true);\r\n var deferred = new util.Deferred();\r\n this.repo.setWithPriority(this.path.child('.priority'), priority, null, deferred.wrapCallback(onComplete));\r\n return deferred.promise;\r\n };\r\n /**\r\n * @param {*=} value\r\n * @param {function(?Error)=} onComplete\r\n * @return {!Reference}\r\n */\r\n Reference.prototype.push = function (value, onComplete) {\r\n util.validateArgCount('Reference.push', 0, 2, arguments.length);\r\n validateWritablePath('Reference.push', this.path);\r\n validateFirebaseDataArg('Reference.push', 1, value, this.path, true);\r\n util.validateCallback('Reference.push', 2, onComplete, true);\r\n var now = this.repo.serverTime();\r\n var name = nextPushId(now);\r\n // push() returns a ThennableReference whose promise is fulfilled with a regular Reference.\r\n // We use child() to create handles to two different references. The first is turned into a\r\n // ThennableReference below by adding then() and catch() methods and is used as the\r\n // return value of push(). The second remains a regular Reference and is used as the fulfilled\r\n // value of the first ThennableReference.\r\n var thennablePushRef = this.child(name);\r\n var pushRef = this.child(name);\r\n var promise;\r\n if (value != null) {\r\n promise = thennablePushRef.set(value, onComplete).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 if (typeof onComplete === 'function') {\r\n promise.catch(function () { });\r\n }\r\n return thennablePushRef;\r\n };\r\n /**\r\n * @return {!OnDisconnect}\r\n */\r\n Reference.prototype.onDisconnect = function () {\r\n validateWritablePath('Reference.onDisconnect', this.path);\r\n return new OnDisconnect(this.repo, this.path);\r\n };\r\n Object.defineProperty(Reference.prototype, \"database\", {\r\n get: function () {\r\n return this.databaseProp();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"key\", {\r\n get: function () {\r\n return this.getKey();\r\n },\r\n enumerable: true,\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: true,\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: true,\r\n configurable: true\r\n });\r\n return Reference;\r\n}(Query));\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\nQuery.__referenceConstructor = Reference;\r\nSyncPoint.__referenceConstructor = Reference;\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * Node in a Tree.\r\n */\r\nvar TreeNode = /** @class */ (function () {\r\n function TreeNode() {\r\n // TODO: Consider making accessors that create children and value lazily or\r\n // separate Internal / Leaf 'types'.\r\n this.children = {};\r\n this.childCount = 0;\r\n this.value = null;\r\n }\r\n return TreeNode;\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 * @template T\r\n * @param {string=} name_ Optional name of the node.\r\n * @param {Tree=} parent_ Optional parent node.\r\n * @param {TreeNode=} 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_ = new TreeNode(); }\r\n this.name_ = name_;\r\n this.parent_ = parent_;\r\n this.node_ = node_;\r\n }\r\n /**\r\n * Returns a sub-Tree for the given path.\r\n *\r\n * @param {!(string|Path)} pathObj Path to look up.\r\n * @return {!Tree.<T>} Tree for path.\r\n */\r\n Tree.prototype.subTree = function (pathObj) {\r\n // TODO: Require pathObj to be Path?\r\n var path = pathObj instanceof Path ? pathObj : new Path(pathObj);\r\n var child = this, next = path.getFront();\r\n while (next !== null) {\r\n var childNode = util.safeGet(child.node_.children, next) || new TreeNode();\r\n child = new Tree(next, child, childNode);\r\n path = path.popFront();\r\n next = path.getFront();\r\n }\r\n return child;\r\n };\r\n /**\r\n * Returns the data associated with this tree node.\r\n *\r\n * @return {?T} The data or null if no data exists.\r\n */\r\n Tree.prototype.getValue = function () {\r\n return this.node_.value;\r\n };\r\n /**\r\n * Sets data to this tree node.\r\n *\r\n * @param {!T} value Value to set.\r\n */\r\n Tree.prototype.setValue = function (value) {\r\n util.assert(typeof value !== 'undefined', 'Cannot set value to undefined');\r\n this.node_.value = value;\r\n this.updateParents_();\r\n };\r\n /**\r\n * Clears the contents of the tree node (its value and all children).\r\n */\r\n Tree.prototype.clear = function () {\r\n this.node_.value = null;\r\n this.node_.children = {};\r\n this.node_.childCount = 0;\r\n this.updateParents_();\r\n };\r\n /**\r\n * @return {boolean} Whether the tree has any children.\r\n */\r\n Tree.prototype.hasChildren = function () {\r\n return this.node_.childCount > 0;\r\n };\r\n /**\r\n * @return {boolean} Whether the tree is empty (no value or children).\r\n */\r\n Tree.prototype.isEmpty = function () {\r\n return this.getValue() === null && !this.hasChildren();\r\n };\r\n /**\r\n * Calls action for each child of this tree node.\r\n *\r\n * @param {function(!Tree.<T>)} action Action to be called for each child.\r\n */\r\n Tree.prototype.forEachChild = function (action) {\r\n var _this = this;\r\n each(this.node_.children, function (child, childTree) {\r\n action(new Tree(child, _this, 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 {function(!Tree.<T>)} action Action to be called for each child.\r\n * @param {boolean=} includeSelf Whether to call action on this node as well. Defaults to\r\n * false.\r\n * @param {boolean=} childrenFirst Whether to call action on children before calling it on\r\n * parent.\r\n */\r\n Tree.prototype.forEachDescendant = function (action, includeSelf, childrenFirst) {\r\n if (includeSelf && !childrenFirst) {\r\n action(this);\r\n }\r\n this.forEachChild(function (child) {\r\n child.forEachDescendant(action, /*includeSelf=*/ true, childrenFirst);\r\n });\r\n if (includeSelf && childrenFirst) {\r\n action(this);\r\n }\r\n };\r\n /**\r\n * Calls action on each ancestor node.\r\n *\r\n * @param {function(!Tree.<T>)} action Action to be called on each parent; return\r\n * true to abort.\r\n * @param {boolean=} includeSelf Whether to call action on this node as well.\r\n * @return {boolean} true if the action callback returned true.\r\n */\r\n Tree.prototype.forEachAncestor = function (action, includeSelf) {\r\n var node = includeSelf ? this : this.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 * Does a depth-first traversal of this node's descendants. When a descendant with a value\r\n * is found, action is called on it and traversal does not continue inside the node.\r\n * Action is *not* called on this node.\r\n *\r\n * @param {function(!Tree.<T>)} action Action to be called for each child.\r\n */\r\n Tree.prototype.forEachImmediateDescendantWithValue = function (action) {\r\n this.forEachChild(function (child) {\r\n if (child.getValue() !== null) {\r\n action(child);\r\n }\r\n else {\r\n child.forEachImmediateDescendantWithValue(action);\r\n }\r\n });\r\n };\r\n /**\r\n * @return {!Path} The path of this tree node, as a Path.\r\n */\r\n Tree.prototype.path = function () {\r\n return new Path(this.parent_ === null\r\n ? this.name_\r\n : this.parent_.path() + '/' + this.name_);\r\n };\r\n /**\r\n * @return {string} The name of the tree node.\r\n */\r\n Tree.prototype.name = function () {\r\n return this.name_;\r\n };\r\n /**\r\n * @return {?Tree} The parent tree node, or null if this is the root of the tree.\r\n */\r\n Tree.prototype.parent = function () {\r\n return this.parent_;\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\n * @private\r\n */\r\n Tree.prototype.updateParents_ = function () {\r\n if (this.parent_ !== null) {\r\n this.parent_.updateChild_(this.name_, this);\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 {string} childName The name of the child to update.\r\n * @param {!Tree.<T>} child The child to update.\r\n * @private\r\n */\r\n Tree.prototype.updateChild_ = function (childName, child) {\r\n var childEmpty = child.isEmpty();\r\n var childExists = util.contains(this.node_.children, childName);\r\n if (childEmpty && childExists) {\r\n delete this.node_.children[childName];\r\n this.node_.childCount--;\r\n this.updateParents_();\r\n }\r\n else if (!childEmpty && !childExists) {\r\n this.node_.children[childName] = child.node_;\r\n this.node_.childCount++;\r\n this.updateParents_();\r\n }\r\n };\r\n return Tree;\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: This is pretty messy. Ideally, a lot of this would move into FirebaseData, or a transaction-specific\r\n// component used by FirebaseData, but it has ties to user callbacks (transaction update and onComplete) as well\r\n// as the realtime connection (to send transactions to the server). So that all needs to be decoupled first.\r\n// For now it's part of Repo, but in its own file.\r\n/**\r\n * @enum {number}\r\n */\r\nvar TransactionStatus;\r\n(function (TransactionStatus) {\r\n // We've run the transaction and updated transactionResultData_ with the result, but it isn't currently sent to the\r\n // server. A transaction will go from RUN -> SENT -> RUN if it comes back from the server as rejected due to\r\n // mismatched hash.\r\n TransactionStatus[TransactionStatus[\"RUN\"] = 0] = \"RUN\";\r\n // We've run the transaction and sent it to the server and it's currently outstanding (hasn't come back as accepted\r\n // or rejected yet).\r\n TransactionStatus[TransactionStatus[\"SENT\"] = 1] = \"SENT\";\r\n // Temporary state used to mark completed transactions (whether successful or aborted). The transaction will be\r\n // removed when we get a chance to prune completed ones.\r\n TransactionStatus[TransactionStatus[\"COMPLETED\"] = 2] = \"COMPLETED\";\r\n // Used when an already-sent transaction needs to be aborted (e.g. due to a conflicting set() call that was made).\r\n // If it comes back as unsuccessful, we'll abort it.\r\n TransactionStatus[TransactionStatus[\"SENT_NEEDS_ABORT\"] = 3] = \"SENT_NEEDS_ABORT\";\r\n // Temporary state used to mark transactions that need to be aborted.\r\n TransactionStatus[TransactionStatus[\"NEEDS_ABORT\"] = 4] = \"NEEDS_ABORT\";\r\n})(TransactionStatus || (TransactionStatus = {}));\r\n/**\r\n * If a transaction does not succeed after 25 retries, we abort it. Among other things this ensure that if there's\r\n * ever a bug causing a mismatch between client / server hashes for some data, we won't retry indefinitely.\r\n * @type {number}\r\n * @const\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.MAX_TRANSACTION_RETRIES_ = 25;\r\n/**\r\n * Setup the transaction data structures\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.transactionsInit_ = function () {\r\n /**\r\n * Stores queues of outstanding transactions for Firebase locations.\r\n *\r\n * @type {!Tree.<Array.<!Transaction>>}\r\n * @private\r\n */\r\n this.transactionQueueTree_ = new Tree();\r\n};\r\n/**\r\n * Creates a new transaction, adds it to the transactions we're tracking, and sends it to the server if possible.\r\n *\r\n * @param {!Path} path Path at which to do transaction.\r\n * @param {function(*):*} transactionUpdate Update callback.\r\n * @param {?function(?Error, boolean, ?DataSnapshot)} onComplete Completion callback.\r\n * @param {boolean} applyLocally Whether or not to make intermediate results visible\r\n */\r\nRepo.prototype.startTransaction = function (path, transactionUpdate, onComplete, applyLocally) {\r\n this.log_('transaction on ' + path);\r\n // Add a watch to make sure we get server updates.\r\n var valueCallback = function () { };\r\n var watchRef = new Reference(this, path);\r\n watchRef.on('value', valueCallback);\r\n var unwatcher = function () {\r\n watchRef.off('value', valueCallback);\r\n };\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 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 = this.getLatestState_(path);\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 // We just set the input snapshot, so this cast should be safe\r\n var snapshot = new DataSnapshot(transaction.currentInputSnapshot, new Reference(this, transaction.path), PRIORITY_INDEX);\r\n transaction.onComplete(null, false, snapshot);\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 = TransactionStatus.RUN;\r\n var queueNode = this.transactionQueueTree_.subTree(path);\r\n var nodeQueue = queueNode.getValue() || [];\r\n nodeQueue.push(transaction);\r\n queueNode.setValue(nodeQueue);\r\n // Update visibleData and raise events\r\n // Note: We intentionally raise events after updating all of our transaction state, since the user could\r\n // start new transactions from the event callbacks.\r\n var priorityForNode = void 0;\r\n if (typeof newVal === 'object' &&\r\n newVal !== null &&\r\n util.contains(newVal, '.priority')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n priorityForNode = util.safeGet(newVal, '.priority');\r\n util.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 = this.serverSyncTree_.calcCompleteEventCache(path) ||\r\n ChildrenNode.EMPTY_NODE;\r\n priorityForNode = currentNode.getPriority().val();\r\n }\r\n priorityForNode /** @type {null|number|string} */ = priorityForNode;\r\n var serverValues = this.generateServerValues();\r\n var newNodeUnresolved = nodeFromJSON$1(newVal, priorityForNode);\r\n var newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\r\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\r\n transaction.currentOutputSnapshotResolved = newNode;\r\n transaction.currentWriteId = this.getNextWriteId_();\r\n var events = this.serverSyncTree_.applyUserOverwrite(path, newNode, transaction.currentWriteId, transaction.applyLocally);\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n this.sendReadyTransactions_();\r\n }\r\n};\r\n/**\r\n * @param {!Path} path\r\n * @param {Array.<number>=} excludeSets A specific set to exclude\r\n * @return {Node}\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.getLatestState_ = function (path, excludeSets) {\r\n return (this.serverSyncTree_.calcCompleteEventCache(path, excludeSets) ||\r\n ChildrenNode.EMPTY_NODE);\r\n};\r\n/**\r\n * Sends any already-run transactions that aren't waiting for outstanding transactions to\r\n * complete.\r\n *\r\n * Externally it's called with no arguments, but it calls itself recursively with a particular\r\n * transactionQueueTree node to recurse through the tree.\r\n *\r\n * @param {Tree.<Array.<Transaction>>=} node transactionQueueTree node to start at.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.sendReadyTransactions_ = function (node) {\r\n var _this = this;\r\n if (node === void 0) { node = this.transactionQueueTree_; }\r\n // Before recursing, make sure any completed transactions are removed.\r\n if (!node) {\r\n this.pruneCompletedTransactionsBelowNode_(node);\r\n }\r\n if (node.getValue() !== null) {\r\n var queue = this.buildTransactionQueue_(node);\r\n util.assert(queue.length > 0, 'Sending zero length transaction queue');\r\n var allRun = queue.every(function (transaction) { return transaction.status === TransactionStatus.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 this.sendTransactionQueue_(node.path(), queue);\r\n }\r\n }\r\n else if (node.hasChildren()) {\r\n node.forEachChild(function (childNode) {\r\n _this.sendReadyTransactions_(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 the result (success or failure).\r\n *\r\n * @param {!Path} path The location of the queue.\r\n * @param {!Array.<Transaction>} queue Queue of transactions under the specified location.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.sendTransactionQueue_ = function (path, queue) {\r\n var _this = this;\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 = this.getLatestState_(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 util.assert(txn.status === TransactionStatus.RUN, 'tryToSendTransactionQueue_: items in queue should all be run.');\r\n txn.status = TransactionStatus.SENT;\r\n txn.retryCount++;\r\n var relativePath = Path.relativePath(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 this.server_.put(pathToSend.toString(), dataToSend, function (status) {\r\n _this.log_('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 transaction state, since\r\n // the callback could trigger more transactions or sets.\r\n var callbacks = [];\r\n for (var i = 0; i < queue.length; i++) {\r\n queue[i].status = TransactionStatus.COMPLETED;\r\n events = events.concat(_this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId));\r\n if (queue[i].onComplete) {\r\n // We never unset the output snapshot, and given that this transaction is complete, it should be set\r\n var node = queue[i].currentOutputSnapshotResolved;\r\n var ref = new Reference(_this, queue[i].path);\r\n var snapshot = new DataSnapshot(node, ref, PRIORITY_INDEX);\r\n callbacks.push(queue[i].onComplete.bind(null, null, true, snapshot));\r\n }\r\n queue[i].unwatcher();\r\n }\r\n // Now remove the completed transactions.\r\n _this.pruneCompletedTransactionsBelowNode_(_this.transactionQueueTree_.subTree(path));\r\n // There may be pending transactions that we can now send.\r\n _this.sendReadyTransactions_();\r\n _this.eventQueue_.raiseEventsForChangedPath(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 === TransactionStatus.SENT_NEEDS_ABORT) {\r\n queue[i].status = TransactionStatus.NEEDS_ABORT;\r\n }\r\n else {\r\n queue[i].status = TransactionStatus.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 = TransactionStatus.NEEDS_ABORT;\r\n queue[i].abortReason = status;\r\n }\r\n }\r\n _this.rerunTransactions_(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 is the path at which events need to\r\n * be raised for.\r\n *\r\n * @param {!Path} changedPath The path in mergedData that changed.\r\n * @return {!Path} The rootmost path that was affected by rerunning transactions.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.rerunTransactions_ = function (changedPath) {\r\n var rootMostTransactionNode = this.getAncestorTransactionNode_(changedPath);\r\n var path = rootMostTransactionNode.path();\r\n var queue = this.buildTransactionQueue_(rootMostTransactionNode);\r\n this.rerunTransactionQueue_(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 transactions and whatnot).\r\n *\r\n * @param {Array.<Transaction>} queue The queue of transactions to run.\r\n * @param {!Path} path The path the queue is for.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.rerunTransactionQueue_ = function (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 transaction state, since\r\n // the callback could trigger more transactions or 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 === TransactionStatus.RUN;\r\n });\r\n var setsToIgnore = txnsToRerun.map(function (q) {\r\n return q.currentWriteId;\r\n });\r\n for (var i = 0; i < queue.length; i++) {\r\n var transaction = queue[i];\r\n var relativePath = Path.relativePath(path, transaction.path);\r\n var abortTransaction = false, abortReason = void 0;\r\n util.assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\r\n if (transaction.status === TransactionStatus.NEEDS_ABORT) {\r\n abortTransaction = true;\r\n abortReason = transaction.abortReason;\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n else if (transaction.status === TransactionStatus.RUN) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (transaction.retryCount >= Repo.MAX_TRANSACTION_RETRIES_) {\r\n abortTransaction = true;\r\n abortReason = 'maxretry';\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n else {\r\n // This code reruns a transaction\r\n var currentNode = this.getLatestState_(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$1(newData);\r\n var hasExplicitPriority = typeof newData === 'object' &&\r\n newData != null &&\r\n util.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 = this.generateServerValues();\r\n var newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\r\n transaction.currentOutputSnapshotRaw = newDataNode;\r\n transaction.currentOutputSnapshotResolved = newNodeResolved;\r\n transaction.currentWriteId = this.getNextWriteId_();\r\n // Mutates setsToIgnore in place\r\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\r\n events = events.concat(this.serverSyncTree_.applyUserOverwrite(transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(oldWriteId, true));\r\n }\r\n else {\r\n abortTransaction = true;\r\n abortReason = 'nodata';\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(transaction.currentWriteId, true));\r\n }\r\n }\r\n }\r\n this.eventQueue_.raiseEventsForChangedPath(path, events);\r\n events = [];\r\n if (abortTransaction) {\r\n // Abort.\r\n queue[i].status = TransactionStatus.COMPLETED;\r\n // Removing a listener can trigger pruning which can muck with mergedData/visibleData (as it prunes data).\r\n // So defer the unwatcher 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 var ref = new Reference(this, queue[i].path);\r\n // We set this field immediately, so it's safe to cast to an actual snapshot\r\n var lastInput /** @type {!Node} */ = queue[i].currentInputSnapshot;\r\n var snapshot = new DataSnapshot(lastInput, ref, PRIORITY_INDEX);\r\n callbacks.push(queue[i].onComplete.bind(null, null, false, snapshot));\r\n }\r\n else {\r\n callbacks.push(queue[i].onComplete.bind(null, new Error(abortReason), false, null));\r\n }\r\n }\r\n }\r\n }\r\n // Clean up completed transactions.\r\n this.pruneCompletedTransactionsBelowNode_(this.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 this.sendReadyTransactions_();\r\n};\r\n/**\r\n * Returns the rootmost ancestor node of the specified path that has a pending transaction on it, or just returns\r\n * the node for the given path if there are no pending transactions on any ancestor.\r\n *\r\n * @param {!Path} path The location to start at.\r\n * @return {!Tree.<Array.<!Transaction>>} The rootmost node with a transaction.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.getAncestorTransactionNode_ = function (path) {\r\n var front;\r\n // Start at the root and walk deeper into the tree towards path until we find a node with pending transactions.\r\n var transactionNode = this.transactionQueueTree_;\r\n front = path.getFront();\r\n while (front !== null && transactionNode.getValue() === null) {\r\n transactionNode = transactionNode.subTree(front);\r\n path = path.popFront();\r\n front = path.getFront();\r\n }\r\n return transactionNode;\r\n};\r\n/**\r\n * Builds the queue of all transactions at or below the specified transactionNode.\r\n *\r\n * @param {!Tree.<Array.<Transaction>>} transactionNode\r\n * @return {Array.<Transaction>} The generated queue.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.buildTransactionQueue_ = function (transactionNode) {\r\n // Walk any child transaction queues and aggregate them into a single queue.\r\n var transactionQueue = [];\r\n this.aggregateTransactionQueuesForNode_(transactionNode, transactionQueue);\r\n // Sort them by the order the transactions were created.\r\n transactionQueue.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n return transactionQueue;\r\n};\r\n/**\r\n * @param {!Tree.<Array.<Transaction>>} node\r\n * @param {Array.<Transaction>} queue\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.aggregateTransactionQueuesForNode_ = function (node, queue) {\r\n var _this = this;\r\n var nodeQueue = node.getValue();\r\n if (nodeQueue !== null) {\r\n for (var i = 0; i < nodeQueue.length; i++) {\r\n queue.push(nodeQueue[i]);\r\n }\r\n }\r\n node.forEachChild(function (child) {\r\n _this.aggregateTransactionQueuesForNode_(child, queue);\r\n });\r\n};\r\n/**\r\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\r\n *\r\n * @param {!Tree.<Array.<!Transaction>>} node\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.pruneCompletedTransactionsBelowNode_ = function (node) {\r\n var _this = this;\r\n var queue = node.getValue();\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 !== TransactionStatus.COMPLETED) {\r\n queue[to] = queue[from];\r\n to++;\r\n }\r\n }\r\n queue.length = to;\r\n node.setValue(queue.length > 0 ? queue : null);\r\n }\r\n node.forEachChild(function (childNode) {\r\n _this.pruneCompletedTransactionsBelowNode_(childNode);\r\n });\r\n};\r\n/**\r\n * Aborts all transactions on ancestors or descendants of the specified path. Called when doing a set() or update()\r\n * since we consider them incompatible with transactions.\r\n *\r\n * @param {!Path} path Path for which we want to abort related transactions.\r\n * @return {!Path}\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.abortTransactions_ = function (path) {\r\n var _this = this;\r\n var affectedPath = this.getAncestorTransactionNode_(path).path();\r\n var transactionNode = this.transactionQueueTree_.subTree(path);\r\n transactionNode.forEachAncestor(function (node) {\r\n _this.abortTransactionsOnNode_(node);\r\n });\r\n this.abortTransactionsOnNode_(transactionNode);\r\n transactionNode.forEachDescendant(function (node) {\r\n _this.abortTransactionsOnNode_(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 {!Tree.<Array.<Transaction>>} node Node to abort transactions for.\r\n * @private\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nRepo.prototype.abortTransactionsOnNode_ = function (node) {\r\n var queue = node.getValue();\r\n if (queue !== null) {\r\n // Queue up the callbacks and fire them after cleaning up all of our transaction state, since\r\n // the callback could trigger more transactions or sets.\r\n var callbacks = [];\r\n // Go through queue. Any already-sent transactions must be marked for abort, while the unsent ones\r\n // 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 === TransactionStatus.SENT_NEEDS_ABORT) ;\r\n else if (queue[i].status === TransactionStatus.SENT) {\r\n util.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 = TransactionStatus.SENT_NEEDS_ABORT;\r\n queue[i].abortReason = 'set';\r\n }\r\n else {\r\n util.assert(queue[i].status === TransactionStatus.RUN, 'Unexpected transaction status in abort');\r\n // We can abort it immediately.\r\n queue[i].unwatcher();\r\n events = events.concat(this.serverSyncTree_.ackUserWrite(queue[i].currentWriteId, true));\r\n if (queue[i].onComplete) {\r\n var snapshot = null;\r\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, snapshot));\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 node.setValue(null);\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 this.eventQueue_.raiseEventsForChangedPath(node.path(), 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 Inc.\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/** @const {string} */\r\nvar DATABASE_URL_OPTION = 'databaseURL';\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\nvar _staticInstance;\r\n/**\r\n * Creates and caches Repo instances.\r\n */\r\nvar RepoManager = /** @class */ (function () {\r\n function RepoManager() {\r\n /**\r\n * @private {!Object.<string, Object<string, !fb.core.Repo>>}\r\n */\r\n this.repos_ = {};\r\n /**\r\n * If true, new Repos will be created to use ReadonlyRestClient (for testing purposes).\r\n * @private {boolean}\r\n */\r\n this.useRestClient_ = false;\r\n }\r\n RepoManager.getInstance = function () {\r\n if (!_staticInstance) {\r\n _staticInstance = new RepoManager();\r\n }\r\n return _staticInstance;\r\n };\r\n // TODO(koss): Remove these functions unless used in tests?\r\n RepoManager.prototype.interrupt = function () {\r\n var e_1, _a, e_2, _b;\r\n try {\r\n for (var _c = tslib.__values(Object.keys(this.repos_)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var appName = _d.value;\r\n try {\r\n for (var _e = (e_2 = void 0, tslib.__values(Object.keys(this.repos_[appName]))), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var dbUrl = _f.value;\r\n this.repos_[appName][dbUrl].interrupt();\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 };\r\n RepoManager.prototype.resume = function () {\r\n var e_3, _a, e_4, _b;\r\n try {\r\n for (var _c = tslib.__values(Object.keys(this.repos_)), _d = _c.next(); !_d.done; _d = _c.next()) {\r\n var appName = _d.value;\r\n try {\r\n for (var _e = (e_4 = void 0, tslib.__values(Object.keys(this.repos_[appName]))), _f = _e.next(); !_f.done; _f = _e.next()) {\r\n var dbUrl = _f.value;\r\n this.repos_[appName][dbUrl].resume();\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 (_f && !_f.done && (_b = _e.return)) _b.call(_e);\r\n }\r\n finally { if (e_4) throw e_4.error; }\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 (_d && !_d.done && (_a = _c.return)) _a.call(_c);\r\n }\r\n finally { if (e_3) throw e_3.error; }\r\n }\r\n };\r\n /**\r\n * This function should only ever be called to CREATE a new database instance.\r\n *\r\n * @param {!FirebaseApp} app\r\n * @return {!Database}\r\n */\r\n RepoManager.prototype.databaseFromApp = function (app, authProvider, url) {\r\n var dbUrl = url || app.options[DATABASE_URL_OPTION];\r\n if (dbUrl === undefined) {\r\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\r\n DATABASE_URL_OPTION +\r\n ' option when calling firebase.initializeApp().');\r\n }\r\n var parsedUrl = parseRepoInfo(dbUrl);\r\n var repoInfo = parsedUrl.repoInfo;\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 dbUrl = \"http://\" + dbEmulatorHost + \"?ns=\" + repoInfo.namespace;\r\n parsedUrl = parseRepoInfo(dbUrl);\r\n repoInfo = parsedUrl.repoInfo;\r\n }\r\n validateUrl('Invalid Firebase Database URL', 1, parsedUrl);\r\n if (!parsedUrl.path.isEmpty()) {\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 = this.createRepo(repoInfo, app, authProvider);\r\n return repo.database;\r\n };\r\n /**\r\n * Remove the repo and make sure it is disconnected.\r\n *\r\n * @param {!Repo} repo\r\n */\r\n RepoManager.prototype.deleteRepo = function (repo) {\r\n var appRepos = util.safeGet(this.repos_, repo.app.name);\r\n // This should never happen...\r\n if (!appRepos || util.safeGet(appRepos, repo.repoInfo_.toURLString()) !== repo) {\r\n fatal(\"Database \" + repo.app.name + \"(\" + repo.repoInfo_ + \") has already been deleted.\");\r\n }\r\n repo.interrupt();\r\n delete appRepos[repo.repoInfo_.toURLString()];\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} repoInfo The metadata about the Repo\r\n * @param {!FirebaseApp} app\r\n * @return {!Repo} The Repo object for the specified server / repoName.\r\n */\r\n RepoManager.prototype.createRepo = function (repoInfo, app, authProvider) {\r\n var appRepos = util.safeGet(this.repos_, app.name);\r\n if (!appRepos) {\r\n appRepos = {};\r\n this.repos_[app.name] = appRepos;\r\n }\r\n var repo = util.safeGet(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, this.useRestClient_, app, authProvider);\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 * @param {boolean} forceRestClient\r\n */\r\n RepoManager.prototype.forceRestClient = function (forceRestClient) {\r\n this.useRestClient_ = forceRestClient;\r\n };\r\n return RepoManager;\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 * Class representing a firebase database.\r\n * @implements {FirebaseService}\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 * @param {!Repo} repo_\r\n */\r\n function Database(repo_) {\r\n this.repo_ = repo_;\r\n if (!(repo_ instanceof Repo)) {\r\n fatal(\"Don't call new Database() directly - please use firebase.database().\");\r\n }\r\n /** @type {Reference} */\r\n this.root_ = new Reference(repo_, Path.Empty);\r\n this.INTERNAL = new DatabaseInternals(this);\r\n }\r\n Object.defineProperty(Database.prototype, \"app\", {\r\n get: function () {\r\n return this.repo_.app;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Database.prototype.ref = function (path) {\r\n this.checkDeleted_('ref');\r\n util.validateArgCount('database.ref', 0, 1, arguments.length);\r\n if (path instanceof Reference) {\r\n return this.refFromURL(path.toString());\r\n }\r\n return path !== undefined ? this.root_.child(path) : this.root_;\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 * @param {string} url\r\n * @return {!Reference} Firebase reference.\r\n */\r\n Database.prototype.refFromURL = function (url) {\r\n /** @const {string} */\r\n var apiName = 'database.refFromURL';\r\n this.checkDeleted_(apiName);\r\n util.validateArgCount(apiName, 1, 1, arguments.length);\r\n var parsedURL = parseRepoInfo(url);\r\n validateUrl(apiName, 1, parsedURL);\r\n var repoInfo = parsedURL.repoInfo;\r\n if (repoInfo.host !== this.repo_.repoInfo_.host) {\r\n fatal(apiName +\r\n ': Host name does not match the current database: ' +\r\n '(found ' +\r\n repoInfo.host +\r\n ' but expected ' +\r\n this.repo_.repoInfo_.host +\r\n ')');\r\n }\r\n return this.ref(parsedURL.path.toString());\r\n };\r\n /**\r\n * @param {string} apiName\r\n */\r\n Database.prototype.checkDeleted_ = function (apiName) {\r\n if (this.repo_ === null) {\r\n fatal('Cannot call ' + apiName + ' on a deleted database.');\r\n }\r\n };\r\n // Make individual repo go offline.\r\n Database.prototype.goOffline = function () {\r\n util.validateArgCount('database.goOffline', 0, 0, arguments.length);\r\n this.checkDeleted_('goOffline');\r\n this.repo_.interrupt();\r\n };\r\n Database.prototype.goOnline = function () {\r\n util.validateArgCount('database.goOnline', 0, 0, arguments.length);\r\n this.checkDeleted_('goOnline');\r\n this.repo_.resume();\r\n };\r\n Database.ServerValue = {\r\n TIMESTAMP: {\r\n '.sv': 'timestamp'\r\n },\r\n increment: function (delta) {\r\n return {\r\n '.sv': {\r\n 'increment': delta\r\n }\r\n };\r\n }\r\n };\r\n return Database;\r\n}());\r\nvar DatabaseInternals = /** @class */ (function () {\r\n /** @param {!Database} database */\r\n function DatabaseInternals(database) {\r\n this.database = database;\r\n }\r\n /** @return {Promise<void>} */\r\n DatabaseInternals.prototype.delete = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n return tslib.__generator(this, function (_a) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.database.checkDeleted_('delete');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n RepoManager.getInstance().deleteRepo(this.database.repo_);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.database.repo_ = null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.database.root_ = null;\r\n this.database.INTERNAL = null;\r\n this.database = null;\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n return DatabaseInternals;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\n * @const\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ref.repo.persistentConnection_.securityDebugCallback_ = callback;\r\n};\r\nvar stats = function (ref, showDelta) {\r\n ref.repo.stats(showDelta);\r\n};\r\nvar statsIncrementCounter = function (ref, metric) {\r\n ref.repo.statsIncrementCounter(metric);\r\n};\r\nvar dataUpdateCount = function (ref) {\r\n return ref.repo.dataUpdateCount;\r\n};\r\nvar interceptServerData = function (ref, callback) {\r\n return ref.repo.interceptServerData_(callback);\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});\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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/**\r\n * @param {!string} pathString\r\n * @param {function(*)} onComplete\r\n */\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/**\r\n * @param {*} data\r\n * @param {function(*)} onEcho\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\n/**\r\n * @param {function(): string} newHash\r\n * @return {function()}\r\n */\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\n/**\r\n * @type {function(new:RepoInfo, !string, boolean, !string, boolean): undefined}\r\n */\r\nvar ConnectionTarget = RepoInfo;\r\n/**\r\n * @param {!Query} query\r\n * @return {!string}\r\n */\r\nvar queryIdentifier = function (query) {\r\n return query.queryIdentifier();\r\n};\r\n/**\r\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\r\n *\r\n * @param {boolean} forceRestClient\r\n */\r\nvar forceRestClient = function (forceRestClient) {\r\n RepoManager.getInstance().forceRestClient(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\nvar name = \"@firebase/database\";\nvar version = \"0.6.1\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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.Component('database', function (container, url) {\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 return RepoManager.getInstance().databaseFromApp(app, authProvider, url);\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 (util.isNodeSdk()) {\r\n module.exports = namespace;\r\n }\r\n}\r\nregisterDatabase(firebase);\n\nexports.DataSnapshot = DataSnapshot;\nexports.Database = Database;\nexports.OnDisconnect = OnDisconnect;\nexports.Query = Query;\nexports.Reference = Reference;\nexports.ServerValue = ServerValue;\nexports.enableLogging = enableLogging;\nexports.registerDatabase = registerDatabase;\n//# sourceMappingURL=index.cjs.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n});\n\nvar t, e = require(\"tslib\"), n = (t = require(\"@firebase/app\")) && \"object\" == typeof t && \"default\" in t ? t.default : t, r = require(\"@firebase/logger\"), i = require(\"@firebase/util\"), o = require(\"@firebase/component\"), s = require(\"@firebase/webchannel-wrapper\"), u = n.SDK_VERSION, a = /** @class */ function() {\n function t(t) {\n this.uid = t;\n }\n return t.prototype.t = 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.s = function() {\n return this.t() ? \"uid:\" + this.uid : \"anonymous-user\";\n }, t.prototype.isEqual = function(t) {\n return t.uid === this.uid;\n }, t;\n}();\n\n/** A user with a null UID. */ a.UNAUTHENTICATED = new a(null), \n// TODO(mikelehen): Look into getting a proper uid-equivalent for\n// non-FirebaseAuth providers.\na.i = new a(\"google-credentials-uid\"), a.h = new a(\"first-party-uid\");\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 h = {\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}, c = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this, n) || this).code = e, r.message = 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 e.__extends(n, t), n;\n}(Error), f = function(t, e) {\n this.user = e, this.type = \"OAuth\", this.o = {}, \n // Set the headers using Object Literal notation to avoid minification\n this.o.Authorization = \"Bearer \" + t;\n}, l = /** @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.u = null;\n }\n return t.prototype.getToken = function() {\n return Promise.resolve(null);\n }, t.prototype._ = function() {}, t.prototype.l = function(t) {\n this.u = t, \n // Fire with initial user.\n t(a.UNAUTHENTICATED);\n }, t.prototype.T = function() {\n this.u = null;\n }, t;\n}(), p = /** @class */ function() {\n function t(t) {\n var e = this;\n /**\n * The auth token listener registered with FirebaseApp, retained here so we\n * can unregister it.\n */ this.I = null, \n /** Tracks the current User. */\n this.currentUser = a.UNAUTHENTICATED, this.R = !1, \n /**\n * Counter used to detect if the token changed while a getToken request was\n * outstanding.\n */\n this.A = 0, \n /** The listener registered with setChangeListener(). */\n this.u = null, this.forceRefresh = !1, this.I = function() {\n e.A++, e.currentUser = e.m(), e.R = !0, e.u && e.u(e.currentUser);\n }, this.A = 0, this.auth = t.getImmediate({\n optional: !0\n }), this.auth ? this.auth.addAuthTokenListener(this.I) : (\n // if auth is not available, invoke tokenListener once with null token\n this.I(null), t.get().then((function(t) {\n e.auth = t, e.I && \n // tokenListener can be removed by removeChangeListener()\n e.auth.addAuthTokenListener(e.I);\n }), (function() {})));\n }\n return t.prototype.getToken = function() {\n var t = this, e = this.A, 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 if (t.A !== e) throw new c(h.ABORTED, \"getToken aborted due to token change.\");\n return n ? (_e(\"string\" == typeof n.accessToken), new f(n.accessToken, t.currentUser)) : null;\n })) : Promise.resolve(null);\n }, t.prototype._ = function() {\n this.forceRefresh = !0;\n }, t.prototype.l = function(t) {\n this.u = t, \n // Fire the initial event\n this.R && t(this.currentUser);\n }, t.prototype.T = function() {\n this.auth && this.auth.removeAuthTokenListener(this.I), this.I = null, this.u = null;\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.m = function() {\n var t = this.auth && this.auth.getUid();\n return _e(null === t || \"string\" == typeof t), new a(t);\n }, t;\n}(), d = /** @class */ function() {\n function t(t, e) {\n this.P = t, this.V = e, this.type = \"FirstParty\", this.user = a.h;\n }\n return Object.defineProperty(t.prototype, \"o\", {\n get: function() {\n var t = {\n \"X-Goog-AuthUser\": this.V\n }, e = this.P.auth.g([]);\n return e && (t.Authorization = e), t;\n },\n enumerable: !0,\n configurable: !0\n }), t;\n}(), y = /** @class */ function() {\n function t(t, e) {\n this.P = t, this.V = e;\n }\n return t.prototype.getToken = function() {\n return Promise.resolve(new d(this.P, this.V));\n }, t.prototype.l = function(t) {\n // Fire with initial uid.\n t(a.h);\n }, t.prototype.T = function() {}, t.prototype._ = function() {}, t;\n}(), v = /** @class */ function() {\n function t(t, e) {\n if (this.seconds = t, this.nanoseconds = e, e < 0) throw new c(h.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (e >= 1e9) throw new c(h.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (t < -62135596800) throw new c(h.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n // This will break in the year 10,000.\n if (t >= 253402300800) throw new c(h.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n }\n return t.now = function() {\n return t.fromMillis(Date.now());\n }, t.fromDate = function(e) {\n return t.fromMillis(e.getTime());\n }, t.fromMillis = function(e) {\n var n = Math.floor(e / 1e3);\n return new t(n, 1e6 * (e - 1e3 * n));\n }, t.prototype.toDate = function() {\n return new Date(this.toMillis());\n }, t.prototype.toMillis = function() {\n return 1e3 * this.seconds + this.nanoseconds / 1e6;\n }, t.prototype.p = function(t) {\n return this.seconds === t.seconds ? Ie(this.nanoseconds, t.nanoseconds) : Ie(this.seconds, t.seconds);\n }, t.prototype.isEqual = function(t) {\n return t.seconds === this.seconds && t.nanoseconds === this.nanoseconds;\n }, t.prototype.toString = function() {\n return \"Timestamp(seconds=\" + this.seconds + \", nanoseconds=\" + this.nanoseconds + \")\";\n }, t.prototype.valueOf = function() {\n // This method returns a string of the form <seconds>.<nanoseconds> where <seconds> is\n // translated to have a non-negative value and both <seconds> and <nanoseconds> are left-padded\n // with zeroes to be a consistent length. Strings with this format then have a lexiographical\n // ordering that matches the expected ordering. The <seconds> translation is done to avoid\n // having a leading negative sign (i.e. a leading '-' character) in its string representation,\n // 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 'seconds' values.\n return String(t).padStart(12, \"0\") + \".\" + String(this.nanoseconds).padStart(9, \"0\");\n }, t;\n}(), m = /** @class */ function() {\n function t(t) {\n this.timestamp = t;\n }\n return t.v = function(e) {\n return new t(e);\n }, t.S = function() {\n return t.MIN;\n }, t.prototype.D = function(t) {\n return this.timestamp.p(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.C = 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.F = function() {\n return this.timestamp;\n }, t;\n}();\n\n/**\n * An error class used for Firestore-generated errors. Ideally we should be\n * using FirebaseError, but integrating with it is overly arduous at the moment,\n * so we define our own compatible error class (with a `name` of 'FirebaseError'\n * and compatible `code` and `message` fields.)\n */ m.MIN = new m(new v(0, 0));\n\n/**\n * Path represents an ordered sequence of string segments.\n */\nvar g = /** @class */ function() {\n function t(t, e, n) {\n void 0 === e ? e = 0 : e > t.length && Ee(), void 0 === n ? n = t.length - e : n > t.length - e && Ee(), \n this.segments = t, this.offset = e, this.N = n;\n }\n return Object.defineProperty(t.prototype, \"length\", {\n get: function() {\n return this.N;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.isEqual = function(e) {\n return 0 === t.k(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.$(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.M = function(t) {\n return t = void 0 === t ? 1 : t, this.$(this.segments, this.offset + t, this.length - t);\n }, t.prototype.L = function() {\n return this.$(this.segments, this.offset, this.length - 1);\n }, t.prototype.O = function() {\n return this.segments[this.offset];\n }, t.prototype.B = function() {\n return this.get(this.length - 1);\n }, t.prototype.get = function(t) {\n return this.segments[this.offset + t];\n }, t.prototype.q = function() {\n return 0 === this.length;\n }, t.prototype.U = 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.W = 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.j = function() {\n return this.segments.slice(this.offset, this.limit());\n }, t.k = 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}(), w = /** @class */ function(t) {\n function n() {\n return null !== t && t.apply(this, arguments) || this;\n }\n return e.__extends(n, t), n.prototype.$ = function(t, e, r) {\n return new n(t, e, r);\n }, n.prototype.K = 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.j().join(\"/\");\n }, n.prototype.toString = function() {\n return this.K();\n }, \n /**\n * Creates a resource path from the given slash-delimited string.\n */\n n.G = function(t) {\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 if (t.indexOf(\"//\") >= 0) throw new c(h.INVALID_ARGUMENT, \"Invalid path (\" + t + \"). Paths must not contain // in them.\");\n // We may still have an empty segment at the beginning or end if they had a\n // leading or trailing slash (which we allow).\n return new n(t.split(\"/\").filter((function(t) {\n return t.length > 0;\n })));\n }, n;\n}(g);\n\n/**\n * A slash-separated path for navigating resources (documents and collections)\n * within Firestore.\n */ w.H = new w([]);\n\nvar E = /^[_a-zA-Z][_a-zA-Z0-9]*$/, _ = /** @class */ function(t) {\n function n() {\n return null !== t && t.apply(this, arguments) || this;\n }\n return e.__extends(n, t), n.prototype.$ = 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.Y = function(t) {\n return E.test(t);\n }, n.prototype.K = function() {\n return this.j().map((function(t) {\n return t = t.replace(\"\\\\\", \"\\\\\\\\\").replace(\"`\", \"\\\\`\"), n.Y(t) || (t = \"`\" + t + \"`\"), \n t;\n })).join(\".\");\n }, n.prototype.toString = function() {\n return this.K();\n }, \n /**\n * Returns true if this field references the key of a document.\n */\n n.prototype.J = function() {\n return 1 === this.length && \"__name__\" === this.get(0);\n }, \n /**\n * The field designating the key of a document.\n */\n n.X = 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.Z = function(t) {\n for (var e = [], r = \"\", i = 0, o = function() {\n if (0 === r.length) throw new c(h.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 c(h.INVALID_ARGUMENT, \"Path has trailing escape character: \" + t);\n var a = t[i + 1];\n if (\"\\\\\" !== a && \".\" !== a && \"`\" !== a) throw new c(h.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 c(h.INVALID_ARGUMENT, \"Unterminated ` in path: \" + t);\n return new n(e);\n }, n;\n}(g);\n\n/** A dot-separated path for navigating sub-objects within a document. */ _.H = new _([]);\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 b = /** @class */ function() {\n function t(t) {\n this.path = t;\n }\n return t.tt = function(e) {\n return new t(w.G(e).M(5));\n }, \n /** Returns true if the document is in the specified collectionId. */ t.prototype.et = 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 === w.k(this.path, t.path);\n }, t.prototype.toString = function() {\n return this.path.toString();\n }, t.k = function(t, e) {\n return w.k(t.path, e.path);\n }, t.st = 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 * @return A new instance of DocumentKey\n */\n t.it = function(e) {\n return new t(new w(e.slice()));\n }, t;\n}();\n\nb.EMPTY = new b(new w([]));\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 I = /** @class */ function() {\n function t(t, e) {\n this.k = t, this.root = e || N.EMPTY;\n }\n // Returns a copy of the map, with the specified key/value added or replaced.\n return t.prototype.nt = function(e, n) {\n return new t(this.k, this.root.nt(e, n, this.k).rt(null, null, N.ht, 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.k, this.root.remove(e, this.k).rt(null, null, N.ht, 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.q(); ) {\n var n = this.k(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.q(); ) {\n var r = this.k(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.q = function() {\n return this.root.q();\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: !0,\n configurable: !0\n }), \n // Returns the minimum key in the map.\n t.prototype.ot = function() {\n return this.root.ot();\n }, \n // Returns the maximum key in the map.\n t.prototype.at = function() {\n return this.root.at();\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.ut = function(t) {\n return this.root.ut(t);\n }, t.prototype.forEach = function(t) {\n this.ut((function(e, n) {\n return t(e, n), !1;\n }));\n }, t.prototype.toString = function() {\n var t = [];\n return this.ut((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.ct = function(t) {\n return this.root.ct(t);\n }, \n // Returns an iterator over the SortedMap.\n t.prototype._t = function() {\n return new T(this.root, null, this.k, !1);\n }, t.prototype.lt = function(t) {\n return new T(this.root, t, this.k, !1);\n }, t.prototype.dt = function() {\n return new T(this.root, null, this.k, !0);\n }, t.prototype.ft = function(t) {\n return new T(this.root, t, this.k, !0);\n }, t;\n}(), T = /** @class */ function() {\n function t(t, e, n, r) {\n this.Tt = r, this.Et = [];\n for (var i = 1; !t.q(); ) 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.Tt ? 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.Et.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.Et.push(t), t = this.Tt ? t.right : t.left;\n }\n }\n return t.prototype.It = function() {\n var t = this.Et.pop(), e = {\n key: t.key,\n value: t.value\n };\n if (this.Tt) for (t = t.left; !t.q(); ) this.Et.push(t), t = t.right; else for (t = t.right; !t.q(); ) this.Et.push(t), \n t = t.left;\n return e;\n }, t.prototype.wt = function() {\n return this.Et.length > 0;\n }, t.prototype.Rt = function() {\n if (0 === this.Et.length) return null;\n var t = this.Et[this.Et.length - 1];\n return {\n key: t.key,\n value: t.value\n };\n }, t;\n}(), N = /** @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.rt = 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.q = 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.ut = function(t) {\n return this.left.ut(t) || t(this.key, this.value) || this.right.ut(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.ct = function(t) {\n return this.right.ct(t) || t(this.key, this.value) || this.left.ct(t);\n }, \n // Returns the minimum node in the tree.\n t.prototype.min = function() {\n return this.left.q() ? this : this.left.min();\n }, \n // Returns the maximum key in the tree.\n t.prototype.ot = function() {\n return this.min().key;\n }, \n // Returns the maximum key in the tree.\n t.prototype.at = function() {\n return this.right.q() ? this.key : this.right.at();\n }, \n // Returns new tree, with the key/value added.\n t.prototype.nt = function(t, e, n) {\n var r = this, i = n(t, r.key);\n return (r = i < 0 ? r.rt(null, null, null, r.left.nt(t, e, n), null) : 0 === i ? r.rt(null, e, null, null, null) : r.rt(null, null, null, null, r.right.nt(t, e, n))).At();\n }, t.prototype.Pt = function() {\n if (this.left.q()) return t.EMPTY;\n var e = this;\n return e.left.Vt() || e.left.left.Vt() || (e = e.gt()), (e = e.rt(null, null, null, e.left.Pt(), null)).At();\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.q() || i.left.Vt() || i.left.left.Vt() || (i = i.gt()), \n i = i.rt(null, null, null, i.left.remove(e, n), null); else {\n if (i.left.Vt() && (i = i.pt()), i.right.q() || i.right.Vt() || i.right.left.Vt() || (i = i.yt()), \n 0 === n(e, i.key)) {\n if (i.right.q()) return t.EMPTY;\n r = i.right.min(), i = i.rt(r.key, r.value, null, null, i.right.Pt());\n }\n i = i.rt(null, null, null, null, i.right.remove(e, n));\n }\n return i.At();\n }, t.prototype.Vt = function() {\n return this.color;\n }, \n // Returns new tree after performing any needed rotations.\n t.prototype.At = function() {\n var t = this;\n return t.right.Vt() && !t.left.Vt() && (t = t.bt()), t.left.Vt() && t.left.left.Vt() && (t = t.pt()), \n t.left.Vt() && t.right.Vt() && (t = t.vt()), t;\n }, t.prototype.gt = function() {\n var t = this.vt();\n return t.right.left.Vt() && (t = (t = (t = t.rt(null, null, null, null, t.right.pt())).bt()).vt()), \n t;\n }, t.prototype.yt = function() {\n var t = this.vt();\n return t.left.left.Vt() && (t = (t = t.pt()).vt()), t;\n }, t.prototype.bt = function() {\n var e = this.rt(null, null, t.RED, null, this.right.left);\n return this.right.rt(null, null, this.color, e, null);\n }, t.prototype.pt = function() {\n var e = this.rt(null, null, t.RED, this.left.right, null);\n return this.left.rt(null, null, this.color, null, e);\n }, t.prototype.vt = function() {\n var t = this.left.rt(null, null, !this.left.color, null, null), e = this.right.rt(null, null, !this.right.color, null, null);\n return this.rt(null, null, !this.color, t, e);\n }, \n // For testing.\n t.prototype.St = function() {\n var t = this.Dt();\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.Dt = function() {\n if (this.Vt() && this.left.Vt()) throw Ee();\n if (this.right.Vt()) throw Ee();\n var t = this.left.Dt();\n if (t !== this.right.Dt()) throw Ee();\n return t + (this.Vt() ? 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\nN.EMPTY = null, N.RED = !0, N.ht = !1, \n// end LLRBEmptyNode\nN.EMPTY = new (/** @class */ function() {\n function t() {\n this.size = 0;\n }\n return Object.defineProperty(t.prototype, \"key\", {\n get: function() {\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"value\", {\n get: function() {\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"color\", {\n get: function() {\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"left\", {\n get: function() {\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"right\", {\n get: function() {\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), \n // Returns a copy of the current node.\n t.prototype.rt = 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.nt = function(t, e, n) {\n return new N(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.q = function() {\n return !0;\n }, t.prototype.ut = function(t) {\n return !1;\n }, t.prototype.ct = function(t) {\n return !1;\n }, t.prototype.ot = function() {\n return null;\n }, t.prototype.at = function() {\n return null;\n }, t.prototype.Vt = function() {\n return !1;\n }, \n // For testing.\n t.prototype.St = function() {\n return !0;\n }, t.prototype.Dt = 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 A = /** @class */ function() {\n function t(t) {\n this.k = t, this.data = new I(this.k);\n }\n return t.prototype.has = function(t) {\n return null !== this.data.get(t);\n }, t.prototype.first = function() {\n return this.data.ot();\n }, t.prototype.last = function() {\n return this.data.at();\n }, Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this.data.size;\n },\n enumerable: !0,\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.ut((function(e, n) {\n return t(e), !1;\n }));\n }, \n /** Iterates over `elem`s such that: range[0] <= elem < range[1]. */ t.prototype.Ct = function(t, e) {\n for (var n = this.data.lt(t[0]); n.wt(); ) {\n var r = n.It();\n if (this.k(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.Ft = function(t, e) {\n var n;\n for (n = void 0 !== e ? this.data.lt(e) : this.data._t(); n.wt(); ) if (!t(n.It().key)) return;\n }, \n /** Finds the least element greater than or equal to `elem`. */ t.prototype.Nt = function(t) {\n var e = this.data.lt(t);\n return e.wt() ? e.It().key : null;\n }, t.prototype._t = function() {\n return new S(this.data._t());\n }, t.prototype.lt = function(t) {\n return new S(this.data.lt(t));\n }, \n /** Inserts or updates an element */ t.prototype.add = function(t) {\n return this.rt(this.data.remove(t).nt(t, !0));\n }, \n /** Deletes an element */ t.prototype.delete = function(t) {\n return this.has(t) ? this.rt(this.data.remove(t)) : this;\n }, t.prototype.q = function() {\n return this.data.q();\n }, t.prototype.kt = 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._t(), r = e.data._t(); n.wt(); ) {\n var i = n.It().key, o = r.It().key;\n if (0 !== this.k(i, o)) return !1;\n }\n return !0;\n }, t.prototype.j = 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.rt = function(e) {\n var n = new t(this.k);\n return n.data = e, n;\n }, t;\n}(), S = /** @class */ function() {\n function t(t) {\n this.$t = t;\n }\n return t.prototype.It = function() {\n return this.$t.It().key;\n }, t.prototype.wt = function() {\n return this.$t.wt();\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 */\nfunction D(t) {\n var e = 0;\n for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e++;\n return e;\n}\n\nfunction k(t, e) {\n for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e(n, t[n]);\n}\n\nfunction x(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 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 * Immutable class that represents a \"proto\" byte string.\n *\n * Proto byte strings can either be Base64-encoded strings or Uint8Arrays when\n * sent on the wire. This class abstracts away this differentiation by holding\n * the proto byte string in a common class that must be converted into a string\n * before being sent as a proto.\n */ var R = /** @class */ function() {\n function t(t) {\n this.Mt = t;\n }\n return t.fromBase64String = function(e) {\n return new t(pe.Lt().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 pe.Lt().btoa(this.Mt);\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.Mt);\n }, t.prototype.Ot = function() {\n return 2 * this.Mt.length;\n }, t.prototype.D = function(t) {\n return Ie(this.Mt, t.Mt);\n }, t.prototype.isEqual = function(t) {\n return this.Mt === t.Mt;\n }, t;\n}();\n\nfunction L(t) {\n return null == t;\n}\n\n/** Returns whether the value represents -0. */ function V(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 O(t) {\n return \"number\" == typeof t && Number.isInteger(t) && !V(t) && t <= Number.MAX_SAFE_INTEGER && t >= Number.MIN_SAFE_INTEGER;\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 * TransformMutation (see TransformMutation.applyTo()). They can only exist in\n * the local view of a document. Therefore they do not need to be parsed or\n * 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 P(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 local time at which this timestamp was first set.\n */ function C(t) {\n var e = z(t.mapValue.fields.__local_write_time__.timestampValue);\n return new v(e.seconds, e.nanos);\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// A RegExp matching ISO 8601 UTC timestamps with optional fraction.\nR.xt = new R(\"\");\n\nvar U = new RegExp(/^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.(\\d+))?Z$/);\n\n/** Extracts the backend's type order for the provided value. */ function q(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 ? P(t) ? 4 /* ServerTimestampValue */ : 10 /* ObjectValue */ : Ee();\n}\n\n/** Tests `left` and `right` for equality based on the backend semantics. */ function M(t, e) {\n var n = q(t);\n if (n !== q(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 C(t).isEqual(C(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 = z(t.timestampValue), r = z(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 Y(t.bytesValue).isEqual(Y(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 K(t.geoPointValue.latitude) === K(e.geoPointValue.latitude) && K(t.geoPointValue.longitude) === K(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 K(t.integerValue) === K(e.integerValue);\n if (\"doubleValue\" in t && \"doubleValue\" in e) {\n var n = K(t.doubleValue), r = K(e.doubleValue);\n return n === r ? V(n) === V(r) : isNaN(n) && isNaN(r);\n }\n return !1;\n }(t, e);\n\n case 9 /* ArrayValue */ :\n return Te(t.arrayValue.values || [], e.arrayValue.values || [], M);\n\n case 10 /* ObjectValue */ :\n return function(t, e) {\n var n = t.mapValue.fields || {}, r = e.mapValue.fields || {};\n if (D(n) !== D(r)) return !1;\n for (var i in n) if (n.hasOwnProperty(i) && (void 0 === r[i] || !M(n[i], r[i]))) return !1;\n return !0;\n }(t, e);\n\n default:\n return Ee();\n }\n}\n\nfunction j(t, e) {\n return void 0 !== (t.values || []).find((function(t) {\n return M(t, e);\n }));\n}\n\nfunction F(t, e) {\n var n = q(t), r = q(e);\n if (n !== r) return Ie(n, r);\n switch (n) {\n case 0 /* NullValue */ :\n return 0;\n\n case 1 /* BooleanValue */ :\n return Ie(t.booleanValue, e.booleanValue);\n\n case 2 /* NumberValue */ :\n return function(t, e) {\n var n = K(t.integerValue || t.doubleValue), r = K(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 G(t.timestampValue, e.timestampValue);\n\n case 4 /* ServerTimestampValue */ :\n return G(C(t), C(e));\n\n case 5 /* StringValue */ :\n return Ie(t.stringValue, e.stringValue);\n\n case 6 /* BlobValue */ :\n return function(t, e) {\n var n = Y(t), r = Y(e);\n return n.D(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 = Ie(n[i], r[i]);\n if (0 !== o) return o;\n }\n return Ie(n.length, r.length);\n }(t.referenceValue, e.referenceValue);\n\n case 8 /* GeoPointValue */ :\n return function(t, e) {\n var n = Ie(K(t.latitude), K(e.latitude));\n return 0 !== n ? n : Ie(K(t.longitude), K(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 = F(n[i], r[i]);\n if (o) return o;\n }\n return Ie(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 = Ie(r[s], o[s]);\n if (0 !== u) return u;\n var a = F(n[r[s]], i[o[s]]);\n if (0 !== a) return a;\n }\n return Ie(r.length, o.length);\n }(t.mapValue, e.mapValue);\n\n default:\n throw Ee();\n }\n}\n\nfunction G(t, e) {\n if (\"string\" == typeof t && \"string\" == typeof e && t.length === e.length) return Ie(t, e);\n var n = z(t), r = z(e), i = Ie(n.seconds, r.seconds);\n return 0 !== i ? i : Ie(n.nanos, r.nanos);\n}\n\nfunction B(t) {\n return function t(e) {\n return \"nullValue\" in e ? \"null\" : \"booleanValue\" in e ? \"\" + e.booleanValue : \"integerValue\" in e ? \"\" + e.integerValue : \"doubleValue\" in e ? \"\" + e.doubleValue : \"timestampValue\" in e ? function(t) {\n var e = z(t);\n return \"time(\" + e.seconds + \",\" + e.nanos + \")\";\n }(e.timestampValue) : \"stringValue\" in e ? e.stringValue : \"bytesValue\" in e ? Y(e.bytesValue).toBase64() : \"referenceValue\" in e ? (r = e.referenceValue, \n b.tt(r).toString()) : \"geoPointValue\" in e ? \"geo(\" + (n = e.geoPointValue).latitude + \",\" + n.longitude + \")\" : \"arrayValue\" in e ? function(e) {\n for (var n = \"[\", r = !0, i = 0, o = e.values || []; i < o.length; i++) {\n var s = o[i];\n r ? r = !1 : n += \",\", n += t(s);\n }\n return n + \"]\";\n }(e.arrayValue) : \"mapValue\" in e ? function(e) {\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 n = \"{\", r = !0, i = 0, o = Object.keys(e.fields || {}).sort(); i < o.length; i++) {\n var s = o[i];\n r ? r = !1 : n += \",\", n += s + \":\" + t(e.fields[s]);\n }\n return n + \"}\";\n }(e.mapValue) : Ee();\n var n, r;\n }(t);\n}\n\nfunction z(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 (_e(!!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 = U.exec(t);\n if (_e(!!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: K(t.seconds),\n nanos: K(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 K(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 Y(t) {\n return \"string\" == typeof t ? R.fromBase64String(t) : R.fromUint8Array(t);\n}\n\n/** Returns a reference value for the provided database and key. */ function Q(t, e) {\n return {\n referenceValue: \"projects/\" + t.projectId + \"/databases/\" + t.database + \"/documents/\" + e.path.K()\n };\n}\n\n/** Returns true if `value` is an IntegerValue . */ function Z(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 W(t) {\n return !!t && \"arrayValue\" in t;\n}\n\n/** Returns true if `value` is a NullValue. */ function H(t) {\n return !!t && \"nullValue\" in t;\n}\n\n/** Returns true if `value` is NaN. */ function X(t) {\n return !!t && \"doubleValue\" in t && isNaN(Number(t.doubleValue));\n}\n\n/** Returns true if `value` is a MapValue. */ function J(t) {\n return !!t && \"mapValue\" in t;\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/** Transforms a value into a server-generated timestamp. */ var $ = /** @class */ function() {\n function t() {}\n return t.prototype.Bt = function(t, e) {\n return 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 }(e, t);\n }, t.prototype.qt = function(t, e) {\n return e;\n }, t.prototype.Ut = function(t) {\n return null;\n // Server timestamps are idempotent and don't require a base value.\n }, t.prototype.isEqual = function(e) {\n return e instanceof t;\n }, t;\n}();\n\n$.instance = new $;\n\n/** Transforms an array value via a union operation. */\nvar tt = /** @class */ function() {\n function t(t) {\n this.elements = t;\n }\n return t.prototype.Bt = function(t, e) {\n return this.apply(t);\n }, t.prototype.qt = function(t, e) {\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 this.apply(t);\n }, t.prototype.apply = function(t) {\n for (var e = rt(t), n = function(t) {\n e.some((function(e) {\n return M(e, t);\n })) || e.push(t);\n }, r = 0, i = this.elements; r < i.length; r++) {\n n(i[r]);\n }\n return {\n arrayValue: {\n values: e\n }\n };\n }, t.prototype.Ut = function(t) {\n return null;\n // Array transforms are idempotent and don't require a base value.\n }, t.prototype.isEqual = function(e) {\n return e instanceof t && Te(this.elements, e.elements, M);\n }, t;\n}(), et = /** @class */ function() {\n function t(t) {\n this.elements = t;\n }\n return t.prototype.Bt = function(t, e) {\n return this.apply(t);\n }, t.prototype.qt = function(t, e) {\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 this.apply(t);\n }, t.prototype.apply = function(t) {\n for (var e = rt(t), n = function(t) {\n e = e.filter((function(e) {\n return !M(e, t);\n }));\n }, r = 0, i = this.elements; r < i.length; r++) {\n n(i[r]);\n }\n return {\n arrayValue: {\n values: e\n }\n };\n }, t.prototype.Ut = function(t) {\n return null;\n // Array transforms are idempotent and don't require a base value.\n }, t.prototype.isEqual = function(e) {\n return e instanceof t && Te(this.elements, e.elements, M);\n }, t;\n}(), nt = /** @class */ function() {\n function t(t, e) {\n this.serializer = t, this.Qt = e;\n }\n return t.prototype.Bt = 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 = this.Ut(t), r = this.asNumber(n) + this.asNumber(this.Qt);\n return Z(n) && Z(this.Qt) ? this.serializer.Wt(r) : this.serializer.jt(r);\n }, t.prototype.qt = function(t, e) {\n return e;\n }, \n /**\n * Inspects the provided value, returning the provided value if it is already\n * a NumberValue, otherwise returning a coerced value of 0.\n */\n t.prototype.Ut = function(t) {\n return Z(e = t) || function(t) {\n return !!t && \"doubleValue\" in t;\n }(e) ? t : {\n integerValue: 0\n };\n var e;\n }, t.prototype.isEqual = function(e) {\n return e instanceof t && M(this.Qt, e.Qt);\n }, t.prototype.asNumber = function(t) {\n return K(t.integerValue || t.doubleValue);\n }, t;\n}();\n\n/** Transforms an array value via a remove operation. */ function rt(t) {\n return W(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/**\n * Provides a set of fields that can be used to partially patch a document.\n * FieldMask is used in conjunction with ObjectValue.\n * Examples:\n * foo - Overwrites foo entirely with the provided value. If foo is not\n * present in the companion ObjectValue, the field is deleted.\n * foo.bar - Overwrites only the field bar of the object foo.\n * If foo is not an object, foo is replaced with an object\n * containing foo\n */ var it = /** @class */ function() {\n function t(t) {\n this.fields = t;\n // TODO(dimond): validation of FieldMask\n }\n return t.Kt = function(e) {\n return new t(e);\n }, t.Gt = function(e) {\n var n = new A(_.k);\n return e.forEach((function(t) {\n return n = n.add(t);\n })), new t(n);\n }, \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 t.prototype.zt = function(t) {\n var e = !1;\n return this.fields.forEach((function(n) {\n n.U(t) && (e = !0);\n })), e;\n }, t.prototype.isEqual = function(t) {\n return this.fields.isEqual(t.fields);\n }, t;\n}(), ot = /** @class */ function() {\n function t(t, e) {\n this.field = t, this.transform = e;\n }\n return t.prototype.isEqual = function(t) {\n return this.field.isEqual(t.field) && this.transform.isEqual(t.transform);\n }, t;\n}(), st = 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\n * TransformMutation has been committed. Contains one FieldValue for each\n * FieldTransform that was in the mutation.\n *\n * Will be null if the mutation was not a TransformMutation.\n */\ne) {\n this.version = t, this.transformResults = e;\n}, ut = /** @class */ function() {\n function t(t, e) {\n this.updateTime = t, this.exists = e\n /** Creates a new Precondition with an exists flag. */;\n }\n return 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, \"Ht\", {\n /** Returns whether this Precondition is empty. */ get: function() {\n return void 0 === this.updateTime && void 0 === this.exists;\n },\n enumerable: !0,\n configurable: !0\n }), \n /**\n * Returns true if the preconditions is valid for the given document\n * (or null if no document is available).\n */\n t.prototype.Yt = function(t) {\n return void 0 !== this.updateTime ? t instanceof mt && t.version.isEqual(this.updateTime) : void 0 === this.exists || this.exists === t instanceof mt;\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/** A field path and the TransformOperation to perform upon it. */ ut.NONE = new ut;\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, Patch, and Transform mutations. For Delete\n * mutations, we 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 null Document(v0)\n * PatchMutation Document(v3) Document(v3)\n * PatchMutation NoDocument(v3) NoDocument(v3)\n * PatchMutation null null\n * TransformMutation Document(v3) Document(v3)\n * TransformMutation NoDocument(v3) NoDocument(v3)\n * TransformMutation null null\n * DeleteMutation Document(v3) NoDocument(v0)\n * DeleteMutation NoDocument(v3) NoDocument(v0)\n * DeleteMutation null NoDocument(v0)\n *\n * For acknowledged mutations, we use the updateTime of the WriteResponse as\n * the resulting version for Set, Patch, and Transform mutations. As deletes\n * have no 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 return an `UnknownDocument` and rely on Watch to send us the\n * updated version.\n *\n * Note that TransformMutations don't create Documents (in the case of being\n * applied to a NoDocument), even though they would on the backend. This is\n * because the client always combines the TransformMutation with a SetMutation\n * or PatchMutation and we only want to apply the transform if the prior\n * mutation resulted in a Document (always true for a SetMutation, but not\n * necessarily for a PatchMutation).\n *\n * ## Subclassing Notes\n *\n * Subclasses of Mutation need to implement applyToRemoteDocument() and\n * applyToLocalView() to implement the actual behavior of applying the mutation\n * to some source document.\n */\nvar at = /** @class */ function() {\n function t() {}\n return t.prototype.Jt = function(t) {}, \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 */\n t.Xt = function(t) {\n return t instanceof mt ? t.version : m.MIN;\n }, t;\n}(), ht = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n return (i = t.call(this) || this).key = e, i.value = n, i.Zt = r, i.type = 0 /* Set */ , \n i;\n }\n return e.__extends(n, t), n.prototype.qt = function(t, e) {\n this.Jt(t);\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 var n = e.version;\n return new mt(this.key, n, this.value, {\n hasCommittedMutations: !0\n });\n }, n.prototype.Bt = function(t, e, n) {\n if (this.Jt(t), !this.Zt.Yt(t)) return t;\n var r = at.Xt(t);\n return new mt(this.key, r, this.value, {\n te: !0\n });\n }, n.prototype.ee = function(t) {\n return null;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && this.value.isEqual(t.value) && this.Zt.isEqual(t.Zt);\n }, n;\n}(at), ct = /** @class */ function(t) {\n function n(e, n, r, i) {\n var o = this;\n return (o = t.call(this) || this).key = e, o.data = n, o.se = r, o.Zt = i, o.type = 1 /* Patch */ , \n o;\n }\n return e.__extends(n, t), n.prototype.qt = function(t, e) {\n if (this.Jt(t), !this.Zt.Yt(t)) \n // Since the mutation was not rejected, we know that the precondition\n // matched on the backend. We therefore must not have the expected version\n // of the document in our cache and return an UnknownDocument with the\n // known updateTime.\n return new wt(this.key, e.version);\n var n = this.ie(t);\n return new mt(this.key, e.version, n, {\n hasCommittedMutations: !0\n });\n }, n.prototype.Bt = function(t, e, n) {\n if (this.Jt(t), !this.Zt.Yt(t)) return t;\n var r = at.Xt(t), i = this.ie(t);\n return new mt(this.key, r, i, {\n te: !0\n });\n }, n.prototype.ee = function(t) {\n return null;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && this.se.isEqual(t.se) && this.Zt.isEqual(t.Zt);\n }, \n /**\n * Patches the data of document if available or creates a new document. Note\n * that this does not check whether or not the precondition of this patch\n * holds.\n */\n n.prototype.ie = function(t) {\n var e;\n return e = t instanceof mt ? t.data() : dt.EMPTY, this.ne(e);\n }, n.prototype.ne = function(t) {\n var e = this, n = t.re();\n return this.se.fields.forEach((function(t) {\n if (!t.q()) {\n var r = e.data.field(t);\n null !== r ? n.set(t, r) : n.delete(t);\n }\n })), n.he();\n }, n;\n}(at), ft = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this) || this).key = e, r.fieldTransforms = n, r.type = 2 /* Transform */ , \n // NOTE: We set a precondition of exists: true as a safety-check, since we\n // always combine TransformMutations with a SetMutation or PatchMutation which\n // (if successful) should end up with an existing document.\n r.Zt = ut.exists(!0), r;\n }\n return e.__extends(n, t), n.prototype.qt = function(t, e) {\n if (this.Jt(t), _e(null != e.transformResults), !this.Zt.Yt(t)) \n // Since the mutation was not rejected, we know that the precondition\n // matched on the backend. We therefore must not have the expected version\n // of the document in our cache and return an UnknownDocument with the\n // known updateTime.\n return new wt(this.key, e.version);\n var n = this.oe(t), r = this.ae(t, e.transformResults), i = e.version, o = this.ue(n.data(), r);\n return new mt(this.key, i, o, {\n hasCommittedMutations: !0\n });\n }, n.prototype.Bt = function(t, e, n) {\n if (this.Jt(t), !this.Zt.Yt(t)) return t;\n var r = this.oe(t), i = this.ce(n, t, e), o = this.ue(r.data(), i);\n return new mt(this.key, r.version, o, {\n te: !0\n });\n }, n.prototype.ee = function(t) {\n for (var e = null, n = 0, r = this.fieldTransforms; n < r.length; n++) {\n var i = r[n], o = t instanceof mt ? t.field(i.field) : void 0, s = i.transform.Ut(o || null);\n null != s && (e = null == e ? dt._e().set(i.field, s) : e.set(i.field, s));\n }\n return e ? e.he() : null;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && Te(this.fieldTransforms, t.fieldTransforms, (function(t, e) {\n return t.isEqual(e);\n })) && this.Zt.isEqual(t.Zt);\n }, \n /**\n * Asserts that the given MaybeDocument is actually a Document and verifies\n * that it matches the key for this mutation. Since we only support\n * transformations with precondition exists this method is guaranteed to be\n * safe.\n */\n n.prototype.oe = function(t) {\n return t;\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 after a\n * TransformMutation has been acknowledged by the server.\n *\n * @param baseDoc The document prior to applying this mutation batch.\n * @param serverTransformResults The transform results received by the server.\n * @return The transform results list.\n */\n n.prototype.ae = function(t, e) {\n var n = [];\n _e(this.fieldTransforms.length === e.length);\n for (var r = 0; r < e.length; r++) {\n var i = this.fieldTransforms[r], o = i.transform, s = null;\n t instanceof mt && (s = t.field(i.field)), n.push(o.qt(s, e[r]));\n }\n return 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 * TransformMutation locally.\n *\n * @param localWriteTime The local time of the transform mutation (used to\n * generate ServerTimestampValues).\n * @param maybeDoc The current state of the document after applying all\n * previous mutations.\n * @param baseDoc The document prior to applying this mutation batch.\n * @return The transform results list.\n */\n n.prototype.ce = function(t, e, n) {\n for (var r = [], i = 0, o = this.fieldTransforms; i < o.length; i++) {\n var s = o[i], u = s.transform, a = null;\n e instanceof mt && (a = e.field(s.field)), null === a && n instanceof mt && (\n // If the current document does not contain a value for the mutated\n // field, use the value that existed before applying this mutation\n // batch. This solves an edge case where a PatchMutation clears the\n // values in a nested map before the TransformMutation is applied.\n a = n.field(s.field)), r.push(u.Bt(a, t));\n }\n return r;\n }, n.prototype.ue = function(t, e) {\n for (var n = t.re(), r = 0; r < this.fieldTransforms.length; r++) {\n var i = this.fieldTransforms[r].field;\n n.set(i, e[r]);\n }\n return n.he();\n }, n;\n}(at), lt = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this) || this).key = e, r.Zt = n, r.type = 3 /* Delete */ , r;\n }\n return e.__extends(n, t), n.prototype.qt = function(t, e) {\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 return this.Jt(t), new gt(this.key, e.version, {\n hasCommittedMutations: !0\n });\n }, n.prototype.Bt = function(t, e, n) {\n return this.Jt(t), this.Zt.Yt(t) ? new gt(this.key, m.S()) : t;\n }, n.prototype.ee = function(t) {\n return null;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && this.Zt.isEqual(t.Zt);\n }, n;\n}(at), pt = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this) || this).key = e, r.Zt = n, r.type = 4 /* Verify */ , r;\n }\n return e.__extends(n, t), n.prototype.qt = function(t, e) {\n Ee();\n }, n.prototype.Bt = function(t, e, n) {\n Ee();\n }, n.prototype.ee = function(t) {\n Ee();\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && this.Zt.isEqual(t.Zt);\n }, n;\n}(at), dt = /** @class */ function() {\n function t(t) {\n this.proto = t;\n }\n /** Returns a new Builder instance that is based on an empty object. */ return t._e = function() {\n return t.EMPTY.re();\n }, \n /**\n * Returns the value at the given path or null.\n *\n * @param path the path to search\n * @return The value at the path or if there it doesn't exist.\n */\n t.prototype.field = function(t) {\n if (t.q()) return this.proto;\n for (var e = this.proto, n = 0; n < t.length - 1; ++n) {\n if (!e.mapValue.fields) return null;\n if (!J(e = e.mapValue.fields[t.get(n)])) return null;\n }\n return (e = (e.mapValue.fields || {})[t.B()]) || null;\n }, \n /**\n * Returns a FieldMask built from all FieldPaths starting from this\n * ObjectValue, including paths from nested objects.\n */\n t.prototype.se = function() {\n return this.le(this.proto.mapValue);\n }, t.prototype.le = function(t) {\n var e = this, n = new A(_.k);\n return k(t.fields || {}, (function(t, r) {\n var i = new _([ t ]);\n if (10 /* ObjectValue */ === q(r)) {\n var o = e.le(r.mapValue).fields;\n o.q() ? \n // Preserve the empty map by adding it to the FieldMask.\n n = n.add(i) : \n // For nested and non-empty ObjectValues, add the FieldPath of the\n // leaf nodes.\n o.forEach((function(t) {\n n = n.add(i.child(t));\n }));\n } else \n // For nested and non-empty ObjectValues, add the FieldPath of the leaf\n // nodes.\n n = n.add(i);\n })), it.Kt(n);\n }, t.prototype.isEqual = function(t) {\n return M(this.proto, t.proto);\n }, \n /** Creates a ObjectValueBuilder instance that is based on the current value. */ t.prototype.re = function() {\n return new yt(this);\n }, t;\n}();\n\n/**\n * A mutation that creates or replaces the document at the given key with the\n * object value contents.\n */ dt.EMPTY = new dt({\n mapValue: {}\n});\n\n/**\n * An ObjectValueBuilder provides APIs to set and delete fields from an\n * ObjectValue.\n */\nvar yt = /** @class */ function() {\n /**\n * @param baseObject The object to mutate.\n */\n function t(t) {\n this.de = t, \n /** A map that contains the accumulated changes in this builder. */\n this.fe = new Map\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 * @return The current Builder instance.\n */;\n }\n return t.prototype.set = function(t, e) {\n return this.Te(t, e), this;\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 * @return The current Builder instance.\n */\n t.prototype.delete = function(t) {\n return this.Te(t, null), this;\n }, \n /**\n * Adds `value` to the overlay map at `path`. Creates nested map entries if\n * needed.\n */\n t.prototype.Te = function(t, e) {\n for (var n = this.fe, r = 0; r < t.length - 1; ++r) {\n var i = t.get(r), o = n.get(i);\n o instanceof Map ? \n // Re-use a previously created map\n n = o : o && 10 /* ObjectValue */ === q(o) ? (\n // Convert the existing Protobuf MapValue into a map\n o = new Map(Object.entries(o.mapValue.fields || {})), n.set(i, o), n = o) : (\n // Create an empty map to represent the current nesting level\n o = new Map, n.set(i, o), n = o);\n }\n n.set(t.B(), e);\n }, \n /** Returns an ObjectValue with all mutations applied. */ t.prototype.he = function() {\n var t = this.Ee(_.H, this.fe);\n return null != t ? new dt(t) : this.de;\n }, \n /**\n * Applies any overlays from `currentOverlays` that exist at `currentPath`\n * and returns the merged data at `currentPath` (or null if there were no\n * changes).\n *\n * @param currentPath The path at the current nesting level. Can be set to\n * FieldValue.EMPTY_PATH to represent the root.\n * @param currentOverlays The overlays at the current nesting level in the\n * same format as `overlayMap`.\n * @return The merged data at `currentPath` or null if no modifications\n * were applied.\n */\n t.prototype.Ee = function(t, e) {\n var n = this, r = !1, i = this.de.field(t), o = J(i) ? // If there is already data at the current path, base our\n Object.assign({}, i.mapValue.fields) : {};\n return e.forEach((function(e, i) {\n if (e instanceof Map) {\n var s = n.Ee(t.child(i), e);\n null != s && (o[i] = s, r = !0);\n } else null !== e ? (o[i] = e, r = !0) : o.hasOwnProperty(i) && (delete o[i], r = !0);\n })), r ? {\n mapValue: {\n fields: o\n }\n } : null;\n }, t;\n}(), vt = /** @class */ function() {\n function t(t, e) {\n this.key = t, this.version = e;\n }\n return t.Ie = function(t, e) {\n return b.k(t.key, e.key);\n }, t;\n}(), mt = /** @class */ function(t) {\n function n(e, n, r, i) {\n var o = this;\n return (o = t.call(this, e, n) || this).we = r, o.te = !!i.te, o.hasCommittedMutations = !!i.hasCommittedMutations, \n o;\n }\n return e.__extends(n, t), n.prototype.field = function(t) {\n return this.we.field(t);\n }, n.prototype.data = function() {\n return this.we;\n }, n.prototype.Re = function() {\n return this.we.proto;\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.key.isEqual(t.key) && this.version.isEqual(t.version) && this.te === t.te && this.hasCommittedMutations === t.hasCommittedMutations && this.we.isEqual(t.we);\n }, n.prototype.toString = function() {\n return \"Document(\" + this.key + \", \" + this.version + \", \" + this.we.toString() + \", {hasLocalMutations: \" + this.te + \"}), {hasCommittedMutations: \" + this.hasCommittedMutations + \"})\";\n }, Object.defineProperty(n.prototype, \"hasPendingWrites\", {\n get: function() {\n return this.te || this.hasCommittedMutations;\n },\n enumerable: !0,\n configurable: !0\n }), n.Ae = function(t, e, n) {\n var r = e.field(t), i = n.field(t);\n return null !== r && null !== i ? F(r, i) : Ee();\n }, n;\n}(vt), gt = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n return (i = t.call(this, e, n) || this).hasCommittedMutations = !(!r || !r.hasCommittedMutations), \n i;\n }\n return e.__extends(n, t), n.prototype.toString = function() {\n return \"NoDocument(\" + this.key + \", \" + this.version + \")\";\n }, Object.defineProperty(n.prototype, \"hasPendingWrites\", {\n get: function() {\n return this.hasCommittedMutations;\n },\n enumerable: !0,\n configurable: !0\n }), n.prototype.isEqual = function(t) {\n return t instanceof n && t.hasCommittedMutations === this.hasCommittedMutations && t.version.isEqual(this.version) && t.key.isEqual(this.key);\n }, n;\n}(vt), wt = /** @class */ function(t) {\n function n() {\n return null !== t && t.apply(this, arguments) || this;\n }\n return e.__extends(n, t), n.prototype.toString = function() {\n return \"UnknownDocument(\" + this.key + \", \" + this.version + \")\";\n }, Object.defineProperty(n.prototype, \"hasPendingWrites\", {\n get: function() {\n return !0;\n },\n enumerable: !0,\n configurable: !0\n }), n.prototype.isEqual = function(t) {\n return t instanceof n && t.version.isEqual(this.version) && t.key.isEqual(this.key);\n }, n;\n}(vt), Et = /** @class */ function() {\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 constructor, because `Query` provides an implicit `orderBy`\n * property.\n */\n function t(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.me = null;\n }\n return t.prototype.canonicalId = function() {\n if (null === this.me) {\n var t = this.path.K();\n null !== this.collectionGroup && (t += \"|cg:\" + this.collectionGroup), t += \"|f:\", \n t += this.filters.map((function(t) {\n return t.canonicalId();\n })).join(\",\"), t += \"|ob:\", t += this.orderBy.map((function(t) {\n return t.canonicalId();\n })).join(\",\"), L(this.limit) || (t += \"|l:\", t += this.limit), this.startAt && (t += \"|lb:\", \n t += this.startAt.canonicalId()), this.endAt && (t += \"|ub:\", t += this.endAt.canonicalId()), \n this.me = t;\n }\n return this.me;\n }, t.prototype.toString = function() {\n var t = this.path.K();\n return null !== this.collectionGroup && (t += \" collectionGroup=\" + this.collectionGroup), \n this.filters.length > 0 && (t += \", filters: [\" + this.filters.join(\", \") + \"]\"), \n L(this.limit) || (t += \", limit: \" + this.limit), this.orderBy.length > 0 && (t += \", orderBy: [\" + this.orderBy.join(\", \") + \"]\"), \n this.startAt && (t += \", startAt: \" + this.startAt.canonicalId()), this.endAt && (t += \", endAt: \" + this.endAt.canonicalId()), \n \"Target(\" + t + \")\";\n }, t.prototype.isEqual = function(t) {\n if (this.limit !== t.limit) return !1;\n if (this.orderBy.length !== t.orderBy.length) return !1;\n for (var e = 0; e < this.orderBy.length; e++) if (!this.orderBy[e].isEqual(t.orderBy[e])) return !1;\n if (this.filters.length !== t.filters.length) return !1;\n for (var n = 0; n < this.filters.length; n++) if (!this.filters[n].isEqual(t.filters[n])) return !1;\n return this.collectionGroup === t.collectionGroup && !!this.path.isEqual(t.path) && !!(null !== this.startAt ? this.startAt.isEqual(t.startAt) : null === t.startAt) && (null !== this.endAt ? this.endAt.isEqual(t.endAt) : null === t.endAt);\n }, t.prototype.Pe = function() {\n return b.st(this.path) && null === this.collectionGroup && 0 === this.filters.length;\n }, t;\n}(), _t = /** @class */ function() {\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 */\n function t(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.Ve = n, \n this.filters = r, this.limit = i, this.ge = o, this.startAt = s, this.endAt = u, \n this.pe = null, \n // The corresponding `Target` of this `Query` instance.\n this.ye = null, this.startAt && this.be(this.startAt), this.endAt && this.be(this.endAt);\n }\n return t.ve = function(e) {\n return new t(e);\n }, Object.defineProperty(t.prototype, \"orderBy\", {\n get: function() {\n if (null === this.pe) {\n var t = this.Se(), e = this.De();\n if (null !== t && null === e) \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 t.J() ? this.pe = [ Ot ] : this.pe = [ new Vt(t), Ot ]; else {\n this.pe = [];\n for (var n = !1, r = 0, i = this.Ve; r < i.length; r++) {\n var o = i[r];\n this.pe.push(o), o.field.J() && (n = !0);\n }\n if (!n) {\n // The order of the implicit key ordering always matches the last\n // explicit order by\n var s = this.Ve.length > 0 ? this.Ve[this.Ve.length - 1].dir : kt.ASCENDING;\n this.pe.push(s === kt.ASCENDING ? Ot : Pt);\n }\n }\n }\n return this.pe;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.Ce = function(e) {\n var n = this.filters.concat([ e ]);\n return new t(this.path, this.collectionGroup, this.Ve.slice(), n, this.limit, this.ge, this.startAt, this.endAt);\n }, t.prototype.Fe = function(e) {\n // TODO(dimond): validate that orderBy does not list the same key twice.\n var n = this.Ve.concat([ e ]);\n return new t(this.path, this.collectionGroup, n, this.filters.slice(), this.limit, this.ge, this.startAt, this.endAt);\n }, t.prototype.Ne = function(e) {\n return new t(this.path, this.collectionGroup, this.Ve.slice(), this.filters.slice(), e, \"F\" /* First */ , this.startAt, this.endAt);\n }, t.prototype.ke = function(e) {\n return new t(this.path, this.collectionGroup, this.Ve.slice(), this.filters.slice(), e, \"L\" /* Last */ , this.startAt, this.endAt);\n }, t.prototype.$e = function(e) {\n return new t(this.path, this.collectionGroup, this.Ve.slice(), this.filters.slice(), this.limit, this.ge, e, this.endAt);\n }, t.prototype.Me = function(e) {\n return new t(this.path, this.collectionGroup, this.Ve.slice(), this.filters.slice(), this.limit, this.ge, this.startAt, e);\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 */\n t.prototype.Le = function(e) {\n return new t(e, \n /*collectionGroup=*/ null, this.Ve.slice(), this.filters.slice(), this.limit, this.ge, this.startAt, this.endAt);\n }, \n /**\n * Returns true if this query does not specify any query constraints that\n * could remove results.\n */\n t.prototype.Oe = function() {\n return 0 === this.filters.length && null === this.limit && null == this.startAt && null == this.endAt && (0 === this.Ve.length || 1 === this.Ve.length && this.Ve[0].field.J());\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.\n t.prototype.canonicalId = function() {\n return this.xe().canonicalId() + \"|lt:\" + this.ge;\n }, t.prototype.toString = function() {\n return \"Query(target=\" + this.xe().toString() + \"; limitType=\" + this.ge + \")\";\n }, t.prototype.isEqual = function(t) {\n return this.xe().isEqual(t.xe()) && this.ge === t.ge;\n }, t.prototype.Be = function(t, e) {\n for (var n = !1, r = 0, i = this.orderBy; r < i.length; r++) {\n var o = i[r], s = o.compare(t, e);\n if (0 !== s) return s;\n n = n || o.field.J();\n }\n return 0;\n }, t.prototype.matches = function(t) {\n return this.qe(t) && this.Ue(t) && this.Qe(t) && this.We(t);\n }, t.prototype.je = function() {\n return !L(this.limit) && \"F\" /* First */ === this.ge;\n }, t.prototype.Ke = function() {\n return !L(this.limit) && \"L\" /* Last */ === this.ge;\n }, t.prototype.De = function() {\n return this.Ve.length > 0 ? this.Ve[0].field : null;\n }, t.prototype.Se = function() {\n for (var t = 0, e = this.filters; t < e.length; t++) {\n var n = e[t];\n if (n instanceof It && n.Ge()) return n.field;\n }\n return null;\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 t.prototype.ze = function(t) {\n for (var e = 0, n = this.filters; e < n.length; e++) {\n var r = n[e];\n if (r instanceof It && t.indexOf(r.op) >= 0) return r.op;\n }\n return null;\n }, t.prototype.Pe = function() {\n return this.xe().Pe();\n }, t.prototype.He = function() {\n return null !== this.collectionGroup;\n }, \n /**\n * Converts this `Query` instance to it's corresponding `Target`\n * representation.\n */\n t.prototype.xe = function() {\n if (!this.ye) if (\"F\" /* First */ === this.ge) this.ye = new Et(this.path, this.collectionGroup, this.orderBy, this.filters, this.limit, this.startAt, this.endAt); else {\n for (\n // Flip the orderBy directions since we want the last results\n var t = [], e = 0, n = this.orderBy; e < n.length; e++) {\n var r = n[e], i = r.dir === kt.DESCENDING ? kt.ASCENDING : kt.DESCENDING;\n t.push(new Vt(r.field, i));\n }\n // We need to swap the cursors to match the now-flipped query ordering.\n var o = this.endAt ? new Lt(this.endAt.position, !this.endAt.before) : null, s = this.startAt ? new Lt(this.startAt.position, !this.startAt.before) : null;\n // Now return as a LimitType.First query.\n this.ye = new Et(this.path, this.collectionGroup, t, this.filters, this.limit, o, s);\n }\n return this.ye;\n }, t.prototype.qe = function(t) {\n var e = t.key.path;\n return null !== this.collectionGroup ? t.key.et(this.collectionGroup) && this.path.U(e) : b.st(this.path) ? this.path.isEqual(e) : this.path.W(e);\n }, \n /**\n * A document must have a value for every ordering clause in order to show up\n * in the results.\n */\n t.prototype.Ue = function(t) {\n for (var e = 0, n = this.Ve; e < n.length; e++) {\n var r = n[e];\n // order by key always matches\n if (!r.field.J() && null === t.field(r.field)) return !1;\n }\n return !0;\n }, t.prototype.Qe = function(t) {\n for (var e = 0, n = this.filters; e < n.length; e++) {\n if (!n[e].matches(t)) return !1;\n }\n return !0;\n }, \n /**\n * Makes sure a document is within the bounds, if provided.\n */\n t.prototype.We = function(t) {\n return !(this.startAt && !this.startAt.Ye(this.orderBy, t) || this.endAt && this.endAt.Ye(this.orderBy, t));\n }, t.prototype.be = function(t) {}, t;\n}(), bt = /** @class */ function() {\n function t(t) {\n this.name = t;\n }\n return t.G = function(e) {\n switch (e) {\n case \"<\":\n return t.LESS_THAN;\n\n case \"<=\":\n return t.LESS_THAN_OR_EQUAL;\n\n case \"==\":\n return t.EQUAL;\n\n case \">=\":\n return t.GREATER_THAN_OR_EQUAL;\n\n case \">\":\n return t.GREATER_THAN;\n\n case \"array-contains\":\n return t.ARRAY_CONTAINS;\n\n case \"in\":\n return t.IN;\n\n case \"array-contains-any\":\n return t.ARRAY_CONTAINS_ANY;\n\n default:\n return Ee();\n }\n }, t.prototype.toString = function() {\n return this.name;\n }, t.prototype.isEqual = function(t) {\n return this.name === t.name;\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 * The result of a lookup for a given path may be an existing document or a\n * marker that this document does not exist at a given version.\n */ bt.LESS_THAN = new bt(\"<\"), bt.LESS_THAN_OR_EQUAL = new bt(\"<=\"), bt.EQUAL = new bt(\"==\"), \nbt.GREATER_THAN = new bt(\">\"), bt.GREATER_THAN_OR_EQUAL = new bt(\">=\"), bt.ARRAY_CONTAINS = new bt(\"array-contains\"), \nbt.IN = new bt(\"in\"), bt.ARRAY_CONTAINS_ANY = new bt(\"array-contains-any\");\n\nvar It = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n return (i = t.call(this) || this).field = e, i.op = n, i.value = r, i;\n }\n /**\n * Creates a filter based on the provided arguments.\n */ return e.__extends(n, t), n.create = function(t, e, r) {\n if (t.J()) return e === bt.IN ? new Nt(t, r) : new Tt(t, e, r);\n if (H(r)) {\n if (e !== bt.EQUAL) throw new c(h.INVALID_ARGUMENT, \"Invalid query. Null supports only equality comparisons.\");\n return new n(t, e, r);\n }\n if (X(r)) {\n if (e !== bt.EQUAL) throw new c(h.INVALID_ARGUMENT, \"Invalid query. NaN supports only equality comparisons.\");\n return new n(t, e, r);\n }\n return e === bt.ARRAY_CONTAINS ? new At(t, r) : e === bt.IN ? new St(t, r) : e === bt.ARRAY_CONTAINS_ANY ? new Dt(t, r) : new n(t, e, r);\n }, n.prototype.matches = function(t) {\n var e = t.field(this.field);\n // Only compare types with matching backend order (such as double and int).\n return null !== e && q(this.value) === q(e) && this.Je(F(e, this.value));\n }, n.prototype.Je = function(t) {\n switch (this.op) {\n case bt.LESS_THAN:\n return t < 0;\n\n case bt.LESS_THAN_OR_EQUAL:\n return t <= 0;\n\n case bt.EQUAL:\n return 0 === t;\n\n case bt.GREATER_THAN:\n return t > 0;\n\n case bt.GREATER_THAN_OR_EQUAL:\n return t >= 0;\n\n default:\n return Ee();\n }\n }, n.prototype.Ge = function() {\n return [ bt.LESS_THAN, bt.LESS_THAN_OR_EQUAL, bt.GREATER_THAN, bt.GREATER_THAN_OR_EQUAL ].indexOf(this.op) >= 0;\n }, n.prototype.canonicalId = function() {\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 this.field.K() + this.op.toString() + B(this.value);\n }, n.prototype.isEqual = function(t) {\n return t instanceof n && this.op.isEqual(t.op) && this.field.isEqual(t.field) && M(this.value, t.value);\n }, n.prototype.toString = function() {\n return this.field.K() + \" \" + this.op + \" \" + B(this.value);\n }, n;\n}((function() {})), Tt = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n return (i = t.call(this, e, n, r) || this).key = b.tt(r.referenceValue), i;\n }\n return e.__extends(n, t), n.prototype.matches = function(t) {\n var e = b.k(t.key, this.key);\n return this.Je(e);\n }, n;\n}(It), Nt = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this, e, bt.IN, n) || this).keys = (n.arrayValue.values || []).map((function(t) {\n return b.tt(t.referenceValue);\n })), r;\n }\n return e.__extends(n, t), n.prototype.matches = function(t) {\n return this.keys.some((function(e) {\n return e.isEqual(t.key);\n }));\n }, n;\n}(It), At = /** @class */ function(t) {\n function n(e, n) {\n return t.call(this, e, bt.ARRAY_CONTAINS, n) || this;\n }\n return e.__extends(n, t), n.prototype.matches = function(t) {\n var e = t.field(this.field);\n return W(e) && j(e.arrayValue, this.value);\n }, n;\n}(It), St = /** @class */ function(t) {\n function n(e, n) {\n return t.call(this, e, bt.IN, n) || this;\n }\n return e.__extends(n, t), n.prototype.matches = function(t) {\n var e = t.field(this.field);\n return null !== e && j(this.value.arrayValue, e);\n }, n;\n}(It), Dt = /** @class */ function(t) {\n function n(e, n) {\n return t.call(this, e, bt.ARRAY_CONTAINS_ANY, n) || this;\n }\n return e.__extends(n, t), n.prototype.matches = function(t) {\n var e = this, n = t.field(this.field);\n return !(!W(n) || !n.arrayValue.values) && n.arrayValue.values.some((function(t) {\n return j(e.value.arrayValue, t);\n }));\n }, n;\n}(It), kt = /** @class */ function() {\n function t(t) {\n this.name = t;\n }\n return t.prototype.toString = function() {\n return this.name;\n }, t;\n}();\n\n/** Filter that matches on key fields (i.e. '__name__'). */ kt.ASCENDING = new kt(\"asc\"), \nkt.DESCENDING = new kt(\"desc\");\n\n/**\n * Represents a bound of a query.\n *\n * The bound is specified with the given components representing a position and\n * whether it's just before or just after the position (relative to whatever the\n * query order is).\n *\n * The position represents a logical index position for a query. It's a prefix\n * of values for the (potentially implicit) order by clauses of a query.\n *\n * Bound provides a function to determine whether a document comes before or\n * after a bound. This is influenced by whether the position is just before or\n * just after the provided values.\n */\nvar xt, Rt, Lt = /** @class */ function() {\n function t(t, e) {\n this.position = t, this.before = e;\n }\n return t.prototype.canonicalId = function() {\n // TODO(b/29183165): Make this collision robust.\n return (this.before ? \"b\" : \"a\") + \":\" + this.position.map((function(t) {\n return B(t);\n })).join(\",\");\n }, \n /**\n * Returns true if a document sorts before a bound using the provided sort\n * order.\n */\n t.prototype.Ye = function(t, e) {\n for (var n = 0, r = 0; r < this.position.length; r++) {\n var i = t[r], o = this.position[r];\n if (n = i.field.J() ? b.k(b.tt(o.referenceValue), e.key) : F(o, e.field(i.field)), \n i.dir === kt.DESCENDING && (n *= -1), 0 !== n) break;\n }\n return this.before ? n <= 0 : n < 0;\n }, t.prototype.isEqual = function(t) {\n if (null === t) return !1;\n if (this.before !== t.before || this.position.length !== t.position.length) return !1;\n for (var e = 0; e < this.position.length; e++) if (!M(this.position[e], t.position[e])) return !1;\n return !0;\n }, t;\n}(), Vt = /** @class */ function() {\n function t(t, e) {\n this.field = t, void 0 === e && (e = kt.ASCENDING), this.dir = e, this.Xe = t.J();\n }\n return t.prototype.compare = function(t, e) {\n var n = this.Xe ? mt.Ie(t, e) : mt.Ae(this.field, t, e);\n switch (this.dir) {\n case kt.ASCENDING:\n return n;\n\n case kt.DESCENDING:\n return -1 * n;\n\n default:\n return Ee();\n }\n }, t.prototype.canonicalId = function() {\n // TODO(b/29183165): Make this collision robust.\n return this.field.K() + this.dir.toString();\n }, t.prototype.toString = function() {\n return this.field.K() + \" (\" + this.dir + \")\";\n }, t.prototype.isEqual = function(t) {\n return this.dir === t.dir && this.field.isEqual(t.field);\n }, t;\n}(), Ot = new Vt(_.X(), kt.ASCENDING), Pt = new Vt(_.X(), kt.DESCENDING), Ct = /** @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 = m.MIN), void 0 === o && (o = m.MIN), void 0 === s && (s = R.xt), \n this.target = t, this.targetId = e, this.Ze = n, this.sequenceNumber = r, this.ts = i, \n this.lastLimboFreeSnapshotVersion = o, this.resumeToken = s;\n }\n /** Creates a new target data instance with an updated sequence number. */ return t.prototype.es = function(e) {\n return new t(this.target, this.targetId, this.Ze, e, this.ts, 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.ss = function(e, n) {\n return new t(this.target, this.targetId, this.Ze, 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.ns = function(e) {\n return new t(this.target, this.targetId, this.Ze, this.sequenceNumber, this.ts, e, this.resumeToken);\n }, t;\n}(), Ut = \n// TODO(b/33078163): just use simplest form of existence filter for now\nfunction(t) {\n this.count = t;\n};\n\n/**\n * An ordering on a field, in some Direction. Direction defaults to ASCENDING.\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 qt(t) {\n switch (t) {\n case h.OK:\n return Ee();\n\n case h.CANCELLED:\n case h.UNKNOWN:\n case h.DEADLINE_EXCEEDED:\n case h.RESOURCE_EXHAUSTED:\n case h.INTERNAL:\n case h.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 h.UNAUTHENTICATED:\n return !1;\n\n case h.INVALID_ARGUMENT:\n case h.NOT_FOUND:\n case h.ALREADY_EXISTS:\n case h.PERMISSION_DENIED:\n case h.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 h.ABORTED:\n case h.OUT_OF_RANGE:\n case h.UNIMPLEMENTED:\n case h.DATA_LOSS:\n return !0;\n\n default:\n return Ee();\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 Mt(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 ge(\"GRPC error has no .code\"), h.UNKNOWN;\n switch (t) {\n case xt.OK:\n return h.OK;\n\n case xt.CANCELLED:\n return h.CANCELLED;\n\n case xt.UNKNOWN:\n return h.UNKNOWN;\n\n case xt.DEADLINE_EXCEEDED:\n return h.DEADLINE_EXCEEDED;\n\n case xt.RESOURCE_EXHAUSTED:\n return h.RESOURCE_EXHAUSTED;\n\n case xt.INTERNAL:\n return h.INTERNAL;\n\n case xt.UNAVAILABLE:\n return h.UNAVAILABLE;\n\n case xt.UNAUTHENTICATED:\n return h.UNAUTHENTICATED;\n\n case xt.INVALID_ARGUMENT:\n return h.INVALID_ARGUMENT;\n\n case xt.NOT_FOUND:\n return h.NOT_FOUND;\n\n case xt.ALREADY_EXISTS:\n return h.ALREADY_EXISTS;\n\n case xt.PERMISSION_DENIED:\n return h.PERMISSION_DENIED;\n\n case xt.FAILED_PRECONDITION:\n return h.FAILED_PRECONDITION;\n\n case xt.ABORTED:\n return h.ABORTED;\n\n case xt.OUT_OF_RANGE:\n return h.OUT_OF_RANGE;\n\n case xt.UNIMPLEMENTED:\n return h.UNIMPLEMENTED;\n\n case xt.DATA_LOSS:\n return h.DATA_LOSS;\n\n default:\n return Ee();\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 */ (Rt = xt || (xt = {}))[Rt.OK = 0] = \"OK\", Rt[Rt.CANCELLED = 1] = \"CANCELLED\", \nRt[Rt.UNKNOWN = 2] = \"UNKNOWN\", Rt[Rt.INVALID_ARGUMENT = 3] = \"INVALID_ARGUMENT\", \nRt[Rt.DEADLINE_EXCEEDED = 4] = \"DEADLINE_EXCEEDED\", Rt[Rt.NOT_FOUND = 5] = \"NOT_FOUND\", \nRt[Rt.ALREADY_EXISTS = 6] = \"ALREADY_EXISTS\", Rt[Rt.PERMISSION_DENIED = 7] = \"PERMISSION_DENIED\", \nRt[Rt.UNAUTHENTICATED = 16] = \"UNAUTHENTICATED\", Rt[Rt.RESOURCE_EXHAUSTED = 8] = \"RESOURCE_EXHAUSTED\", \nRt[Rt.FAILED_PRECONDITION = 9] = \"FAILED_PRECONDITION\", Rt[Rt.ABORTED = 10] = \"ABORTED\", \nRt[Rt.OUT_OF_RANGE = 11] = \"OUT_OF_RANGE\", Rt[Rt.UNIMPLEMENTED = 12] = \"UNIMPLEMENTED\", \nRt[Rt.INTERNAL = 13] = \"INTERNAL\", Rt[Rt.UNAVAILABLE = 14] = \"UNAVAILABLE\", Rt[Rt.DATA_LOSS = 15] = \"DATA_LOSS\";\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 jt = new I(b.k);\n\nfunction Ft() {\n return jt;\n}\n\nfunction Gt() {\n return Ft();\n}\n\nvar Bt = new I(b.k);\n\nfunction zt() {\n return Bt;\n}\n\nvar Kt = new I(b.k);\n\nfunction Yt() {\n return Kt;\n}\n\nvar Qt = new A(b.k);\n\nfunction Zt() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n for (var n = Qt, 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 Wt = new A(Ie);\n\nfunction Ht() {\n return Wt;\n}\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 Xt = /** @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.k = t ? function(e, n) {\n return t(e, n) || b.k(e.key, n.key);\n } : function(t, e) {\n return b.k(t.key, e.key);\n }, this.rs = zt(), this.hs = new I(this.k)\n /**\n * Returns an empty copy of the existing DocumentSet, using the same\n * comparator.\n */;\n }\n return t.os = function(e) {\n return new t(e.k);\n }, t.prototype.has = function(t) {\n return null != this.rs.get(t);\n }, t.prototype.get = function(t) {\n return this.rs.get(t);\n }, t.prototype.first = function() {\n return this.hs.ot();\n }, t.prototype.last = function() {\n return this.hs.at();\n }, t.prototype.q = function() {\n return this.hs.q();\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.rs.get(t);\n return e ? this.hs.indexOf(e) : -1;\n }, Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this.hs.size;\n },\n enumerable: !0,\n configurable: !0\n }), \n /** Iterates documents in order defined by \"comparator\" */ t.prototype.forEach = function(t) {\n this.hs.ut((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.rt(e.rs.nt(t.key, t), e.hs.nt(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.rt(this.rs.remove(t), this.hs.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.hs._t(), r = e.hs._t(); n.wt(); ) {\n var i = n.It().key, o = r.It().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.rt = function(e, n) {\n var r = new t;\n return r.k = this.k, r.rs = e, r.hs = n, r;\n }, t;\n}(), Jt = /** @class */ function() {\n function t() {\n this.as = new I(b.k);\n }\n return t.prototype.track = function(t) {\n var e = t.doc.key, n = this.as.get(e);\n n ? \n // Merge the new change with the existing change.\n 0 /* Added */ !== t.type && 3 /* Metadata */ === n.type ? this.as = this.as.nt(e, t) : 3 /* Metadata */ === t.type && 1 /* Removed */ !== n.type ? this.as = this.as.nt(e, {\n type: n.type,\n doc: t.doc\n }) : 2 /* Modified */ === t.type && 2 /* Modified */ === n.type ? this.as = this.as.nt(e, {\n type: 2 /* Modified */ ,\n doc: t.doc\n }) : 2 /* Modified */ === t.type && 0 /* Added */ === n.type ? this.as = this.as.nt(e, {\n type: 0 /* Added */ ,\n doc: t.doc\n }) : 1 /* Removed */ === t.type && 0 /* Added */ === n.type ? this.as = this.as.remove(e) : 1 /* Removed */ === t.type && 2 /* Modified */ === n.type ? this.as = this.as.nt(e, {\n type: 1 /* Removed */ ,\n doc: n.doc\n }) : 0 /* Added */ === t.type && 1 /* Removed */ === n.type ? this.as = this.as.nt(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 Ee() : this.as = this.as.nt(e, t);\n }, t.prototype.us = function() {\n var t = [];\n return this.as.ut((function(e, n) {\n t.push(n);\n })), t;\n }, t;\n}(), $t = /** @class */ function() {\n function t(t, e, n, r, i, o, s, u) {\n this.query = t, this.docs = e, this.cs = n, this.docChanges = r, this._s = i, this.fromCache = o, \n this.ls = s, this.ds = u\n /** Returns a view snapshot as if all documents in the snapshot were added. */;\n }\n return t.fs = 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, Xt.os(n), o, r, i, \n /* syncStateChanged= */ !0, \n /* excludesMetadataChanges= */ !1);\n }, Object.defineProperty(t.prototype, \"hasPendingWrites\", {\n get: function() {\n return !this._s.q();\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.isEqual = function(t) {\n if (!(this.fromCache === t.fromCache && this.ls === t.ls && this._s.isEqual(t._s) && this.query.isEqual(t.query) && this.docs.isEqual(t.docs) && this.cs.isEqual(t.cs))) 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}(), te = /** @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.ts = t, this.Ts = e, this.Es = n, this.Is = r, this.ws = 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.Rs = function(e, n) {\n var r = new Map;\n return r.set(e, ee.As(e, n)), new t(m.MIN, r, Ht(), Ft(), Zt());\n }, t;\n}(), ee = /** @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.ms = e, this.Ps = n, this.Vs = r, this.gs = 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.As = function(e, n) {\n return new t(R.xt, n, Zt(), Zt(), Zt());\n }, t;\n}(), ne = 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.ps = t, this.removedTargetIds = e, this.key = n, this.ys = r;\n}, re = function(t, e) {\n this.targetId = t, this.bs = e;\n}, ie = 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 = R.xt), void 0 === r && (r = null), this.state = t, this.targetIds = e, \n this.resumeToken = n, this.cause = r;\n}, oe = /** @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.vs = 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.Ss = ae(), \n /** See public getters for explanations of these fields. */\n this.Ds = R.xt, this.Cs = !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.Fs = !0;\n }\n return Object.defineProperty(t.prototype, \"ms\", {\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.Cs;\n },\n enumerable: !0,\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.Ds;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"Ns\", {\n /** Whether this target has pending target adds or target removes. */ get: function() {\n return 0 !== this.vs;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"ks\", {\n /** Whether we have modified any state that should trigger a snapshot. */ get: function() {\n return this.Fs;\n },\n enumerable: !0,\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.$s = function(t) {\n t.Ot() > 0 && (this.Fs = !0, this.Ds = 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.Ms = function() {\n var t = Zt(), e = Zt(), n = Zt();\n return this.Ss.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 Ee();\n }\n })), new ee(this.Ds, this.Cs, t, e, n);\n }, \n /**\n * Resets the document changes and sets `hasPendingChanges` to false.\n */\n t.prototype.Ls = function() {\n this.Fs = !1, this.Ss = ae();\n }, t.prototype.Os = function(t, e) {\n this.Fs = !0, this.Ss = this.Ss.nt(t, e);\n }, t.prototype.xs = function(t) {\n this.Fs = !0, this.Ss = this.Ss.remove(t);\n }, t.prototype.Bs = function() {\n this.vs += 1;\n }, t.prototype.qs = function() {\n this.vs -= 1;\n }, t.prototype.Us = function() {\n this.Fs = !0, this.Cs = !0;\n }, t;\n}(), se = /** @class */ function() {\n function t(t) {\n this.Qs = t, \n /** The internal state of all tracked targets. */\n this.Ws = new Map, \n /** Keeps track of the documents to update since the last raised snapshot. */\n this.js = Ft(), \n /** A mapping of document keys to their set of target IDs. */\n this.Ks = ue(), \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.Gs = new A(Ie)\n /**\n * Processes and adds the DocumentWatchChange to the current set of changes.\n */;\n }\n return t.prototype.zs = function(t) {\n for (var e = 0, n = t.ps; e < n.length; e++) {\n var r = n[e];\n t.ys instanceof mt ? this.Hs(r, t.ys) : t.ys instanceof gt && this.Ys(r, t.key, t.ys);\n }\n for (var i = 0, o = t.removedTargetIds; i < o.length; i++) {\n var s = o[i];\n this.Ys(s, t.key, t.ys);\n }\n }, \n /** Processes and adds the WatchTargetChange to the current set of changes. */ t.prototype.Js = function(t) {\n var e = this;\n this.Xs(t, (function(n) {\n var r = e.Zs(n);\n switch (t.state) {\n case 0 /* NoChange */ :\n e.ti(n) && r.$s(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.qs(), r.Ns || \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.Ls(), r.$s(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.qs(), r.Ns || e.removeTarget(n);\n break;\n\n case 3 /* Current */ :\n e.ti(n) && (r.Us(), r.$s(t.resumeToken));\n break;\n\n case 4 /* Reset */ :\n e.ti(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.ei(n), r.$s(t.resumeToken));\n break;\n\n default:\n Ee();\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.Xs = function(t, e) {\n var n = this;\n t.targetIds.length > 0 ? t.targetIds.forEach(e) : this.Ws.forEach((function(t, r) {\n n.ti(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.si = function(t) {\n var e = t.targetId, n = t.bs.count, r = this.ii(e);\n if (r) {\n var i = r.target;\n if (i.Pe()) 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 b(i.path);\n this.Ys(e, o, new gt(o, m.S()));\n } else _e(1 === n); else this.ni(e) !== n && (\n // Existence filter mismatch: We reset the mapping and raise a new\n // snapshot with `isFromCache:true`.\n this.ei(e), this.Gs = this.Gs.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.ri = function(t) {\n var e = this, n = new Map;\n this.Ws.forEach((function(r, i) {\n var o = e.ii(i);\n if (o) {\n if (r.ms && o.target.Pe()) {\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 b(o.target.path);\n null !== e.js.get(s) || e.hi(i, s) || e.Ys(i, s, new gt(s, t));\n }\n r.ks && (n.set(i, r.Ms()), r.Ls());\n }\n }));\n var r = Zt();\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.Ks.forEach((function(t, n) {\n var i = !0;\n n.Ft((function(t) {\n var n = e.ii(t);\n return !n || 2 /* LimboResolution */ === n.Ze || (i = !1, !1);\n })), i && (r = r.add(t));\n }));\n var i = new te(t, n, this.Gs, this.js, r);\n return this.js = Ft(), this.Ks = ue(), this.Gs = new A(Ie), 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.Hs = function(t, e) {\n if (this.ti(t)) {\n var n = this.hi(t, e.key) ? 2 /* Modified */ : 0 /* Added */;\n this.Zs(t).Os(e.key, n), this.js = this.js.nt(e.key, e), this.Ks = this.Ks.nt(e.key, this.oi(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.Ys = function(t, e, n) {\n if (this.ti(t)) {\n var r = this.Zs(t);\n this.hi(t, e) ? r.Os(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.xs(e), this.Ks = this.Ks.nt(e, this.oi(e).delete(t)), n && (this.js = this.js.nt(e, n));\n }\n }, t.prototype.removeTarget = function(t) {\n this.Ws.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.ni = function(t) {\n var e = this.Zs(t).Ms();\n return this.Qs.ai(t).size + e.Ps.size - e.gs.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.Bs = function(t) {\n this.Zs(t).Bs();\n }, t.prototype.Zs = function(t) {\n var e = this.Ws.get(t);\n return e || (e = new oe, this.Ws.set(t, e)), e;\n }, t.prototype.oi = function(t) {\n var e = this.Ks.get(t);\n return e || (e = new A(Ie), this.Ks = this.Ks.nt(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.ti = function(t) {\n var e = null !== this.ii(t);\n return e || me(\"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.ii = function(t) {\n var e = this.Ws.get(t);\n return e && e.Ns ? null : this.Qs.ui(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.ei = function(t) {\n var e = this;\n this.Ws.set(t, new oe), this.Qs.ai(t).forEach((function(n) {\n e.Ys(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.hi = function(t, e) {\n return this.Qs.ai(t).has(e);\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 ue() {\n return new I(b.k);\n}\n\nfunction ae() {\n return new I(b.k);\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 he = function() {\n var t = {};\n return t[kt.ASCENDING.name] = \"ASCENDING\", t[kt.DESCENDING.name] = \"DESCENDING\", \n t;\n}(), ce = function() {\n var t = {};\n return t[bt.LESS_THAN.name] = \"LESS_THAN\", t[bt.LESS_THAN_OR_EQUAL.name] = \"LESS_THAN_OR_EQUAL\", \n t[bt.GREATER_THAN.name] = \"GREATER_THAN\", t[bt.GREATER_THAN_OR_EQUAL.name] = \"GREATER_THAN_OR_EQUAL\", \n t[bt.EQUAL.name] = \"EQUAL\", t[bt.ARRAY_CONTAINS.name] = \"ARRAY_CONTAINS\", t[bt.IN.name] = \"IN\", \n t[bt.ARRAY_CONTAINS_ANY.name] = \"ARRAY_CONTAINS_ANY\", t;\n}(), fe = /** @class */ function() {\n function t(t, e) {\n this.ci = t, this.options = e;\n }\n return t.prototype._i = function(t) {\n var e = void 0 === t.code ? h.UNKNOWN : Mt(t.code);\n return new c(e, t.message || \"\");\n }, \n /**\n * Returns a value for a number (or null) that's appropriate to put into\n * a google.protobuf.Int32Value proto.\n * DO NOT USE THIS FOR ANYTHING ELSE.\n * This method cheats. It's typed as returning \"number\" because that's what\n * our generated proto interfaces say Int32Value must be. But GRPC actually\n * expects a { value: <number> } struct.\n */\n t.prototype.li = function(t) {\n return this.options.di || L(t) ? t : {\n value: t\n };\n }, \n /**\n * Returns a number (or null) from a google.protobuf.Int32Value proto.\n */\n t.prototype.fi = function(t) {\n var e;\n return L(e = \"object\" == typeof t ? t.value : t) ? null : e;\n }, \n /**\n * Returns an IntegerValue for `value`.\n */\n t.prototype.Wt = function(t) {\n return {\n integerValue: \"\" + t\n };\n }, \n /**\n * Returns an DoubleValue for `value` that is encoded based the serializer's\n * `useProto3Json` setting.\n */\n t.prototype.jt = function(t) {\n if (this.options.di) {\n if (isNaN(t)) return {\n doubleValue: \"NaN\"\n };\n if (t === 1 / 0) return {\n doubleValue: \"Infinity\"\n };\n if (t === -1 / 0) return {\n doubleValue: \"-Infinity\"\n };\n }\n return {\n doubleValue: V(t) ? \"-0\" : t\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 */\n t.prototype.Ti = function(t) {\n return O(t) ? this.Wt(t) : this.jt(t);\n }, \n /**\n * Returns a value for a Date that's appropriate to put into a proto.\n */\n t.prototype.F = function(t) {\n return this.options.di ? new Date(1e3 * t.seconds).toISOString().replace(/\\.\\d*/, \"\").replace(\"Z\", \"\") + \".\" + (\"000000000\" + t.nanoseconds).slice(-9) + \"Z\" : {\n seconds: \"\" + t.seconds,\n nanos: t.nanoseconds\n };\n }, t.prototype.v = function(t) {\n var e = z(t);\n return new v(e.seconds, e.nanos);\n }, \n /**\n * Returns a value for bytes that's appropriate to put in a proto.\n *\n * Visible for testing.\n */\n t.prototype.Ei = function(t) {\n return this.options.di ? t.toBase64() : t.toUint8Array();\n }, \n /**\n * Returns a ByteString based on the proto string value.\n */\n t.prototype.Ii = function(t) {\n return this.options.di ? (_e(void 0 === t || \"string\" == typeof t), R.fromBase64String(t || \"\")) : (_e(void 0 === t || t instanceof Uint8Array), \n R.fromUint8Array(t || new Uint8Array));\n }, t.prototype.toVersion = function(t) {\n return this.F(t.F());\n }, t.prototype.fromVersion = function(t) {\n return _e(!!t), m.v(this.v(t));\n }, t.prototype.wi = function(t, e) {\n return this.Ri(e || this.ci).child(\"documents\").child(t).K();\n }, t.prototype.Ai = function(t) {\n var e = w.G(t);\n return _e(le(e)), e;\n }, t.prototype.mi = function(t) {\n return this.wi(t.path);\n }, t.prototype.tt = function(t) {\n var e = this.Ai(t);\n return _e(e.get(1) === this.ci.projectId), _e(!e.get(3) && !this.ci.database || e.get(3) === this.ci.database), \n new b(this.Pi(e));\n }, t.prototype.Vi = function(t) {\n return this.wi(t);\n }, t.prototype.gi = function(t) {\n var e = this.Ai(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 ? w.H : this.Pi(e);\n }, Object.defineProperty(t.prototype, \"pi\", {\n get: function() {\n return new w([ \"projects\", this.ci.projectId, \"databases\", this.ci.database ]).K();\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.Ri = function(t) {\n return new w([ \"projects\", t.projectId, \"databases\", t.database ]);\n }, t.prototype.Pi = function(t) {\n return _e(t.length > 4 && \"documents\" === t.get(4)), t.M(5);\n }, \n /** Creates an api.Document from key and fields (but no create/update time) */ t.prototype.yi = function(t, e) {\n return {\n name: this.mi(t),\n fields: e.proto.mapValue.fields\n };\n }, t.prototype.bi = function(t) {\n return {\n name: this.mi(t.key),\n fields: t.Re().mapValue.fields,\n updateTime: this.F(t.version.F())\n };\n }, t.prototype.vi = function(t, e) {\n var n = this.tt(t.name), r = this.fromVersion(t.updateTime), i = new dt({\n mapValue: {\n fields: t.fields\n }\n });\n return new mt(n, r, i, {\n hasCommittedMutations: !!e\n });\n }, t.prototype.Si = function(t) {\n _e(!!t.found), t.found.name, t.found.updateTime;\n var e = this.tt(t.found.name), n = this.fromVersion(t.found.updateTime), r = new dt({\n mapValue: {\n fields: t.found.fields\n }\n });\n return new mt(e, n, r, {});\n }, t.prototype.Di = function(t) {\n _e(!!t.missing), _e(!!t.readTime);\n var e = this.tt(t.missing), n = this.fromVersion(t.readTime);\n return new gt(e, n);\n }, t.prototype.Ci = function(t) {\n return \"found\" in t ? this.Si(t) : \"missing\" in t ? this.Di(t) : Ee();\n }, t.prototype.Fi = function(t) {\n var e;\n if (\"targetChange\" in t) {\n t.targetChange;\n // proto3 default value is unset in JSON (undefined), so use 'NO_CHANGE'\n // if unset\n var n = this.Ni(t.targetChange.targetChangeType || \"NO_CHANGE\"), r = t.targetChange.targetIds || [], i = this.Ii(t.targetChange.resumeToken), o = t.targetChange.cause, s = o && this._i(o);\n e = new ie(n, r, i, s || null);\n } else if (\"documentChange\" in t) {\n t.documentChange;\n var u = t.documentChange;\n u.document, u.document.name, u.document.updateTime;\n var a = this.tt(u.document.name), h = this.fromVersion(u.document.updateTime), c = new dt({\n mapValue: {\n fields: u.document.fields\n }\n }), f = new mt(a, h, c, {}), l = u.targetIds || [], p = u.removedTargetIds || [];\n e = new ne(l, p, f.key, f);\n } else if (\"documentDelete\" in t) {\n t.documentDelete;\n var d = t.documentDelete;\n d.document;\n var y = this.tt(d.document), v = d.readTime ? this.fromVersion(d.readTime) : m.S(), g = new gt(y, v), w = d.removedTargetIds || [];\n e = new ne([], w, g.key, g);\n } else if (\"documentRemove\" in t) {\n t.documentRemove;\n var E = t.documentRemove;\n E.document;\n var _ = this.tt(E.document), b = E.removedTargetIds || [];\n e = new ne([], b, _, null);\n } else {\n if (!(\"filter\" in t)) return Ee();\n t.filter;\n var I = t.filter;\n I.targetId;\n var T = I.count || 0, N = new Ut(T), A = I.targetId;\n e = new re(A, N);\n }\n return e;\n }, t.prototype.Ni = 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 */ : Ee();\n }, t.prototype.ki = 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 m.MIN;\n var e = t.targetChange;\n return e.targetIds && e.targetIds.length ? m.MIN : e.readTime ? this.fromVersion(e.readTime) : m.MIN;\n }, t.prototype.$i = function(t) {\n var e, n = this;\n if (t instanceof ht) e = {\n update: this.yi(t.key, t.value)\n }; else if (t instanceof lt) e = {\n delete: this.mi(t.key)\n }; else if (t instanceof ct) e = {\n update: this.yi(t.key, t.data),\n updateMask: this.Mi(t.se)\n }; else if (t instanceof ft) e = {\n transform: {\n document: this.mi(t.key),\n fieldTransforms: t.fieldTransforms.map((function(t) {\n return n.Li(t);\n }))\n }\n }; else {\n if (!(t instanceof pt)) return Ee();\n e = {\n verify: this.mi(t.key)\n };\n }\n return t.Zt.Ht || (e.currentDocument = this.Oi(t.Zt)), e;\n }, t.prototype.xi = function(t) {\n var e = this, n = t.currentDocument ? this.Bi(t.currentDocument) : ut.NONE;\n if (t.update) {\n t.update.name;\n var r = this.tt(t.update.name), i = new dt({\n mapValue: {\n fields: t.update.fields\n }\n });\n if (t.updateMask) {\n var o = this.qi(t.updateMask);\n return new ct(r, i, o, n);\n }\n return new ht(r, i, n);\n }\n if (t.delete) {\n var s = this.tt(t.delete);\n return new lt(s, n);\n }\n if (t.transform) {\n var u = this.tt(t.transform.document), a = t.transform.fieldTransforms.map((function(t) {\n return e.Ui(t);\n }));\n return _e(!0 === n.exists), new ft(u, a);\n }\n if (t.verify) {\n var h = this.tt(t.verify);\n return new pt(h, n);\n }\n return Ee();\n }, t.prototype.Oi = function(t) {\n return void 0 !== t.updateTime ? {\n updateTime: this.toVersion(t.updateTime)\n } : void 0 !== t.exists ? {\n exists: t.exists\n } : Ee();\n }, t.prototype.Bi = function(t) {\n return void 0 !== t.updateTime ? ut.updateTime(this.fromVersion(t.updateTime)) : void 0 !== t.exists ? ut.exists(t.exists) : ut.NONE;\n }, t.prototype.Qi = function(t, e) {\n // NOTE: Deletes don't have an updateTime.\n var n = t.updateTime ? this.fromVersion(t.updateTime) : this.fromVersion(e);\n n.isEqual(m.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 = this.fromVersion(e));\n var r = null;\n return t.transformResults && t.transformResults.length > 0 && (r = t.transformResults), \n new st(n, r);\n }, t.prototype.Wi = function(t, e) {\n var n = this;\n return t && t.length > 0 ? (_e(void 0 !== e), t.map((function(t) {\n return n.Qi(t, e);\n }))) : [];\n }, t.prototype.Li = function(t) {\n var e = t.transform;\n if (e instanceof $) return {\n fieldPath: t.field.K(),\n setToServerValue: \"REQUEST_TIME\"\n };\n if (e instanceof tt) return {\n fieldPath: t.field.K(),\n appendMissingElements: {\n values: e.elements\n }\n };\n if (e instanceof et) return {\n fieldPath: t.field.K(),\n removeAllFromArray: {\n values: e.elements\n }\n };\n if (e instanceof nt) return {\n fieldPath: t.field.K(),\n increment: e.Qt\n };\n throw Ee();\n }, t.prototype.Ui = function(t) {\n var e = null;\n if (\"setToServerValue\" in t) _e(\"REQUEST_TIME\" === t.setToServerValue), e = $.instance; else if (\"appendMissingElements\" in t) {\n var n = t.appendMissingElements.values || [];\n e = new tt(n);\n } else if (\"removeAllFromArray\" in t) {\n var r = t.removeAllFromArray.values || [];\n e = new et(r);\n } else \"increment\" in t ? e = new nt(this, t.increment) : Ee();\n var i = _.Z(t.fieldPath);\n return new ot(i, e);\n }, t.prototype.ji = function(t) {\n return {\n documents: [ this.Vi(t.path) ]\n };\n }, t.prototype.Ki = function(t) {\n _e(1 === t.documents.length);\n var e = t.documents[0];\n return _t.ve(this.gi(e)).xe();\n }, t.prototype.Gi = function(t) {\n // Dissect the path into parent, collectionId, and optional key filter.\n var e = {\n structuredQuery: {}\n }, n = t.path;\n null !== t.collectionGroup ? (e.parent = this.Vi(n), e.structuredQuery.from = [ {\n collectionId: t.collectionGroup,\n allDescendants: !0\n } ]) : (e.parent = this.Vi(n.L()), e.structuredQuery.from = [ {\n collectionId: n.B()\n } ]);\n var r = this.zi(t.filters);\n r && (e.structuredQuery.where = r);\n var i = this.Hi(t.orderBy);\n i && (e.structuredQuery.orderBy = i);\n var o = this.li(t.limit);\n return null !== o && (e.structuredQuery.limit = o), t.startAt && (e.structuredQuery.startAt = this.Yi(t.startAt)), \n t.endAt && (e.structuredQuery.endAt = this.Yi(t.endAt)), e;\n }, t.prototype.Ji = function(t) {\n var e = this.gi(t.parent), n = t.structuredQuery, r = n.from ? n.from.length : 0, i = null;\n if (r > 0) {\n _e(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 = this.Xi(n.where));\n var u = [];\n n.orderBy && (u = this.Zi(n.orderBy));\n var a = null;\n n.limit && (a = this.fi(n.limit));\n var h = null;\n n.startAt && (h = this.tn(n.startAt));\n var c = null;\n return n.endAt && (c = this.tn(n.endAt)), new _t(e, i, u, s, a, \"F\" /* First */ , h, c).xe();\n }, t.prototype.en = function(t) {\n var e = this.sn(t.Ze);\n return null == e ? null : {\n \"goog-listen-tags\": e\n };\n }, t.prototype.sn = function(t) {\n switch (t) {\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 Ee();\n }\n }, t.prototype.xe = function(t) {\n var e, n = t.target;\n return (e = n.Pe() ? {\n documents: this.ji(n)\n } : {\n query: this.Gi(n)\n }).targetId = t.targetId, t.resumeToken.Ot() > 0 && (e.resumeToken = this.Ei(t.resumeToken)), \n e;\n }, t.prototype.zi = function(t) {\n var e = this;\n if (0 !== t.length) {\n var n = t.map((function(t) {\n return t instanceof It ? e.in(t) : Ee();\n }));\n return 1 === n.length ? n[0] : {\n compositeFilter: {\n op: \"AND\",\n filters: n\n }\n };\n }\n }, t.prototype.Xi = function(t) {\n var e = this;\n return t ? void 0 !== t.unaryFilter ? [ this.nn(t) ] : void 0 !== t.fieldFilter ? [ this.rn(t) ] : void 0 !== t.compositeFilter ? t.compositeFilter.filters.map((function(t) {\n return e.Xi(t);\n })).reduce((function(t, e) {\n return t.concat(e);\n })) : Ee() : [];\n }, t.prototype.Hi = function(t) {\n var e = this;\n if (0 !== t.length) return t.map((function(t) {\n return e.hn(t);\n }));\n }, t.prototype.Zi = function(t) {\n var e = this;\n return t.map((function(t) {\n return e.on(t);\n }));\n }, t.prototype.Yi = function(t) {\n return {\n before: t.before,\n values: t.position\n };\n }, t.prototype.tn = function(t) {\n var e = !!t.before, n = t.values || [];\n return new Lt(n, e);\n }, \n // visible for testing\n t.prototype.an = function(t) {\n return he[t.name];\n }, \n // visible for testing\n t.prototype.un = function(t) {\n switch (t) {\n case \"ASCENDING\":\n return kt.ASCENDING;\n\n case \"DESCENDING\":\n return kt.DESCENDING;\n\n default:\n return;\n }\n }, \n // visible for testing\n t.prototype.cn = function(t) {\n return ce[t.name];\n }, t.prototype._n = function(t) {\n switch (t) {\n case \"EQUAL\":\n return bt.EQUAL;\n\n case \"GREATER_THAN\":\n return bt.GREATER_THAN;\n\n case \"GREATER_THAN_OR_EQUAL\":\n return bt.GREATER_THAN_OR_EQUAL;\n\n case \"LESS_THAN\":\n return bt.LESS_THAN;\n\n case \"LESS_THAN_OR_EQUAL\":\n return bt.LESS_THAN_OR_EQUAL;\n\n case \"ARRAY_CONTAINS\":\n return bt.ARRAY_CONTAINS;\n\n case \"IN\":\n return bt.IN;\n\n case \"ARRAY_CONTAINS_ANY\":\n return bt.ARRAY_CONTAINS_ANY;\n\n case \"OPERATOR_UNSPECIFIED\":\n default:\n return Ee();\n }\n }, t.prototype.ln = function(t) {\n return {\n fieldPath: t.K()\n };\n }, t.prototype.dn = function(t) {\n return _.Z(t.fieldPath);\n }, \n // visible for testing\n t.prototype.hn = function(t) {\n return {\n field: this.ln(t.field),\n direction: this.an(t.dir)\n };\n }, t.prototype.on = function(t) {\n return new Vt(this.dn(t.field), this.un(t.direction));\n }, t.prototype.rn = function(t) {\n return It.create(this.dn(t.fieldFilter.field), this._n(t.fieldFilter.op), t.fieldFilter.value);\n }, \n // visible for testing\n t.prototype.in = function(t) {\n if (t.op === bt.EQUAL) {\n if (X(t.value)) return {\n unaryFilter: {\n field: this.ln(t.field),\n op: \"IS_NAN\"\n }\n };\n if (H(t.value)) return {\n unaryFilter: {\n field: this.ln(t.field),\n op: \"IS_NULL\"\n }\n };\n }\n return {\n fieldFilter: {\n field: this.ln(t.field),\n op: this.cn(t.op),\n value: t.value\n }\n };\n }, t.prototype.nn = function(t) {\n switch (t.unaryFilter.op) {\n case \"IS_NAN\":\n var e = this.dn(t.unaryFilter.field);\n return It.create(e, bt.EQUAL, {\n doubleValue: NaN\n });\n\n case \"IS_NULL\":\n var n = this.dn(t.unaryFilter.field);\n return It.create(n, bt.EQUAL, {\n nullValue: \"NULL_VALUE\"\n });\n\n case \"OPERATOR_UNSPECIFIED\":\n default:\n return Ee();\n }\n }, t.prototype.Mi = function(t) {\n var e = [];\n return t.fields.forEach((function(t) {\n return e.push(t.K());\n })), {\n fieldPaths: e\n };\n }, t.prototype.qi = function(t) {\n var e = (t.fieldPaths || []).map((function(t) {\n return _.Z(t);\n }));\n return it.Gt(e);\n }, t;\n}();\n\n/**\n * Generates JsonObject values for the Datastore API suitable for sending to\n * either GRPC stub methods or via the JSON/HTTP REST API.\n * TODO(klimt): We can remove the databaseId argument if we keep the full\n * resource name in documents.\n */ function le(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 * Provides singleton helpers where setup code can inject a platform at runtime.\n * setPlatform needs to be set before Firestore is used and must be set exactly\n * once.\n */ var pe = /** @class */ function() {\n function t() {}\n return t.fn = function(e) {\n t.platform && Ee(), t.platform = e;\n }, t.Lt = function() {\n return t.platform || Ee(), t.platform;\n }, t;\n}(), de = new r.Logger(\"@firebase/firestore\");\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 methods are needed because variables can't be exported as read/write\nfunction ye() {\n return de.logLevel;\n}\n\nfunction ve(t) {\n de.logLevel = t;\n}\n\nfunction me(t) {\n for (var n = [], i = 1; i < arguments.length; i++) n[i - 1] = arguments[i];\n if (de.logLevel <= r.LogLevel.DEBUG) {\n var o = n.map(we);\n de.debug.apply(de, e.__spreadArrays([ \"Firestore (\" + u + \"): \" + t ], o));\n }\n}\n\nfunction ge(t) {\n for (var n = [], i = 1; i < arguments.length; i++) n[i - 1] = arguments[i];\n if (de.logLevel <= r.LogLevel.ERROR) {\n var o = n.map(we);\n de.error.apply(de, e.__spreadArrays([ \"Firestore (\" + u + \"): \" + t ], o));\n }\n}\n\n/**\n * Converts an additional log parameter to a string representation.\n */ function we(t) {\n if (\"string\" == typeof t) return t;\n var e = pe.Lt();\n try {\n return e.Tn(t);\n } catch (e) {\n // Converting to JSON failed, just log the object directly\n return t;\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 */\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 Ee(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 (\" + u + \") 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 ge(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 _e(t, e) {\n t || Ee();\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 be = /** @class */ function() {\n function t() {}\n return t.En = function() {\n for (\n // Alphanumeric characters\n var t = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", e = \"\", n = 0; n < 20; n++) e += t.charAt(Math.floor(Math.random() * t.length));\n return e;\n }, t;\n}();\n\nfunction Ie(t, e) {\n return t < e ? -1 : t > e ? 1 : 0;\n}\n\n/** Helper to compare arrays using isEqual(). */ function Te(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 Ne(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 Inc.\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 Ae = \n/**\n * Constructs a DatabaseInfo using the provided host, databaseId and\n * persistenceKey.\n *\n * @param databaseId The database to use.\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 */\nfunction(t, e, n, r, i) {\n this.ci = t, this.persistenceKey = e, this.host = n, this.ssl = r, this.forceLongPolling = i;\n}, Se = /** @class */ function() {\n function t(t, e) {\n this.projectId = t, this.database = e || \"(default)\";\n }\n return Object.defineProperty(t.prototype, \"In\", {\n get: function() {\n return \"(default)\" === this.database;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.isEqual = function(e) {\n return e instanceof t && e.projectId === this.projectId && e.database === this.database;\n }, t.prototype.D = function(t) {\n return Ie(this.projectId, t.projectId) || Ie(this.database, t.database);\n }, t;\n}(), De = /** @class */ function() {\n function t(t) {\n this.wn = t, \n /**\n * The inner map for a key -> value pair. Due to the possibility of\n * collisions we keep a list of entries that we do a linear search through\n * to find an actual match. Note that collisions should be rare, so we still\n * expect near constant time lookups in practice.\n */\n this.Rn = {}\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.wn(t), n = this.Rn[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 (s.isEqual(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.wn(t), r = this.Rn[n];\n if (void 0 !== r) {\n for (var i = 0; i < r.length; i++) if (r[i][0].isEqual(t)) return void (r[i] = [ t, e ]);\n r.push([ t, e ]);\n } else this.Rn[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.wn(t), n = this.Rn[e];\n if (void 0 === n) return !1;\n for (var r = 0; r < n.length; r++) if (n[r][0].isEqual(t)) return 1 === n.length ? delete this.Rn[e] : n.splice(r, 1), \n !0;\n return !1;\n }, t.prototype.forEach = function(t) {\n k(this.Rn, (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.q = function() {\n return x(this.Rn);\n }, t;\n}(), ke = /** @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.An = e, this.baseMutations = n, this.mutations = r\n /**\n * Applies all the mutations in this MutationBatch to the specified document\n * to create a new remote document\n *\n * @param docKey The key of the document to apply mutations to.\n * @param maybeDoc 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.qt = function(t, e, n) {\n for (var r = n.mn, i = 0; i < this.mutations.length; i++) {\n var o = this.mutations[i];\n if (o.key.isEqual(t)) {\n var s = r[i];\n e = o.qt(e, s);\n }\n }\n return e;\n }, \n /**\n * Computes the local view of a document given all the mutations in this\n * batch.\n *\n * @param docKey The key of the document to apply mutations to.\n * @param maybeDoc The document to apply mutations to.\n */\n t.prototype.Bt = function(t, e) {\n // First, apply the base state. This allows us to apply non-idempotent\n // transform against a consistent set of values.\n for (var n = 0, r = this.baseMutations; n < r.length; n++) {\n var i = r[n];\n i.key.isEqual(t) && (e = i.Bt(e, e, this.An));\n }\n // Second, apply all user-provided mutations.\n for (var o = e, s = 0, u = this.mutations; s < u.length; s++) {\n var a = u[s];\n a.key.isEqual(t) && (e = a.Bt(e, o, this.An));\n }\n return e;\n }, \n /**\n * Computes the local view for all provided documents given the mutations in\n * this batch.\n */\n t.prototype.Pn = function(t) {\n var e = this, n = t;\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 return this.mutations.forEach((function(r) {\n var i = e.Bt(r.key, t.get(r.key));\n i && (n = n.nt(r.key, i));\n })), n;\n }, t.prototype.keys = function() {\n return this.mutations.reduce((function(t, e) {\n return t.add(e.key);\n }), Zt());\n }, t.prototype.isEqual = function(t) {\n return this.batchId === t.batchId && Te(this.mutations, t.mutations, (function(t, e) {\n return t.isEqual(e);\n })) && Te(this.baseMutations, t.baseMutations, (function(t, e) {\n return t.isEqual(e);\n }));\n }, t;\n}(), xe = /** @class */ function() {\n function t(t, e, n, r, \n /**\n * A pre-computed mapping from each mutated document to the resulting\n * version.\n */\n i) {\n this.batch = t, this.Vn = e, this.mn = n, this.streamToken = r, this.gn = i\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, i) {\n _e(e.mutations.length === r.length);\n for (var o = Yt(), s = e.mutations, u = 0; u < s.length; u++) o = o.nt(s[u].key, r[u].version);\n return new t(e, n, r, i, o);\n }, t;\n}(), Re = /** @class */ function() {\n function t() {\n // A set of outstanding references to a document sorted by key.\n this.pn = new A(Le.Ie), \n // A set of outstanding references to a document sorted by target id.\n this.yn = new A(Le.bn)\n /** Returns true if the reference set contains no references. */;\n }\n return t.prototype.q = function() {\n return this.pn.q();\n }, \n /** Adds a reference to the given document key for the given ID. */ t.prototype.vn = function(t, e) {\n var n = new Le(t, e);\n this.pn = this.pn.add(n), this.yn = this.yn.add(n);\n }, \n /** Add references to the given document keys for the given ID. */ t.prototype.Sn = function(t, e) {\n var n = this;\n t.forEach((function(t) {\n return n.vn(t, e);\n }));\n }, \n /**\n * Removes a reference to the given document key for the given\n * ID.\n */\n t.prototype.Dn = function(t, e) {\n this.Cn(new Le(t, e));\n }, t.prototype.Fn = function(t, e) {\n var n = this;\n t.forEach((function(t) {\n return n.Dn(t, e);\n }));\n }, \n /**\n * Clears all references with a given ID. Calls removeRef() for each key\n * removed.\n */\n t.prototype.Nn = function(t) {\n var e = this, n = b.EMPTY, r = new Le(n, t), i = new Le(n, t + 1), o = [];\n return this.yn.Ct([ r, i ], (function(t) {\n e.Cn(t), o.push(t.key);\n })), o;\n }, t.prototype.kn = function() {\n var t = this;\n this.pn.forEach((function(e) {\n return t.Cn(e);\n }));\n }, t.prototype.Cn = function(t) {\n this.pn = this.pn.delete(t), this.yn = this.yn.delete(t);\n }, t.prototype.$n = function(t) {\n var e = b.EMPTY, n = new Le(e, t), r = new Le(e, t + 1), i = Zt();\n return this.yn.Ct([ n, r ], (function(t) {\n i = i.add(t.key);\n })), i;\n }, t.prototype.Mn = function(t) {\n var e = new Le(t, 0), n = this.pn.Nt(e);\n return null !== n && t.isEqual(n.key);\n }, t;\n}(), Le = /** @class */ function() {\n function t(t, e) {\n this.key = t, this.Ln = e\n /** Compare by key then by ID */;\n }\n return t.Ie = function(t, e) {\n return b.k(t.key, e.key) || Ie(t.Ln, e.Ln);\n }, \n /** Compare by ID then by key */ t.bn = function(t, e) {\n return Ie(t.Ln, e.Ln) || b.k(t.key, e.key);\n }, t;\n}(), Ve = /** @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.On = null, this.xn = 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.Bn = !1, \n // Set to true when .then() or .catch() are called and prevents additional\n // chaining.\n this.qn = !1, t((function(t) {\n e.Bn = !0, e.result = t, e.On && \n // value should be defined unless T is Void, but we can't express\n // that in the type system.\n e.On(t);\n }), (function(t) {\n e.Bn = !0, e.error = t, e.xn && e.xn(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.qn && Ee(), this.qn = !0, this.Bn ? this.error ? this.Un(n, this.error) : this.Qn(e, this.result) : new t((function(t, i) {\n r.On = function(n) {\n r.Qn(e, n).next(t, i);\n }, r.xn = function(e) {\n r.Un(n, e).next(t, i);\n };\n }));\n }, t.prototype.Wn = function() {\n var t = this;\n return new Promise((function(e, n) {\n t.next(e, n);\n }));\n }, t.prototype.jn = 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.Qn = function(e, n) {\n return e ? this.jn((function() {\n return e(n);\n })) : t.resolve(n);\n }, t.prototype.Un = function(e, n) {\n return e ? this.jn((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.Kn = 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.Gn = 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.Kn(r);\n }, t;\n}(), Oe = /** @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.zn = new De((function(t) {\n return t.toString();\n })), this.Hn = !1;\n }\n return Object.defineProperty(t.prototype, \"readTime\", {\n get: function() {\n return this.Yn;\n },\n set: function(t) {\n this.Yn = t;\n },\n enumerable: !0,\n configurable: !0\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.Jn = function(t, e) {\n this.Xn(), this.readTime = e, this.zn.set(t.key, t);\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.Zn = function(t, e) {\n this.Xn(), e && (this.readTime = e), this.zn.set(t, null);\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 * @return The cached Document or NoDocument entry, or null if we have nothing\n * cached.\n */\n t.prototype.tr = function(t, e) {\n this.Xn();\n var n = this.zn.get(e);\n return void 0 !== n ? Ve.resolve(n) : this.er(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 * @return A map of cached `Document`s or `NoDocument`s, indexed by key. If an\n * entry cannot be found, the corresponding key will be mapped to a null\n * value.\n */\n t.prototype.getEntries = function(t, e) {\n return this.sr(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.Xn(), this.Hn = !0, this.ir(t);\n }, \n /** Helper to assert this.changes is not null */ t.prototype.Xn = function() {}, \n t;\n}(), Pe = \"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.\", Ce = /** @class */ function() {\n function t() {\n this.nr = [];\n }\n return t.prototype.rr = function(t) {\n this.nr.push(t);\n }, t.prototype.hr = function() {\n this.nr.forEach((function(t) {\n return t();\n }));\n }, t;\n}(), Ue = /** @class */ function() {\n function t(t, e, n) {\n this.or = t, this.ar = e, this.ur = n\n /**\n * Get the local view of the document identified by `key`.\n *\n * @return Local view of the document or null if we don't have any cached\n * state for it.\n */;\n }\n return t.prototype.cr = function(t, e) {\n var n = this;\n return this.ar._r(t, e).next((function(r) {\n return n.lr(t, e, r);\n }));\n }, \n /** Internal version of `getDocument` that allows reusing batches. */ t.prototype.lr = function(t, e, n) {\n return this.or.tr(t, e).next((function(t) {\n for (var r = 0, i = n; r < i.length; r++) {\n t = i[r].Bt(e, 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.dr = function(t, e, n) {\n var r = Gt();\n return e.forEach((function(t, e) {\n for (var i = 0, o = n; i < o.length; i++) {\n e = o[i].Bt(t, e);\n }\n r = r.nt(t, e);\n })), r;\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.Tr = function(t, e) {\n var n = this;\n return this.or.getEntries(t, e).next((function(e) {\n return n.Er(t, e);\n }));\n }, \n /**\n * Similar to `getDocuments`, but creates the local view from the given\n * `baseDocs` without retrieving documents from the local store.\n */\n t.prototype.Er = function(t, e) {\n var n = this;\n return this.ar.Ir(t, e).next((function(r) {\n var i = n.dr(t, e, r), o = Ft();\n return i.forEach((function(t, e) {\n // TODO(http://b/32275378): Don't conflate missing / deleted.\n e || (e = new gt(t, m.S())), o = o.nt(t, e);\n })), o;\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.wr = function(t, e, n) {\n return e.Pe() ? this.Rr(t, e.path) : e.He() ? this.Ar(t, e, n) : this.mr(t, e, n);\n }, t.prototype.Rr = function(t, e) {\n // Just do a simple document lookup.\n return this.cr(t, new b(e)).next((function(t) {\n var e = zt();\n return t instanceof mt && (e = e.nt(t.key, t)), e;\n }));\n }, t.prototype.Ar = function(t, e, n) {\n var r = this, i = e.collectionGroup, o = zt();\n return this.ur.Pr(t, i).next((function(s) {\n return Ve.forEach(s, (function(s) {\n var u = e.Le(s.child(i));\n return r.mr(t, u, n).next((function(t) {\n t.forEach((function(t, e) {\n o = o.nt(t, e);\n }));\n }));\n })).next((function() {\n return o;\n }));\n }));\n }, t.prototype.mr = function(t, e, n) {\n var r, i, o = this;\n // Query the remote documents and overlay mutations.\n return this.or.wr(t, e, n).next((function(n) {\n return r = n, o.ar.Vr(t, e);\n })).next((function(e) {\n return i = e, o.gr(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], h = a.key, c = r.get(h), f = a.Bt(c, c, o.An);\n r = f instanceof mt ? r.nt(h, f) : r.remove(h);\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 e.matches(n) || (r = r.remove(t));\n })), r;\n }));\n }, t.prototype.gr = function(t, e, n) {\n for (var r = Zt(), 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 ct && null === n.get(a.key) && (r = r.add(a.key));\n }\n var h = n;\n return this.or.getEntries(t, r).next((function(t) {\n return t.forEach((function(t, e) {\n null !== e && e instanceof mt && (h = h.nt(t, e));\n })), h;\n }));\n }, t;\n}(), qe = /** @class */ function() {\n function t(t, e, n, r) {\n this.targetId = t, this.fromCache = e, this.pr = n, this.yr = r;\n }\n return t.br = function(e, n) {\n for (var r = Zt(), i = Zt(), 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}(), Me = /** @class */ function() {\n function t(t, e) {\n var n = this;\n this.previousValue = t, e && (e.vr = function(t) {\n return n.Sr(t);\n }, this.Dr = function(t) {\n return e.Cr(t);\n });\n }\n return t.prototype.Sr = 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.Dr && this.Dr(t), t;\n }, t;\n}();\n\n/** The default database name for a project. */\n/** Represents the database ID a Firestore client is associated with. */ Me.Fr = -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 je = function() {\n var t = this;\n this.promise = new Promise((function(e, n) {\n t.resolve = e, t.reject = n;\n }));\n}, Fe = /** @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.Nr = t, this.kr = e, this.$r = n, this.Mr = r, this.Lr = i, this.Or = 0, this.xr = null, \n /** The last backoff attempt, as epoch milliseconds. */\n this.Br = 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.Or = 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.qr = function() {\n this.Or = this.Lr;\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.Ur = 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.Or + this.Qr()), r = Math.max(0, Date.now() - this.Br), i = Math.max(0, n - r);\n // Guard against lastAttemptTime being in the future due to a clock change.\n i > 0 && me(\"ExponentialBackoff\", \"Backing off for \" + i + \" ms (base delay: \" + this.Or + \" ms, delay with jitter: \" + n + \" ms, last attempt: \" + r + \" ms ago)\"), \n this.xr = this.Nr.Wr(this.kr, i, (function() {\n return e.Br = Date.now(), t();\n })), \n // Apply backoff factor to determine next delay and ensure it is within\n // bounds.\n this.Or *= this.Mr, this.Or < this.$r && (this.Or = this.$r), this.Or > this.Lr && (this.Or = this.Lr);\n }, t.prototype.cancel = function() {\n null !== this.xr && (this.xr.cancel(), this.xr = null);\n }, \n /** Returns a random value in the range [-currentBaseMs/2, currentBaseMs/2] */ t.prototype.Qr = function() {\n return (Math.random() - .5) * this.Or;\n }, t;\n}(), Ge = /** @class */ function() {\n function t(t, e, n, r, i) {\n this.jr = t, this.kr = e, this.Kr = n, this.op = r, this.Gr = i, this.zr = new je, \n this.then = this.zr.promise.then.bind(this.zr.promise), this.catch = this.zr.promise.catch.bind(this.zr.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.zr.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.Hr = 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.Yr = setTimeout((function() {\n return e.Jr();\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.Xr = function() {\n return this.Jr();\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.Yr && (this.clearTimeout(), this.zr.reject(new c(h.CANCELLED, \"Operation cancelled\" + (t ? \": \" + t : \"\"))));\n }, t.prototype.Jr = function() {\n var t = this;\n this.jr.Zr((function() {\n return null !== t.Yr ? (t.clearTimeout(), t.op().then((function(e) {\n return t.zr.resolve(e);\n }))) : Promise.resolve();\n }));\n }, t.prototype.clearTimeout = function() {\n null !== this.Yr && (this.Gr(this), clearTimeout(this.Yr), this.Yr = null);\n }, t;\n}(), Be = /** @class */ function() {\n function t() {\n var t = this;\n // The last promise in the queue.\n this.th = Promise.resolve(), \n // The last retryable operation. Retryable operation are run in order and\n // retried with backoff.\n this.eh = Promise.resolve(), \n // Is this AsyncQueue being shut down? Once it is set to true, it will not\n // be changed again.\n this.sh = !1, \n // Operations scheduled to be queued in the future. Operations are\n // automatically removed after they are run or canceled.\n this.ih = [], \n // visible for testing\n this.nh = null, \n // Flag set while there's an outstanding AsyncQueue operation, used for\n // assertion sanity-checks.\n this.rh = !1, \n // List of TimerIds to fast-forward delays for.\n this.hh = [], \n // Backoff timer used to schedule retries for retryable operations\n this.oh = new Fe(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.ah = function() {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n t.uh(\"async_queue_retry\" /* AsyncQueueRetry */);\n };\n var e = pe.Lt().window;\n e && e.addEventListener(\"visibilitychange\", this.ah);\n }\n return Object.defineProperty(t.prototype, \"_h\", {\n // Is this AsyncQueue being shut down? If true, this instance will not enqueue\n // any new operations, Promises from enqueue requests will not resolve.\n get: function() {\n return this.sh;\n },\n enumerable: !0,\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.Zr = function(t) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.enqueue(t);\n }, \n /**\n * Regardless if the queue has initialized shutdown, adds a new operation to the\n * queue without waiting for it to complete (i.e. we ignore the Promise result).\n */\n t.prototype.lh = function(t) {\n this.dh(), \n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.fh(t);\n }, \n /**\n * Regardless if the queue has initialized shutdown, adds a new operation to the\n * queue.\n */\n t.prototype.Th = function(t) {\n return this.dh(), this.fh(t);\n }, \n /**\n * Adds a new operation to the queue and initialize the shut down of this queue.\n * Returns a promise that will be resolved when the promise returned by the new\n * operation is (with its value).\n * Once this method is called, the only possible way to request running an operation\n * is through `enqueueAndForgetEvenAfterShutdown`.\n */\n t.prototype.Eh = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.dh(), this.sh ? [ 3 /*break*/ , 2 ] : (this.sh = !0, (n = pe.Lt().window) && n.removeEventListener(\"visibilitychange\", this.ah), \n [ 4 /*yield*/ , this.Th(t) ]);\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Adds a new operation to the queue. Returns a promise that will be resolved\n * when the promise returned by the new operation is (with its value).\n */\n t.prototype.enqueue = function(t) {\n return this.dh(), this.sh ? new Promise((function(t) {})) : this.fh(t);\n }, \n /**\n * Enqueue a retryable operation.\n *\n * A retryable operation is rescheduled with backoff if it fails with a\n * IndexedDbTransactionError (the error type used by SimpleDb). All\n * retryable operations are executed in order and only run if all prior\n * operations were retried successfully.\n */\n t.prototype.Ih = function(t) {\n var n = this;\n this.dh(), this.sh || (this.eh = this.eh.then((function() {\n var r = new je, i = function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n var n;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return e.trys.push([ 0, 2, , 3 ]), [ 4 /*yield*/ , t() ];\n\n case 1:\n return e.sent(), r.resolve(), this.oh.reset(), [ 3 /*break*/ , 3 ];\n\n case 2:\n if (\"IndexedDbTransactionError\" !== (n = e.sent()).name) throw r.resolve(), n;\n // Failure will be handled by AsyncQueue\n return me(\"AsyncQueue\", \"Operation failed with retryable error: \" + n), \n this.oh.Ur(i), [ 3 /*break*/ , 3 ];\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n };\n return n.Zr(i), r.promise;\n })));\n }, t.prototype.fh = function(t) {\n var e = this, n = this.th.then((function() {\n return e.rh = !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.nh = t, e.rh = !1, ge(\"INTERNAL UNHANDLED ERROR: \", t.stack || t.message || \"\"), \n t;\n })).then((function(t) {\n return e.rh = !1, t;\n }));\n }));\n return this.th = n, n;\n }, \n /**\n * Schedules an operation to be queued on the AsyncQueue once the specified\n * `delayMs` has elapsed. The returned CancelablePromise can be used to cancel\n * the operation prior to its running.\n */\n t.prototype.Wr = function(t, e, n) {\n var r = this;\n this.dh(), \n // Fast-forward delays for timerIds that have been overriden.\n this.hh.indexOf(t) > -1 && (e = 0);\n var i = Ge.Hr(this, t, e, n, (function(t) {\n return r.wh(t);\n }));\n return this.ih.push(i), i;\n }, t.prototype.dh = function() {\n this.nh && Ee();\n }, \n /**\n * Verifies there's an operation currently in-progress on the AsyncQueue.\n * Unfortunately we can't verify that the running code is in the promise chain\n * of that operation, so this isn't a foolproof check, but it should be enough\n * to catch some bugs.\n */\n t.prototype.Rh = function() {}, \n /**\n * Waits until all currently queued tasks are finished executing. Delayed\n * operations are not run.\n */\n t.prototype.Ah = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , t = this.th ];\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n if (t !== this.th) 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.mh = function(t) {\n for (var e = 0, n = this.ih; e < n.length; e++) {\n if (n[e].kr === 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 will\n * be drained. Throws if no such operation exists. Pass TimerId.All to run\n * all delayed operations.\n * @returns a Promise that resolves once all operations have been run.\n */\n t.prototype.uh = function(t) {\n var e = this;\n // Note that draining may generate more delayed ops, so we do that first.\n return this.Ah().then((function() {\n // Run ops in the same order they'd run if they ran naturally.\n e.ih.sort((function(t, e) {\n return t.Kr - e.Kr;\n }));\n for (var n = 0, r = e.ih; n < r.length; n++) {\n var i = r[n];\n if (i.Xr(), \"all\" /* All */ !== t && i.kr === t) break;\n }\n return e.Ah();\n }));\n }, \n /**\n * For Tests: Skip all subsequent delays for a timer id.\n */\n t.prototype.Ph = function(t) {\n this.hh.push(t);\n }, \n /** Called once a DelayedOperation is run or canceled. */ t.prototype.wh = function(t) {\n // NOTE: indexOf / slice are O(n), but delayedOperations is expected to be small.\n var e = this.ih.indexOf(t);\n this.ih.splice(e, 1);\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 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 */\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 */\nfunction ze(t, e) {\n var n = t[0], r = t[1], i = e[0], o = e[1], s = Ie(n, i);\n return 0 === s ? Ie(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 Ke = /** @class */ function() {\n function t(t) {\n this.Vh = t, this.buffer = new A(ze), this.gh = 0;\n }\n return t.prototype.ph = function() {\n return ++this.gh;\n }, t.prototype.yh = function(t) {\n var e = [ t, this.ph() ];\n if (this.buffer.size < this.Vh) this.buffer = this.buffer.add(e); else {\n var n = this.buffer.last();\n ze(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: !0,\n configurable: !0\n }), t;\n}(), Ye = {\n bh: !1,\n vh: 0,\n Sh: 0,\n Dh: 0\n}, Qe = /** @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.Ch = t, this.Fh = e, this.Nh = n;\n }\n return t.kh = function(e) {\n return new t(e, t.$h, t.Mh);\n }, t;\n}();\n\nQe.Lh = -1, Qe.Oh = 1048576, Qe.xh = 41943040, Qe.$h = 10, Qe.Mh = 1e3, Qe.Bh = new Qe(Qe.xh, Qe.$h, Qe.Mh), \nQe.DISABLED = new Qe(Qe.Lh, 0, 0);\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 */\nvar Ze = /** @class */ function() {\n function t(t, e) {\n this.qh = t, this.jr = e, this.Uh = !1, this.Qh = null;\n }\n return t.prototype.start = function(t) {\n this.qh.Wh.Ch !== Qe.Lh && this.jh(t);\n }, t.prototype.stop = function() {\n this.Qh && (this.Qh.cancel(), this.Qh = null);\n }, Object.defineProperty(t.prototype, \"Kh\", {\n get: function() {\n return null !== this.Qh;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.jh = function(t) {\n var e = this, n = this.Uh ? 3e5 : 6e4;\n me(\"LruGarbageCollector\", \"Garbage collection scheduled in \" + n + \"ms\"), this.Qh = this.jr.Wr(\"lru_garbage_collection\" /* LruGarbageCollection */ , n, (function() {\n return e.Qh = null, e.Uh = !0, t.Gh(e.qh).then((function() {\n return e.jh(t);\n })).catch(ir);\n }));\n }, t;\n}(), We = /** @class */ function() {\n function t(t, e) {\n this.zh = t, this.Wh = e\n /** Given a percentile of target to collect, returns the number of targets to collect. */;\n }\n return t.prototype.Hh = function(t, e) {\n return this.zh.Yh(t).next((function(t) {\n return Math.floor(e / 100 * t);\n }));\n }, \n /** Returns the nth sequence number, counting in order from the smallest. */ t.prototype.Jh = function(t, e) {\n var n = this;\n if (0 === e) return Ve.resolve(Me.Fr);\n var r = new Ke(e);\n return this.zh.Xs(t, (function(t) {\n return r.yh(t.sequenceNumber);\n })).next((function() {\n return n.zh.Xh(t, (function(t) {\n return r.yh(t);\n }));\n })).next((function() {\n return r.maxValue;\n }));\n }, \n /**\n * Removes targets with a sequence number equal to or less than the given upper bound, and removes\n * document associations with those targets.\n */\n t.prototype.Zh = function(t, e, n) {\n return this.zh.Zh(t, e, n);\n }, \n /**\n * Removes documents that have a sequence number equal to or less than the upper bound and are not\n * otherwise pinned.\n */\n t.prototype.to = function(t, e) {\n return this.zh.to(t, e);\n }, t.prototype.eo = function(t, e) {\n var n = this;\n return this.Wh.Ch === Qe.Lh ? (me(\"LruGarbageCollector\", \"Garbage collection skipped; disabled\"), \n Ve.resolve(Ye)) : this.so(t).next((function(r) {\n return r < n.Wh.Ch ? (me(\"LruGarbageCollector\", \"Garbage collection skipped; Cache size \" + r + \" is lower than threshold \" + n.Wh.Ch), \n Ye) : n.io(t, e);\n }));\n }, t.prototype.so = function(t) {\n return this.zh.so(t);\n }, t.prototype.io = function(t, e) {\n var n, i, o, s, u, a, h, c = this, f = Date.now();\n return this.Hh(t, this.Wh.Fh).next((function(e) {\n // Cap at the configured max\n return e > c.Wh.Nh ? (me(\"LruGarbageCollector\", \"Capping sequence numbers to collect down to the maximum of \" + c.Wh.Nh + \" from \" + e), \n i = c.Wh.Nh) : i = e, s = Date.now(), c.Jh(t, i);\n })).next((function(r) {\n return n = r, u = Date.now(), c.Zh(t, n, e);\n })).next((function(e) {\n return o = e, a = Date.now(), c.to(t, n);\n })).next((function(t) {\n return h = Date.now(), ye() <= r.LogLevel.DEBUG && me(\"LruGarbageCollector\", \"LRU Garbage Collection\\n\\tCounted targets in \" + (s - f) + \"ms\\n\\tDetermined least recently used \" + i + \" in \" + (u - s) + \"ms\\n\\tRemoved \" + o + \" targets in \" + (a - u) + \"ms\\n\\tRemoved \" + t + \" documents in \" + (h - a) + \"ms\\nTotal Duration: \" + (h - f) + \"ms\"), \n Ve.resolve({\n bh: !0,\n vh: i,\n Sh: o,\n Dh: t\n });\n }));\n }, t;\n}();\n\n/** Implements the steps for LRU garbage collection. */\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 */\nfunction He(t) {\n for (var e = \"\", n = 0; n < t.length; n++) e.length > 0 && (e = Je(e)), e = Xe(t.get(n), e);\n return Je(e);\n}\n\n/** Encodes a single segment of a resource path into the given result */ function Xe(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 Je(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 $e(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 (_e(e >= 2), 2 === e) return _e(\"\u0001\" === t.charAt(0) && \"\u0001\" === t.charAt(1)), \n w.H;\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) && Ee(), 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 Ee();\n }\n o = s + 2;\n }\n return new w(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// References to `window` are guarded by SimpleDb.isAvailable()\n/* eslint-disable no-restricted-globals */\n/**\n * Provides a wrapper around IndexedDb with a simplified interface that uses\n * Promise-like return values to chain operations. Real promises cannot be used\n * since .then() continuations are executed asynchronously (e.g. via\n * .setImmediate), which would cause IndexedDB to end the transaction.\n * See PersistencePromise for more details.\n */ var tn = /** @class */ function() {\n function t(e) {\n this.db = e, \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.no(i.getUA()) && ge(\"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 * Opens the specified database, creating or upgrading it if necessary.\n *\n * Note that `version` must not be a downgrade. IndexedDB does not support downgrading the schema\n * version. We currently do not support any way to do versioning outside of IndexedDB's versioning\n * mechanism, as only version-upgrade transactions are allowed to do things like create\n * objectstores.\n */;\n }\n return t.ro = function(e, n, r) {\n return me(\"SimpleDb\", \"Opening database:\", e), new Ve((function(i, o) {\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 s = window.indexedDB.open(e, n);\n s.onsuccess = function(e) {\n var n = e.target.result;\n i(new t(n));\n }, s.onblocked = function() {\n o(new c(h.FAILED_PRECONDITION, \"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed.\"));\n }, s.onerror = function(t) {\n var e = t.target.error;\n \"VersionError\" === e.name ? o(new c(h.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.\")) : o(e);\n }, s.onupgradeneeded = function(t) {\n me(\"SimpleDb\", 'Database \"' + e + '\" requires upgrade from version:', t.oldVersion);\n var n = t.target.result;\n r.createOrUpgrade(n, s.transaction, t.oldVersion, Dn).next((function() {\n me(\"SimpleDb\", \"Database upgrade to version \" + Dn + \" complete\");\n }));\n };\n })).Wn();\n }, \n /** Deletes the specified database. */ t.delete = function(t) {\n return me(\"SimpleDb\", \"Removing database:\", t), sn(window.indexedDB.deleteDatabase(t)).Wn();\n }, \n /** Returns true if IndexedDB is available in the current environment. */ t.ho = function() {\n if (\"undefined\" == typeof window || null == window.indexedDB) return !1;\n if (t.oo()) return !0;\n // In some Node environments, `window` is defined, but `window.navigator` is\n // not. We don't support IndexedDB persistence in Node if the\n // isMockPersistence() check above returns false.\n if (void 0 === window.navigator) return !1;\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.getUA(), n = t.no(e), r = 0 < n && n < 10, o = t.ao(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.oo = function() {\n var t;\n return \"undefined\" != typeof __PRIVATE_process && \"YES\" === (null === (t = __PRIVATE_process.__PRIVATE_env) || void 0 === t ? void 0 : t.uo);\n }, \n /** Helper to get a typed SimpleDbStore from a transaction. */ t.co = 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.no = 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.ao = 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 }, t.prototype._o = function(t) {\n this.db.onversionchange = function(e) {\n return t(e);\n };\n }, t.prototype.runTransaction = function(t, n, r) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var i, o, s, u, a;\n return e.__generator(this, (function(h) {\n switch (h.label) {\n case 0:\n i = \"readonly\" === t, o = 0, s = function() {\n var t, s, a, h, c;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n ++o, t = rn.open(u.db, i ? \"readonly\" : \"readwrite\", n), e.label = 1;\n\n case 1:\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 e.trys.push([ 1, 3, , 4 ]), s = r(t).catch((function(e) {\n // Abort the transaction if there was an error.\n return t.abort(e), Ve.reject(e);\n })).Wn(), a = {}, s.catch((function() {})), [ 4 /*yield*/ , t.lo ];\n\n case 2:\n return [ 2 /*return*/ , (a.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 e.sent(), s), a) ];\n\n case 3:\n return h = e.sent(), c = \"FirebaseError\" !== h.name && o < 3, me(\"SimpleDb\", \"Transaction failed with error: %s. Retrying: %s.\", h.message, c), \n c ? [ 3 /*break*/ , 4 ] : [ 2 /*return*/ , {\n value: Promise.reject(h)\n } ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }, u = this, h.label = 1;\n\n case 1:\n return [ 5 /*yield**/ , s() ];\n\n case 2:\n if (\"object\" == typeof (a = h.sent())) return [ 2 /*return*/ , a.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.close();\n }, t;\n}(), en = /** @class */ function() {\n function t(t) {\n this.do = t, this.fo = !1, this.To = null;\n }\n return Object.defineProperty(t.prototype, \"Bn\", {\n get: function() {\n return this.fo;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"Eo\", {\n get: function() {\n return this.To;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"cursor\", {\n set: function(t) {\n this.do = t;\n },\n enumerable: !0,\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.fo = !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.Io = function(t) {\n this.To = 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 sn(this.do.delete());\n }, t;\n}(), nn = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this, h.UNAVAILABLE, \"IndexedDB transaction failed: \" + e) || this).name = \"IndexedDbTransactionError\", \n n;\n }\n return e.__extends(n, t), n;\n}(c), rn = /** @class */ function() {\n function t(t) {\n var e = this;\n this.transaction = t, this.aborted = !1, \n /**\n * A promise that resolves with the result of the IndexedDb transaction.\n */\n this.wo = new je, this.transaction.oncomplete = function() {\n e.wo.resolve();\n }, this.transaction.onabort = function() {\n t.error ? e.wo.reject(new nn(t.error)) : e.wo.resolve();\n }, this.transaction.onerror = function(t) {\n var n = an(t.target.error);\n e.wo.reject(new nn(n));\n };\n }\n return t.open = function(e, n, r) {\n return new t(e.transaction(r, n));\n }, Object.defineProperty(t.prototype, \"lo\", {\n get: function() {\n return this.wo.promise;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.abort = function(t) {\n t && this.wo.reject(t), this.aborted || (me(\"SimpleDb\", \"Aborting transaction:\", t ? t.message : \"Client-initiated abort\"), \n this.aborted = !0, this.transaction.abort());\n }, \n /**\n * Returns a SimpleDbStore<KeyType, ValueType> 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 on(e);\n }, t;\n}(), on = /** @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 ? (me(\"SimpleDb\", \"PUT\", this.store.name, t, e), n = this.store.put(e, t)) : (me(\"SimpleDb\", \"PUT\", this.store.name, \"<auto-key>\", t), \n n = this.store.put(t)), sn(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 * @return The key of the value to add.\n */\n t.prototype.add = function(t) {\n return me(\"SimpleDb\", \"ADD\", this.store.name, t, t), sn(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 * @return 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 sn(this.store.get(t)).next((function(n) {\n // Normalize nonexistence to null.\n return void 0 === n && (n = null), me(\"SimpleDb\", \"GET\", e.store.name, t, n), n;\n }));\n }, t.prototype.delete = function(t) {\n return me(\"SimpleDb\", \"DELETE\", this.store.name, t), sn(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 me(\"SimpleDb\", \"COUNT\", this.store.name), sn(this.store.count());\n }, t.prototype.Ro = function(t, e) {\n var n = this.cursor(this.options(t, e)), r = [];\n return this.Ao(n, (function(t, e) {\n r.push(e);\n })).next((function() {\n return r;\n }));\n }, t.prototype.mo = function(t, e) {\n me(\"SimpleDb\", \"DELETE ALL\", this.store.name);\n var n = this.options(t, e);\n n.Po = !1;\n var r = this.cursor(n);\n return this.Ao(r, (function(t, e, n) {\n return n.delete();\n }));\n }, t.prototype.Vo = function(t, e) {\n var n;\n e ? n = t : (n = {}, e = t);\n var r = this.cursor(n);\n return this.Ao(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.po = function(t) {\n var e = this.cursor({});\n return new Ve((function(n, r) {\n e.onerror = function(t) {\n var e = an(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.Ao = function(t, e) {\n var n = [];\n return new Ve((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 en(i), s = e(i.primaryKey, i.value, o);\n if (s instanceof Ve) {\n var u = s.catch((function(t) {\n return o.done(), Ve.reject(t);\n }));\n n.push(u);\n }\n o.Bn ? r() : null === o.Eo ? i.continue() : i.continue(o.Eo);\n } else r();\n };\n })).next((function() {\n return Ve.Kn(n);\n }));\n }, t.prototype.options = function(t, e) {\n var n = void 0;\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.Po ? 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 * A controller for iterating over a key range or index. It allows an iterate\n * callback to delete the currently-referenced object, or jump to a new key\n * within the key range or index.\n */\n/**\n * Wraps an IDBRequest in a PersistencePromise, using the onsuccess / onerror\n * handlers to resolve / reject the PersistencePromise as appropriate.\n */\nfunction sn(t) {\n return new Ve((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 = an(t.target.error);\n n(e);\n };\n }));\n}\n\n// Guard so we only report the error once.\nvar un = !1;\n\nfunction an(t) {\n var e = tn.no(i.getUA());\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 c(\"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 un || (un = !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 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. */ var hn = /** @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.serializer = e, this.ur = n, this.yo = 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.bo = {}\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.vo = 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 _e(\"\" !== e.uid), new t(e.t() ? e.uid : \"\", n, r, i);\n }, t.prototype.So = function(t) {\n var e = !0, n = IDBKeyRange.bound([ this.userId, Number.NEGATIVE_INFINITY ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return ln(t).Vo({\n index: Vn.userMutationsIndex,\n range: n\n }, (function(t, n, r) {\n e = !1, r.done();\n })).next((function() {\n return e;\n }));\n }, t.prototype.Do = function(t, e, n) {\n return this.Co(t).next((function(e) {\n // We can't store the resumeToken as a ByteString in IndexedDB, so we\n // convert it to a Base64 string for storage.\n return e.lastStreamToken = n.toBase64(), dn(t).put(e);\n }));\n }, t.prototype.Fo = function(t) {\n return this.Co(t).next((function(t) {\n return R.fromBase64String(t.lastStreamToken);\n }));\n }, t.prototype.No = function(t, e) {\n return this.Co(t).next((function(n) {\n // We can't store the resumeToken as a ByteString in IndexedDB, so we\n // convert it to a Base64 string for storage.\n return n.lastStreamToken = e.toBase64(), dn(t).put(n);\n }));\n }, t.prototype.ko = function(t, e, n, r) {\n var i = this, o = pn(t), s = ln(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 _e(\"number\" == typeof u);\n for (var a = new ke(u, e, n, r), h = i.serializer.$o(i.userId, a), c = [], f = new A((function(t, e) {\n return Ie(t.K(), e.K());\n })), l = 0, p = r; l < p.length; l++) {\n var d = p[l], y = On.key(i.userId, d.key.path, u);\n f = f.add(d.key.path.L()), c.push(s.put(h)), c.push(o.put(y, On.PLACEHOLDER));\n }\n return f.forEach((function(e) {\n c.push(i.ur.Mo(t, e));\n })), t.rr((function() {\n i.bo[u] = a.keys();\n })), Ve.Kn(c).next((function() {\n return a;\n }));\n }));\n }, t.prototype.Lo = function(t, e) {\n var n = this;\n return ln(t).get(e).next((function(t) {\n return t ? (_e(t.userId === n.userId), n.serializer.Oo(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.xo = function(t, e) {\n var n = this;\n return this.bo[e] ? Ve.resolve(this.bo[e]) : this.Lo(t, e).next((function(t) {\n if (t) {\n var r = t.keys();\n return n.bo[e] = r, r;\n }\n return null;\n }));\n }, t.prototype.Bo = function(t, e) {\n var n = this, r = e + 1, i = IDBKeyRange.lowerBound([ this.userId, r ]), o = null;\n return ln(t).Vo({\n index: Vn.userMutationsIndex,\n range: i\n }, (function(t, e, i) {\n e.userId === n.userId && (_e(e.batchId >= r), o = n.serializer.Oo(e)), i.done();\n })).next((function() {\n return o;\n }));\n }, t.prototype.qo = function(t) {\n var e = IDBKeyRange.upperBound([ this.userId, Number.POSITIVE_INFINITY ]), n = -1;\n return ln(t).Vo({\n index: Vn.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.Uo = function(t) {\n var e = this, n = IDBKeyRange.bound([ this.userId, -1 ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return ln(t).Ro(Vn.userMutationsIndex, n).next((function(t) {\n return t.map((function(t) {\n return e.serializer.Oo(t);\n }));\n }));\n }, t.prototype._r = function(t, e) {\n var n = this, r = On.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 pn(t).Vo({\n range: i\n }, (function(r, i, s) {\n var u = r[0], a = r[1], h = r[2], c = $e(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(c)) \n // Look up the mutation batch in the store.\n return ln(t).get(h).next((function(t) {\n if (!t) throw Ee();\n _e(t.userId === n.userId), o.push(n.serializer.Oo(t));\n }));\n s.done();\n })).next((function() {\n return o;\n }));\n }, t.prototype.Ir = function(t, e) {\n var n = this, r = new A(Ie), i = [];\n return e.forEach((function(e) {\n var o = On.prefixForPath(n.userId, e.path), s = IDBKeyRange.lowerBound(o), u = pn(t).Vo({\n range: s\n }, (function(t, i, o) {\n var s = t[0], u = t[1], a = t[2], h = $e(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(h) ? r = r.add(a) : o.done();\n }));\n i.push(u);\n })), Ve.Kn(i).next((function() {\n return n.Qo(t, r);\n }));\n }, t.prototype.Vr = function(t, e) {\n var n = this, r = e.path, i = r.length + 1, o = On.prefixForPath(this.userId, r), s = IDBKeyRange.lowerBound(o), u = new A(Ie);\n return pn(t).Vo({\n range: s\n }, (function(t, e, o) {\n var s = t[0], a = t[1], h = t[2], c = $e(a);\n s === n.userId && r.U(c) ? \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 c.length === i && (u = u.add(h)) : o.done();\n })).next((function() {\n return n.Qo(t, u);\n }));\n }, t.prototype.Qo = 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(ln(t).get(e).next((function(t) {\n if (null === t) throw Ee();\n _e(t.userId === n.userId), r.push(n.serializer.Oo(t));\n })));\n })), Ve.Kn(i).next((function() {\n return r;\n }));\n }, t.prototype.Wo = function(t, e) {\n var n = this;\n return fn(t.jo, this.userId, e).next((function(r) {\n return t.rr((function() {\n n.Ko(e.batchId);\n })), Ve.forEach(r, (function(e) {\n return n.yo.Go(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.Ko = function(t) {\n delete this.bo[t];\n }, t.prototype.zo = function(t) {\n var e = this;\n return this.So(t).next((function(n) {\n if (!n) return Ve.resolve();\n // Verify that there are no entries in the documentMutations index if\n // the queue is empty.\n var r = IDBKeyRange.lowerBound(On.prefixForUser(e.userId)), i = [];\n return pn(t).Vo({\n range: r\n }, (function(t, n, r) {\n if (t[0] === e.userId) {\n var o = $e(t[1]);\n i.push(o);\n } else r.done();\n })).next((function() {\n _e(0 === i.length);\n }));\n }));\n }, t.prototype.Mn = function(t, e) {\n return cn(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.Co = function(t) {\n var e = this;\n return dn(t).get(this.userId).next((function(t) {\n return t || new Ln(e.userId, -1, \n /*lastStreamToken=*/ \"\");\n }));\n }, t;\n}();\n\n/**\n * @return true if the mutation queue for the given user contains a pending\n * mutation for the given key.\n */ function cn(t, e, n) {\n var r = On.prefixForPath(e, n.path), i = r[1], o = IDBKeyRange.lowerBound(r), s = !1;\n return pn(t).Vo({\n range: o,\n Po: !0\n }, (function(t, n, r) {\n var o = t[0], u = t[1];\n t[2];\n o === e && u === i && (s = !0), r.done();\n })).next((function() {\n return s;\n }));\n}\n\n/** Returns true if any mutation queue contains the given document. */\n/**\n * Delete a mutation batch and the associated document mutations.\n * @return A PersistencePromise of the document mutations that were removed.\n */ function fn(t, e, n) {\n var r = t.store(Vn.store), i = t.store(On.store), o = [], s = IDBKeyRange.only(n.batchId), u = 0, a = r.Vo({\n range: s\n }, (function(t, e, n) {\n return u++, n.delete();\n }));\n o.push(a.next((function() {\n _e(1 === u);\n })));\n for (var h = [], c = 0, f = n.mutations; c < f.length; c++) {\n var l = f[c], p = On.key(e, l.key.path, n.batchId);\n o.push(i.delete(p)), h.push(l.key);\n }\n return Ve.Kn(o).next((function() {\n return h;\n }));\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutations object store.\n */ function ln(t) {\n return Xn.co(t, Vn.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function pn(t) {\n return Xn.co(t, On.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function dn(t) {\n return Xn.co(t, Ln.store);\n}\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 yn = /** @class */ function() {\n function t(t) {\n this.Ho = t;\n }\n return t.prototype.next = function() {\n return this.Ho += 2, this.Ho;\n }, t.Yo = 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.Jo = function() {\n // Sync engine assigns target IDs for limbo document detection.\n return new t(-1);\n }, t;\n}(), vn = /** @class */ function() {\n function t(t, e) {\n this.yo = t, this.serializer = 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.Xo = function(t) {\n var e = this;\n return this.Zo(t).next((function(n) {\n var r = new yn(n.highestTargetId);\n return n.highestTargetId = r.next(), e.ta(t, n).next((function() {\n return n.highestTargetId;\n }));\n }));\n }, t.prototype.ea = function(t) {\n return this.Zo(t).next((function(t) {\n return m.v(new v(t.lastRemoteSnapshotVersion.seconds, t.lastRemoteSnapshotVersion.nanoseconds));\n }));\n }, t.prototype.sa = function(t) {\n return wn(t.jo);\n }, t.prototype.ia = function(t, e, n) {\n var r = this;\n return this.Zo(t).next((function(i) {\n return i.highestListenSequenceNumber = e, n && (i.lastRemoteSnapshotVersion = n.F()), \n e > i.highestListenSequenceNumber && (i.highestListenSequenceNumber = e), r.ta(t, i);\n }));\n }, t.prototype.na = function(t, e) {\n var n = this;\n return this.ra(t, e).next((function() {\n return n.Zo(t).next((function(r) {\n return r.targetCount += 1, n.ha(e, r), n.ta(t, r);\n }));\n }));\n }, t.prototype.oa = function(t, e) {\n return this.ra(t, e);\n }, t.prototype.aa = function(t, e) {\n var n = this;\n return this.ua(t, e.targetId).next((function() {\n return mn(t).delete(e.targetId);\n })).next((function() {\n return n.Zo(t);\n })).next((function(e) {\n return _e(e.targetCount > 0), e.targetCount -= 1, n.ta(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.Zh = function(t, e, n) {\n var r = this, i = 0, o = [];\n return mn(t).Vo((function(s, u) {\n var a = r.serializer.ca(u);\n a.sequenceNumber <= e && null === n.get(a.targetId) && (i++, o.push(r.aa(t, a)));\n })).next((function() {\n return Ve.Kn(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.Xs = function(t, e) {\n var n = this;\n return mn(t).Vo((function(t, r) {\n var i = n.serializer.ca(r);\n e(i);\n }));\n }, t.prototype.Zo = function(t) {\n return gn(t.jo);\n }, t.prototype.ta = function(t, e) {\n return (n = t, Xn.co(n, Fn.store)).put(Fn.key, e);\n /**\n * Helper to get a typed SimpleDbStore for the target globals object store.\n */ var n;\n }, t.prototype.ra = function(t, e) {\n return mn(t).put(this.serializer._a(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.ha = 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.la = function(t) {\n return this.Zo(t).next((function(t) {\n return t.targetCount;\n }));\n }, t.prototype.da = function(t, e) {\n var n = this, r = e.canonicalId(), i = IDBKeyRange.bound([ r, Number.NEGATIVE_INFINITY ], [ r, Number.POSITIVE_INFINITY ]), o = null;\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 return mn(t).Vo({\n range: i,\n index: Mn.queryTargetsIndexName\n }, (function(t, r, i) {\n var s = n.serializer.ca(r);\n // After finding a potential match, check that the target is\n // actually equal to the requested target.\n e.isEqual(s.target) && (o = s, i.done());\n })).next((function() {\n return o;\n }));\n }, t.prototype.fa = function(t, e, n) {\n var r = this, i = [], o = En(t);\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n return e.forEach((function(e) {\n var s = He(e.path);\n i.push(o.put(new jn(n, s))), i.push(r.yo.vn(t, e));\n })), Ve.Kn(i);\n }, t.prototype.Ta = function(t, e, n) {\n var r = this, i = En(t);\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n return Ve.forEach(e, (function(e) {\n var o = He(e.path);\n return Ve.Kn([ i.delete([ n, o ]), r.yo.Dn(t, e) ]);\n }));\n }, t.prototype.ua = function(t, e) {\n var n = En(t), r = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return n.delete(r);\n }, t.prototype.Ea = function(t, e) {\n var n = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0), r = En(t), i = Zt();\n return r.Vo({\n range: n,\n Po: !0\n }, (function(t, e, n) {\n var r = $e(t[1]), o = new b(r);\n i = i.add(o);\n })).next((function() {\n return i;\n }));\n }, t.prototype.Mn = function(t, e) {\n var n = He(e.path), r = IDBKeyRange.bound([ n ], [ Ne(n) ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0), i = 0;\n return En(t).Vo({\n index: jn.documentTargetsIndex,\n Po: !0,\n range: r\n }, (function(t, e, n) {\n var r = t[0];\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 t[1];\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 * @return 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.ui = function(t, e) {\n var n = this;\n return mn(t).get(e).next((function(t) {\n return t ? n.serializer.ca(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 mn(t) {\n return Xn.co(t, Mn.store);\n}\n\nfunction gn(t) {\n return tn.co(t, Fn.store).get(Fn.key).next((function(t) {\n return _e(null !== t), t;\n }));\n}\n\nfunction wn(t) {\n return gn(t).next((function(t) {\n return t.highestListenSequenceNumber;\n }));\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the document target object store.\n */ function En(t) {\n return Xn.co(t, jn.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 */ var _n = /** @class */ function() {\n /**\n * @param {LocalSerializer} serializer The document serializer.\n * @param {IndexManager} indexManager The query indexes that need to be maintained.\n */\n function t(t, e) {\n this.serializer = t, this.ur = 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.Jn = function(t, e, n) {\n return In(t).put(Tn(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.Zn = function(t, e) {\n var n = In(t), r = Tn(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.Ia(t, r);\n }));\n }, t.prototype.tr = function(t, e) {\n var n = this;\n return In(t).get(Tn(e)).next((function(t) {\n return n.wa(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 * @return The cached MaybeDocument entry and its size, or null if we have nothing cached.\n */\n t.prototype.Ra = function(t, e) {\n var n = this;\n return In(t).get(Tn(e)).next((function(t) {\n var e = n.wa(t);\n return e ? {\n Aa: e,\n size: Nn(t)\n } : null;\n }));\n }, t.prototype.getEntries = function(t, e) {\n var n = this, r = Gt();\n return this.ma(t, e, (function(t, e) {\n var i = n.wa(e);\n r = r.nt(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 * @return A map of MaybeDocuments indexed by key (if a document cannot be\n * found, the key will be mapped to null) and a map of sizes indexed by\n * key (zero if the key cannot be found).\n */\n t.prototype.Pa = function(t, e) {\n var n = this, r = Gt(), i = new I(b.k);\n return this.ma(t, e, (function(t, e) {\n var o = n.wa(e);\n o ? (r = r.nt(t, o), i = i.nt(t, Nn(e))) : (r = r.nt(t, null), i = i.nt(t, 0));\n })).next((function() {\n return {\n Va: r,\n ga: i\n };\n }));\n }, t.prototype.ma = function(t, e, n) {\n if (e.q()) return Ve.resolve();\n var r = IDBKeyRange.bound(e.first().path.j(), e.last().path.j()), i = e._t(), o = i.It();\n return In(t).Vo({\n range: r\n }, (function(t, e, r) {\n // Go through keys not found in cache.\n for (var s = b.it(t); o && b.k(o, s) < 0; ) n(o, null), o = i.It();\n o && o.isEqual(s) && (\n // Key found in cache.\n n(o, e), o = i.wt() ? i.It() : null), \n // Skip to the next key (if there is one).\n o ? r.Io(o.path.j()) : 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.wt() ? i.It() : null;\n }));\n }, t.prototype.wr = function(t, e, n) {\n var r = this, i = zt(), o = e.path.length + 1, s = {};\n if (n.isEqual(m.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.j();\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.j(), h = this.serializer.pa(n);\n s.range = IDBKeyRange.lowerBound([ a, h ], \n /* open= */ !0), s.index = Un.collectionReadTimeIndex;\n }\n return In(t).Vo(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 = r.serializer.ya(n);\n e.path.U(u.key.path) ? u instanceof mt && e.matches(u) && (i = i.nt(u.key, u)) : s.done();\n }\n })).next((function() {\n return i;\n }));\n }, \n /**\n * Returns the set of documents that have changed since the specified read\n * time.\n */\n // PORTING NOTE: This is only used for multi-tab synchronization.\n t.prototype.ba = function(t, e) {\n var n = this, r = Ft(), i = this.serializer.pa(e), o = In(t), s = IDBKeyRange.lowerBound(i, !0);\n return o.Vo({\n index: Un.readTimeIndex,\n range: s\n }, (function(t, e) {\n // Unlike `getEntry()` and others, `getNewDocumentChanges()` parses\n // the documents directly since we want to keep sentinel deletes.\n var o = n.serializer.ya(e);\n r = r.nt(o.key, o), i = e.readTime;\n })).next((function() {\n return {\n va: r,\n readTime: n.serializer.Sa(i)\n };\n }));\n }, \n /**\n * Returns the read time of the most recently read document in the cache, or\n * SnapshotVersion.MIN if not available.\n */\n // PORTING NOTE: This is only used for multi-tab synchronization.\n t.prototype.Da = function(t) {\n var e = this, n = In(t), r = m.MIN;\n return n.Vo({\n index: Un.readTimeIndex,\n reverse: !0\n }, (function(t, n, i) {\n n.readTime && (r = e.serializer.Sa(n.readTime)), i.done();\n })).next((function() {\n return r;\n }));\n }, t.prototype.Ca = function(e) {\n return new t.Fa(this, !!e && e.Na);\n }, t.prototype.ka = function(t) {\n return this.getMetadata(t).next((function(t) {\n return t.byteSize;\n }));\n }, t.prototype.getMetadata = function(t) {\n return bn(t).get(qn.key).next((function(t) {\n return _e(!!t), t;\n }));\n }, t.prototype.Ia = function(t, e) {\n return bn(t).put(qn.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.wa = function(t) {\n if (t) {\n var e = this.serializer.ya(t);\n return e instanceof gt && e.version.isEqual(m.S()) ? null : e;\n }\n return null;\n }, t;\n}();\n\n/**\n * Handles the details of adding and updating documents in the IndexedDbRemoteDocumentCache.\n *\n * Unlike the MemoryRemoteDocumentChangeBuffer, the IndexedDb implementation computes the size\n * delta for all submitted changes. This avoids having to re-read all documents from IndexedDb\n * when we apply the changes.\n */ function bn(t) {\n return Xn.co(t, qn.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the remoteDocuments object store.\n */ function In(t) {\n return Xn.co(t, Un.store);\n}\n\nfunction Tn(t) {\n return t.path.j();\n}\n\n/**\n * Retrusn an approximate size for the given document.\n */ function Nn(t) {\n var e;\n if (t.document) e = t.document; else if (t.unknownDocument) e = t.unknownDocument; else {\n if (!t.noDocument) throw Ee();\n e = t.noDocument;\n }\n return JSON.stringify(e).length;\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 */ _n.Fa = /** @class */ function(t) {\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(e, n) {\n var r = this;\n return (r = t.call(this) || this).$a = e, r.Na = n, \n // A map of document sizes prior to applying the changes in this buffer.\n r.Ma = new De((function(t) {\n return t.toString();\n })), r;\n }\n return e.__extends(n, t), n.prototype.ir = function(t) {\n var e = this, n = [], r = 0, i = new A((function(t, e) {\n return Ie(t.K(), e.K());\n }));\n return this.zn.forEach((function(o, s) {\n var u = e.Ma.get(o);\n if (s) {\n var a = e.$a.serializer.La(s, e.readTime);\n i = i.add(o.path.L());\n var h = Nn(a);\n r += h - u, n.push(e.$a.Jn(t, o, a));\n } else if (r -= u, e.Na) {\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 c = e.$a.serializer.La(new gt(o, m.S()), e.readTime);\n n.push(e.$a.Jn(t, o, c));\n } else n.push(e.$a.Zn(t, o));\n })), i.forEach((function(r) {\n n.push(e.$a.ur.Mo(t, r));\n })), n.push(this.$a.updateMetadata(t, r)), Ve.Kn(n);\n }, n.prototype.er = 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.$a.Ra(t, e).next((function(t) {\n return null === t ? (n.Ma.set(e, 0), null) : (n.Ma.set(e, t.size), t.Aa);\n }));\n }, n.prototype.sr = 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.$a.Pa(t, e).next((function(t) {\n var e = t.Va;\n // Note: `getAllFromCache` returns two maps instead of a single map from\n // keys to `DocumentSizeEntry`s. This is to allow returning the\n // `NullableMaybeDocumentMap` directly, without a conversion.\n return t.ga.forEach((function(t, e) {\n n.Ma.set(t, e);\n })), e;\n }));\n }, n;\n}(Oe);\n\nvar An = /** @class */ function() {\n function t() {\n this.Oa = new Sn;\n }\n return t.prototype.Mo = function(t, e) {\n return this.Oa.add(e), Ve.resolve();\n }, t.prototype.Pr = function(t, e) {\n return Ve.resolve(this.Oa.getEntries(e));\n }, t;\n}(), Sn = /** @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.B(), n = t.L(), r = this.index[e] || new A(w.k), i = !r.has(n);\n return this.index[e] = r.add(n), i;\n }, t.prototype.has = function(t) {\n var e = t.B(), n = t.L(), r = this.index[e];\n return r && r.has(n);\n }, t.prototype.getEntries = function(t) {\n return (this.index[t] || new A(w.k)).j();\n }, t;\n}(), Dn = 10, kn = /** @class */ function() {\n function t(t) {\n this.serializer = 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.createOrUpgrade = function(t, e, n, r) {\n var i = this;\n _e(n < r && n >= 0 && r <= Dn);\n var o = new rn(e);\n n < 1 && r >= 1 && (function(t) {\n t.createObjectStore(Rn.store);\n }(t), function(t) {\n t.createObjectStore(Ln.store, {\n keyPath: Ln.keyPath\n }), t.createObjectStore(Vn.store, {\n keyPath: Vn.keyPath,\n autoIncrement: !0\n }).createIndex(Vn.userMutationsIndex, Vn.userMutationsKeyPath, {\n unique: !0\n }), t.createObjectStore(On.store);\n }(t), Bn(t), function(t) {\n t.createObjectStore(Un.store);\n }(t));\n // Migration 2 to populate the targetGlobal object no longer needed since\n // migration 3 unconditionally clears it.\n var s = Ve.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(jn.store), t.deleteObjectStore(Mn.store), t.deleteObjectStore(Fn.store);\n }(t), Bn(t)), s = s.next((function() {\n /**\n * Creates the target global singleton row.\n *\n * @param {IDBTransaction} txn The version upgrade transaction for indexeddb\n */\n return function(t) {\n var e = t.store(Fn.store), n = new Fn(\n /*highestTargetId=*/ 0, \n /*lastListenSequenceNumber=*/ 0, m.MIN.F(), \n /*targetCount=*/ 0);\n return e.put(Fn.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(Vn.store).Ro().next((function(n) {\n t.deleteObjectStore(Vn.store), t.createObjectStore(Vn.store, {\n keyPath: Vn.keyPath,\n autoIncrement: !0\n }).createIndex(Vn.userMutationsIndex, Vn.userMutationsKeyPath, {\n unique: !0\n });\n var r = e.store(Vn.store), i = n.map((function(t) {\n return r.put(t);\n }));\n return Ve.Kn(i);\n }));\n }(t, o);\n }))), s = s.next((function() {\n !function(t) {\n t.createObjectStore(zn.store, {\n keyPath: zn.keyPath\n });\n }(t);\n }))), n < 5 && r >= 5 && (s = s.next((function() {\n return i.removeAcknowledgedMutations(o);\n }))), n < 6 && r >= 6 && (s = s.next((function() {\n return function(t) {\n t.createObjectStore(qn.store);\n }(t), i.addDocumentGlobal(o);\n }))), n < 7 && r >= 7 && (s = s.next((function() {\n return i.ensureSequenceNumbers(o);\n }))), n < 8 && r >= 8 && (s = s.next((function() {\n return i.createCollectionParentIndex(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(Un.store);\n e.createIndex(Un.readTimeIndex, Un.readTimeIndexPath, {\n unique: !1\n }), e.createIndex(Un.collectionReadTimeIndex, Un.collectionReadTimeIndexPath, {\n unique: !1\n });\n }(e);\n }))), n < 10 && r >= 10 && (s = s.next((function() {\n return i.rewriteCanonicalIds(o);\n }))), s;\n }, t.prototype.addDocumentGlobal = function(t) {\n var e = 0;\n return t.store(Un.store).Vo((function(t, n) {\n e += Nn(n);\n })).next((function() {\n var n = new qn(e);\n return t.store(qn.store).put(qn.key, n);\n }));\n }, t.prototype.removeAcknowledgedMutations = function(t) {\n var e = this, n = t.store(Ln.store), r = t.store(Vn.store);\n return n.Ro().next((function(n) {\n return Ve.forEach(n, (function(n) {\n var i = IDBKeyRange.bound([ n.userId, -1 ], [ n.userId, n.lastAcknowledgedBatchId ]);\n return r.Ro(Vn.userMutationsIndex, i).next((function(r) {\n return Ve.forEach(r, (function(r) {\n _e(r.userId === n.userId);\n var i = e.serializer.Oo(r);\n return fn(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.ensureSequenceNumbers = function(t) {\n var e = t.store(jn.store), n = t.store(Un.store);\n return wn(t).next((function(t) {\n var r = [];\n return n.Vo((function(n, i) {\n var o = new w(n), s = function(t) {\n return [ 0, He(t) ];\n }(o);\n r.push(e.get(s).next((function(n) {\n return n ? Ve.resolve() : function(n) {\n return e.put(new jn(0, He(n), t));\n }(o);\n })));\n })).next((function() {\n return Ve.Kn(r);\n }));\n }));\n }, t.prototype.createCollectionParentIndex = function(t, e) {\n // Create the index.\n t.createObjectStore(Gn.store, {\n keyPath: Gn.keyPath\n });\n var n = e.store(Gn.store), r = new Sn, i = function(t) {\n if (r.add(t)) {\n var e = t.B(), i = t.L();\n return n.put({\n collectionId: e,\n parent: He(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(Un.store).Vo({\n Po: !0\n }, (function(t, e) {\n var n = new w(t);\n return i(n.L());\n })).next((function() {\n return e.store(On.store).Vo({\n Po: !0\n }, (function(t, e) {\n t[0];\n var n = t[1], r = (t[2], $e(n));\n return i(r.L());\n }));\n }));\n }, t.prototype.rewriteCanonicalIds = function(t) {\n var e = this, n = t.store(Mn.store);\n return n.Vo((function(t, r) {\n var i = e.serializer.ca(r), o = e.serializer._a(i);\n return n.put(o);\n }));\n }, t;\n}(), xn = function(t, e) {\n this.seconds = t, this.nanoseconds = e;\n}, Rn = 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 * 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 * 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 */\nRn.store = \"owner\", \n/**\n * The key string used for the single object that exists in the\n * DbPrimaryClient store.\n */\nRn.key = \"owner\";\n\nvar Ln = 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 */\nn) {\n this.userId = t, this.lastAcknowledgedBatchId = e, this.lastStreamToken = n;\n};\n\n/** Name of the IndexedDb object store. */ Ln.store = \"mutationQueues\", \n/** Keys are automatically assigned via the userId property. */\nLn.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 Vn = 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 JsonProtoSerializer.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. */ Vn.store = \"mutations\", \n/** Keys are automatically assigned via the userId, batchId properties. */\nVn.keyPath = \"batchId\", \n/** The index name for lookup of mutations by user. */\nVn.userMutationsIndex = \"userMutationsIndex\", \n/** The user mutations index is keyed by [userId, batchId] pairs. */\nVn.userMutationsKeyPath = [ \"userId\", \"batchId\" ];\n\nvar On = /** @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, He(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, He(e), n ];\n }, t;\n}();\n\nOn.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 */\nOn.PLACEHOLDER = new On;\n\nvar Pn = function(t, e) {\n this.path = t, this.readTime = e;\n}, Cn = function(t, e) {\n this.path = t, this.version = e;\n}, Un = \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 */ Un.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 */\nUn.readTimeIndex = \"readTimeIndex\", Un.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 */\nUn.collectionReadTimeIndex = \"collectionReadTimeIndex\", Un.collectionReadTimeIndexPath = [ \"parentPath\", \"readTime\" ];\n\n/**\n * Contains a single entry that has metadata about the remote document cache.\n */\nvar qn = \n/**\n * @param byteSize Approximately the total size in bytes of all the documents in the document\n * cache.\n */\nfunction(t) {\n this.byteSize = t;\n};\n\nqn.store = \"remoteDocumentGlobal\", qn.key = \"remoteDocumentGlobalKey\";\n\nvar Mn = 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\nMn.store = \"targets\", \n/** Keys are automatically assigned via the targetId property. */\nMn.keyPath = \"targetId\", \n/** The name of the queryTargets index. */\nMn.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 */\nMn.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 jn = 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. */ jn.store = \"targetDocuments\", \n/** Keys are automatically assigned via the targetId, path properties. */\njn.keyPath = [ \"targetId\", \"path\" ], \n/** The index name for the reverse index. */\njn.documentTargetsIndex = \"documentTargetsIndex\", \n/** We also need to create the reverse index for these properties. */\njn.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 Fn = 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 */ Fn.key = \"targetGlobalKey\", Fn.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 Gn = 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. */ function Bn(t) {\n t.createObjectStore(jn.store, {\n keyPath: jn.keyPath\n }).createIndex(jn.documentTargetsIndex, jn.documentTargetsKeyPath, {\n unique: !0\n }), \n // NOTE: This is unique only because the TargetId is the suffix.\n t.createObjectStore(Mn.store, {\n keyPath: Mn.keyPath\n }).createIndex(Mn.queryTargetsIndexName, Mn.queryTargetsKeyPath, {\n unique: !0\n }), t.createObjectStore(Fn.store);\n}\n\nGn.store = \"collectionParents\", \n/** Keys are automatically assigned via the collectionId, parent properties. */\nGn.keyPath = [ \"collectionId\", \"parent\" ];\n\nvar zn = 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. */ zn.store = \"clientMetadata\", \n/** Keys are automatically assigned via the clientId properties. */\nzn.keyPath = \"clientId\";\n\nvar Kn = e.__spreadArrays(e.__spreadArrays(e.__spreadArrays([ Ln.store, Vn.store, On.store, Un.store, Mn.store, Rn.store, Fn.store, jn.store ], [ zn.store ]), [ qn.store ]), [ Gn.store ]), Yn = /** @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.xa = new Sn;\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.Mo = function(t, e) {\n var n = this;\n if (!this.xa.has(e)) {\n var r = e.B(), i = e.L();\n t.rr((function() {\n // Add the collection to the in memory cache only if the transaction was\n // successfully committed.\n n.xa.add(e);\n }));\n var o = {\n collectionId: r,\n parent: He(i)\n };\n return Qn(t).put(o);\n }\n return Ve.resolve();\n }, t.prototype.Pr = function(t, e) {\n var n = [], r = IDBKeyRange.bound([ e, \"\" ], [ Ne(e), \"\" ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return Qn(t).Ro(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($e(o.parent));\n }\n return n;\n }));\n }, t;\n}();\n\n// V2 is no longer usable (see comment at top of file)\n// Visible for testing\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 * A persisted implementation of IndexManager.\n */\n/**\n * Helper to get a typed SimpleDbStore for the collectionParents\n * document store.\n */\nfunction Qn(t) {\n return Xn.co(t, Gn.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/** Serializer for values stored in the LocalStore. */ var Zn = /** @class */ function() {\n function t(t) {\n this.Ba = t;\n }\n /** Decodes a remote document from storage locally to a Document. */ return t.prototype.ya = function(t) {\n if (t.document) return this.Ba.vi(t.document, !!t.hasCommittedMutations);\n if (t.noDocument) {\n var e = b.it(t.noDocument.path), n = this.qa(t.noDocument.readTime);\n return new gt(e, n, {\n hasCommittedMutations: !!t.hasCommittedMutations\n });\n }\n if (t.unknownDocument) {\n var r = b.it(t.unknownDocument.path), i = this.qa(t.unknownDocument.version);\n return new wt(r, i);\n }\n return Ee();\n }, \n /** Encodes a document for storage locally. */ t.prototype.La = function(t, e) {\n var n = this.pa(e), r = t.key.path.L().j();\n if (t instanceof mt) {\n var i = this.Ba.bi(t), o = t.hasCommittedMutations;\n return new Un(\n /* unknownDocument= */ null, \n /* noDocument= */ null, i, o, n, r);\n }\n if (t instanceof gt) {\n var s = t.key.path.j(), u = this.Ua(t.version), a = t.hasCommittedMutations;\n return new Un(\n /* unknownDocument= */ null, new Pn(s, u), \n /* document= */ null, a, n, r);\n }\n if (t instanceof wt) {\n var h = t.key.path.j(), c = this.Ua(t.version);\n return new Un(new Cn(h, c), \n /* noDocument= */ null, \n /* document= */ null, \n /* hasCommittedMutations= */ !0, n, r);\n }\n return Ee();\n }, t.prototype.pa = function(t) {\n var e = t.F();\n return [ e.seconds, e.nanoseconds ];\n }, t.prototype.Sa = function(t) {\n var e = new v(t[0], t[1]);\n return m.v(e);\n }, t.prototype.Ua = function(t) {\n var e = t.F();\n return new xn(e.seconds, e.nanoseconds);\n }, t.prototype.qa = function(t) {\n var e = new v(t.seconds, t.nanoseconds);\n return m.v(e);\n }, \n /** Encodes a batch of mutations into a DbMutationBatch for local storage. */ t.prototype.$o = function(t, e) {\n var n = this, r = e.baseMutations.map((function(t) {\n return n.Ba.$i(t);\n })), i = e.mutations.map((function(t) {\n return n.Ba.$i(t);\n }));\n return new Vn(t, e.batchId, e.An.toMillis(), r, i);\n }, \n /** Decodes a DbMutationBatch into a MutationBatch */ t.prototype.Oo = function(t) {\n var e = this, n = (t.baseMutations || []).map((function(t) {\n return e.Ba.xi(t);\n })), r = t.mutations.map((function(t) {\n return e.Ba.xi(t);\n })), i = v.fromMillis(t.localWriteTimeMs);\n return new ke(t.batchId, i, n, r);\n }, \n /** Decodes a DbTarget into TargetData */ t.prototype.ca = function(t) {\n var e, n = this.qa(t.readTime), r = void 0 !== t.lastLimboFreeSnapshotVersion ? this.qa(t.lastLimboFreeSnapshotVersion) : m.MIN;\n return e = void 0 !== t.query.documents ? this.Ba.Ki(t.query) : this.Ba.Ji(t.query), \n new Ct(e, t.targetId, 0 /* Listen */ , t.lastListenSequenceNumber, n, r, R.fromBase64String(t.resumeToken));\n }, \n /** Encodes TargetData into a DbTarget for storage locally. */ t.prototype._a = function(t) {\n var e, n = this.Ua(t.ts), r = this.Ua(t.lastLimboFreeSnapshotVersion);\n e = t.target.Pe() ? this.Ba.ji(t.target) : this.Ba.Gi(t.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 i = t.resumeToken.toBase64();\n // lastListenSequenceNumber is always 0 until we do real GC.\n return new Mn(t.targetId, t.target.canonicalId(), n, i, t.sequenceNumber, r, e);\n }, t;\n}(), Wn = \"Another tab has exclusive access to the persistence layer. To allow shared access, make sure to invoke `enablePersistence()` with `synchronizeTabs:true` in all tabs.\", Hn = /** @class */ function(t) {\n function n(e, n) {\n var r = this;\n return (r = t.call(this) || this).jo = e, r.Qa = n, r;\n }\n return e.__extends(n, t), n;\n}(Ce), Xn = /** @class */ function() {\n function t(e, n, r, i, o, s, u, a) {\n if (this.allowTabSynchronization = e, this.persistenceKey = n, this.clientId = r, \n this.Nr = s, this.Wa = a, this.ja = !1, this.isPrimary = !1, this.networkEnabled = !0, \n /** Our window.unload handler, if registered. */\n this.Ka = null, this.inForeground = !1, \n /** Our 'visibilitychange' listener if registered. */\n this.Ga = null, \n /** The client metadata refresh task. */\n this.za = null, \n /** The last time we garbage collected the client metadata object store. */\n this.Ha = Number.NEGATIVE_INFINITY, \n /** A listener to notify on primary state changes. */\n this.Ya = function(t) {\n return Promise.resolve();\n }, !t.ho()) throw new c(h.UNIMPLEMENTED, \"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.\");\n if (this.yo = new tr(this, o), this.Ja = n + t.Xa, this.serializer = new Zn(u), \n this.document = i.document, this.Za = new vn(this.yo, this.serializer), this.ur = new Yn, \n this.or = new _n(this.serializer, this.ur), !i.window || !i.window.localStorage) throw new c(h.UNIMPLEMENTED, \"IndexedDB persistence is only available on platforms that support LocalStorage.\");\n this.window = i.window, this.tu = this.window.localStorage;\n }\n return t.co = function(t, e) {\n if (t instanceof Hn) return tn.co(t.jo, e);\n throw Ee();\n }, \n /**\n * Attempt to start IndexedDb persistence.\n *\n * @return {Promise<void>} Whether persistence was enabled.\n */\n t.prototype.start = function() {\n var t = this;\n return tn.ro(this.Ja, Dn, new kn(this.serializer)).then((function(e) {\n return t.eu = e, t.su();\n })).then((function() {\n return t.iu(), t.nu(), t.ru(), t.eu.runTransaction(\"readonly\", [ Fn.store ], (function(t) {\n return wn(t);\n }));\n })).then((function(e) {\n t.hu = new Me(e, t.Wa);\n })).then((function() {\n t.ja = !0;\n })).catch((function(e) {\n return t.eu && t.eu.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.ou = function(t) {\n var n = this;\n return this.Ya = function(r) {\n return e.__awaiter(n, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n return this.Kh ? [ 2 /*return*/ , t(r) ] : [ 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.au = function(t) {\n var n = this;\n this.eu._o((function(r) {\n return e.__awaiter(n, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return null === r.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.uu = function(t) {\n var n = 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.Nr.Zr((function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.Kh ? [ 4 /*yield*/ , this.su() ] : [ 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.su = function() {\n var t = this;\n return this.eu.runTransaction(\"readwrite\", Kn, (function(e) {\n return $n(e).put(new zn(t.clientId, Date.now(), t.networkEnabled, t.inForeground)).next((function() {\n if (t.isPrimary) return t.cu(e).next((function(e) {\n e || (t.isPrimary = !1, t.Nr.Zr((function() {\n return t.Ya(!1);\n })));\n }));\n })).next((function() {\n return t._u(e);\n })).next((function(n) {\n return t.isPrimary && !n ? t.lu(e).next((function() {\n return !1;\n })) : !!n && t.du(e).next((function() {\n return !0;\n }));\n }));\n })).catch((function(e) {\n if (!t.allowTabSynchronization) throw e;\n return me(\"IndexedDbPersistence\", \"Releasing owner lease after error during lease refresh\", e), \n /* isPrimary= */ !1;\n })).then((function(e) {\n t.isPrimary !== e && t.Nr.Zr((function() {\n return t.Ya(e);\n })), t.isPrimary = e;\n }));\n }, t.prototype.cu = function(t) {\n var e = this;\n return Jn(t).get(Rn.key).next((function(t) {\n return Ve.resolve(e.fu(t));\n }));\n }, t.prototype.Tu = function(t) {\n return $n(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.Eu = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return !this.isPrimary || this.Iu(this.Ha, 18e5) ? [ 3 /*break*/ , 2 ] : (this.Ha = Date.now(), \n [ 4 /*yield*/ , this.runTransaction(\"maybeGarbageCollectMultiClientState\", \"readwrite-primary\", (function(e) {\n var r = t.co(e, zn.store);\n return r.Ro().next((function(t) {\n var e = n.wu(t, 18e5), i = t.filter((function(t) {\n return -1 === e.indexOf(t);\n }));\n // Delete metadata for clients that are no longer considered active.\n return Ve.forEach(i, (function(t) {\n return r.delete(t.clientId);\n })).next((function() {\n return i;\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 e.sent().forEach((function(t) {\n n.window.localStorage.removeItem(n.Ru(t.clientId));\n })), e.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.ru = function() {\n var t = this;\n this.za = this.Nr.Wr(\"client_metadata_refresh\" /* ClientMetadataRefresh */ , 4e3, (function() {\n return t.su().then((function() {\n return t.Eu();\n })).then((function() {\n return t.ru();\n }));\n }));\n }, \n /** Checks whether `client` is the local client. */ t.prototype.fu = 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._u = function(t) {\n var e = this;\n return Jn(t).get(Rn.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 if (null !== n && e.Iu(n.leaseTimestampMs, 5e3) && !e.Au(n.ownerId)) {\n if (e.fu(n) && e.networkEnabled) return !0;\n if (!e.fu(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 c(h.FAILED_PRECONDITION, Wn);\n return !1;\n }\n }\n return !(!e.networkEnabled || !e.inForeground) || $n(t).Ro().next((function(t) {\n return void 0 === e.wu(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 && me(\"IndexedDbPersistence\", \"Client \" + (t ? \"is\" : \"is not\") + \" eligible for a primary lease.\"), \n t;\n }));\n }, t.prototype.mu = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\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.ja = !1, this.Pu(), this.za && (this.za.cancel(), this.za = null), this.Vu(), \n this.gu(), [ 4 /*yield*/ , this.eu.runTransaction(\"readwrite\", [ Rn.store, zn.store ], (function(e) {\n return t.lu(e).next((function() {\n return t.Tu(e);\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 return e.sent(), this.eu.close(), \n // Remove the entry marking the client as zombied from LocalStorage since\n // we successfully deleted its metadata from IndexedDb.\n this.pu(), [ 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.wu = function(t, e) {\n var n = this;\n return t.filter((function(t) {\n return n.Iu(t.updateTimeMs, e) && !n.Au(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.yu = function() {\n var t = this;\n return this.eu.runTransaction(\"readonly\", [ zn.store ], (function(e) {\n return $n(e).Ro().next((function(e) {\n return t.wu(e, 18e5).map((function(t) {\n return t.clientId;\n }));\n }));\n }));\n }, t.clearPersistence = function(n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return t.ho() ? (r = n + t.Xa, [ 4 /*yield*/ , tn.delete(r) ]) : [ 2 /*return*/ , Promise.resolve() ];\n\n case 1:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, Object.defineProperty(t.prototype, \"Kh\", {\n get: function() {\n return this.ja;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.bu = function(t) {\n return hn.vo(t, this.serializer, this.ur, this.yo);\n }, t.prototype.vu = function() {\n return this.Za;\n }, t.prototype.Su = function() {\n return this.or;\n }, t.prototype.Du = function() {\n return this.ur;\n }, t.prototype.runTransaction = function(t, e, n) {\n var r = this;\n me(\"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.eu.runTransaction(o, Kn, (function(o) {\n return i = new Hn(o, r.hu.next()), \"readwrite-primary\" === e ? r.cu(o).next((function(t) {\n return !!t || r._u(o);\n })).next((function(e) {\n if (!e) throw ge(\"Failed to obtain primary lease for action '\" + t + \"'.\"), r.isPrimary = !1, \n r.Nr.Zr((function() {\n return r.Ya(!1);\n })), new c(h.FAILED_PRECONDITION, Pe);\n return n(i);\n })).next((function(t) {\n return r.du(o).next((function() {\n return t;\n }));\n })) : r.Cu(o).next((function() {\n return n(i);\n }));\n })).then((function(t) {\n return i.hr(), 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.Cu = function(t) {\n var e = this;\n return Jn(t).get(Rn.key).next((function(t) {\n if (null !== t && e.Iu(t.leaseTimestampMs, 5e3) && !e.Au(t.ownerId) && !e.fu(t) && !t.allowTabSynchronization) throw new c(h.FAILED_PRECONDITION, Wn);\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.du = function(t) {\n var e = new Rn(this.clientId, this.allowTabSynchronization, Date.now());\n return Jn(t).put(Rn.key, e);\n }, t.ho = function() {\n return tn.ho();\n }, \n /**\n * Generates a string used as a prefix when storing data in IndexedDB and\n * LocalStorage.\n */\n t.Fu = function(t) {\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 e = t.ci.projectId;\n return t.ci.In || (e += \".\" + t.ci.database), \"firestore/\" + t.persistenceKey + \"/\" + e + \"/\";\n }, \n /** Checks the primary lease and removes it if we are the current primary. */ t.prototype.lu = function(t) {\n var e = this, n = Jn(t);\n return n.get(Rn.key).next((function(t) {\n return e.fu(t) ? (me(\"IndexedDbPersistence\", \"Releasing primary lease.\"), n.delete(Rn.key)) : Ve.resolve();\n }));\n }, \n /** Verifies that `updateTimeMs` is within `maxAgeMs`. */ t.prototype.Iu = function(t, e) {\n var n = Date.now();\n return !(t < n - e || t > n && (ge(\"Detected an update time that is in the future: \" + t + \" > \" + n), \n 1));\n }, t.prototype.iu = function() {\n var t = this;\n null !== this.document && \"function\" == typeof this.document.addEventListener && (this.Ga = function() {\n t.Nr.Zr((function() {\n return t.inForeground = \"visible\" === t.document.visibilityState, t.su();\n }));\n }, this.document.addEventListener(\"visibilitychange\", this.Ga), this.inForeground = \"visible\" === this.document.visibilityState);\n }, t.prototype.Vu = function() {\n this.Ga && (this.document.removeEventListener(\"visibilitychange\", this.Ga), this.Ga = 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.nu = function() {\n var t = this;\n \"function\" == typeof this.window.addEventListener && (this.Ka = 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 t.Pu(), t.Nr.Zr((function() {\n return t.mu();\n }));\n }, this.window.addEventListener(\"unload\", this.Ka));\n }, t.prototype.gu = function() {\n this.Ka && (this.window.removeEventListener(\"unload\", this.Ka), this.Ka = 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.Au = function(t) {\n try {\n var e = null !== this.tu.getItem(this.Ru(t));\n return me(\"IndexedDbPersistence\", \"Client '\" + t + \"' \" + (e ? \"is\" : \"is not\") + \" zombied in LocalStorage\"), \n e;\n } catch (t) {\n // Gracefully handle if LocalStorage isn't working.\n return ge(\"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.Pu = function() {\n try {\n this.tu.setItem(this.Ru(this.clientId), String(Date.now()));\n } catch (t) {\n // Gracefully handle if LocalStorage isn't available / working.\n ge(\"Failed to set zombie client id.\", t);\n }\n }, \n /** Removes the zombied client entry if it exists. */ t.prototype.pu = function() {\n try {\n this.tu.removeItem(this.Ru(this.clientId));\n } catch (t) {\n // Ignore\n }\n }, t.prototype.Ru = function(t) {\n return \"firestore_zombie_\" + this.persistenceKey + \"_\" + t;\n }, t;\n}();\n\n/**\n * A helper function for figuring out what kind of query has been stored.\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 * The name of the main (and currently only) IndexedDB database. this name is\n * appended to the prefix provided to the IndexedDbPersistence constructor.\n */\n/**\n * Helper to get a typed SimpleDbStore for the primary client object store.\n */\nfunction Jn(t) {\n return t.store(Rn.store);\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the client metadata object store.\n */ function $n(t) {\n return t.store(zn.store);\n}\n\n/** Provides LRU functionality for IndexedDB persistence. */ Xn.Xa = \"main\";\n\nvar tr = /** @class */ function() {\n function t(t, e) {\n this.db = t, this.Nu = null, this.qh = new We(this, e);\n }\n return t.prototype.Yh = function(t) {\n var e = this.ku(t);\n return this.db.vu().la(t).next((function(t) {\n return e.next((function(e) {\n return t + e;\n }));\n }));\n }, t.prototype.ku = function(t) {\n var e = 0;\n return this.Xh(t, (function(t) {\n e++;\n })).next((function() {\n return e;\n }));\n }, t.prototype.Xs = function(t, e) {\n return this.db.vu().Xs(t, e);\n }, t.prototype.Xh = function(t, e) {\n return this.$u(t, (function(t, n) {\n return e(n);\n }));\n }, t.prototype.Mu = function(t) {\n this.Nu = t;\n }, t.prototype.vn = function(t, e) {\n return er(t, e);\n }, t.prototype.Dn = function(t, e) {\n return er(t, e);\n }, t.prototype.Zh = function(t, e, n) {\n return this.db.vu().Zh(t, e, n);\n }, t.prototype.Go = function(t, e) {\n return er(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.Lu = function(t, e) {\n return this.Nu.Mn(e) ? Ve.resolve(!0) : function(t, e) {\n var n = !1;\n return dn(t).po((function(r) {\n return cn(t, r, e).next((function(t) {\n return t && (n = !0), Ve.resolve(!t);\n }));\n })).next((function() {\n return n;\n }));\n }(t, e);\n }, t.prototype.to = function(t, e) {\n var n = this, r = this.db.Su().Ca(), i = [], o = 0;\n return this.$u(t, (function(s, u) {\n if (u <= e) {\n var a = n.Lu(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.tr(t, s).next((function() {\n return r.Zn(s), En(t).delete([ 0, He(s.path) ]);\n }));\n }));\n i.push(a);\n }\n })).next((function() {\n return Ve.Kn(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.es(t.Qa);\n return this.db.vu().oa(t, n);\n }, t.prototype.Ou = function(t, e) {\n return er(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.$u = function(t, e) {\n var n, r = En(t), i = Me.Fr;\n return r.Vo({\n index: jn.documentTargetsIndex\n }, (function(t, r) {\n var o = t[0], s = (t[1], 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 !== Me.Fr && e(new b($e(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 = Me.Fr;\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 !== Me.Fr && e(new b($e(n)), i);\n }));\n }, t.prototype.so = function(t) {\n return this.db.Su().ka(t);\n }, t;\n}();\n\nfunction er(t, e) {\n return En(t).put(\n /**\n * @return A value suitable for writing a sentinel row in the target-document\n * store.\n */\n function(t, e) {\n return new jn(0, He(t.path), e);\n }(e, t.Qa));\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 * Local storage in the Firestore client. Coordinates persistence components\n * like the mutation queue and remote document cache to present a\n * latency-compensated view of stored data.\n *\n * The LocalStore is responsible for accepting mutations from the Sync Engine.\n * Writes from the client are put into a queue as provisional Mutations until\n * they are processed by the RemoteStore and confirmed as having been written\n * to the server.\n *\n * The local store provides the local version of documents that have been\n * modified locally. It maintains the constraint:\n *\n * LocalDocument = RemoteDocument + Active(LocalMutations)\n *\n * (Active mutations are those that are enqueued and have not been previously\n * acknowledged or rejected).\n *\n * The RemoteDocument (\"ground truth\") state is provided via the\n * applyChangeBatch method. It will be some version of a server-provided\n * document OR will be a server-provided document PLUS acknowledged mutations:\n *\n * RemoteDocument' = RemoteDocument + Acknowledged(LocalMutations)\n *\n * Note that this \"dirty\" version of a RemoteDocument will not be identical to a\n * server base version, since it has LocalMutations added to it pending getting\n * an authoritative copy from the server.\n *\n * Since LocalMutations can be rejected by the server, we have to be able to\n * revert a LocalMutation that has already been applied to the LocalDocument\n * (typically done by replaying all remaining LocalMutations to the\n * RemoteDocument to re-apply).\n *\n * The LocalStore is responsible for the garbage collection of the documents it\n * contains. For now, it every doc referenced by a view, the mutation queue, or\n * the RemoteStore.\n *\n * It also maintains the persistence of mapping queries to resume tokens and\n * target ids. It needs to know this data about queries to properly know what\n * docs it would be allowed to garbage collect.\n *\n * The LocalStore must be able to efficiently execute queries against its local\n * cache of the documents, to provide the initial set of results before any\n * remote changes have been received.\n *\n * Note: In TypeScript, most methods return Promises since the implementation\n * may rely on fetching data from IndexedDB which is async.\n * These Promises will only be rejected on an I/O error or other internal\n * (unexpected) failure (e.g. failed assert) and always represent an\n * unrecoverable error (should be caught / reported by the async_queue).\n */ var nr = /** @class */ function() {\n function t(\n /** Manages our in-memory or durable persistence. */\n t, e, n) {\n this.persistence = t, this.xu = e, \n /**\n * The set of document references maintained by any local views.\n */\n this.Bu = new Re, \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.qu = new I(Ie), \n /** Maps a target to its targetID. */\n // TODO(wuandy): Evaluate if TargetId can be part of Target.\n this.Uu = new De((function(t) {\n return t.canonicalId();\n })), \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.Qu = m.MIN, this.persistence.yo.Mu(this.Bu), this.ar = t.bu(n), this.Wu = t.Su(), \n this.Za = t.vu(), this.ju = new Ue(this.Wu, this.ar, this.persistence.Du()), this.xu.Ku(this.ju)\n /** Starts the LocalStore. */;\n }\n return t.prototype.start = function() {\n return Promise.resolve();\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.\n t.prototype.Gu = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i, o = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return n = this.ar, r = this.ju, [ 4 /*yield*/ , this.persistence.runTransaction(\"Handle user change\", \"readonly\", (function(e) {\n // Swap out the mutation queue, grabbing the pending mutation batches\n // before and after.\n var i;\n return o.ar.Uo(e).next((function(s) {\n return i = s, n = o.persistence.bu(t), \n // Recreate our LocalDocumentsView using the new\n // MutationQueue.\n r = new Ue(o.Wu, n, o.persistence.Du()), n.Uo(e);\n })).next((function(t) {\n for (var n = [], o = [], s = Zt(), u = 0, a = i\n // Union the old/new changed keys.\n ; u < a.length; u++) {\n var h = a[u];\n n.push(h.batchId);\n for (var c = 0, f = h.mutations; c < f.length; c++) {\n var l = f[c];\n s = s.add(l.key);\n }\n }\n for (var p = 0, d = t; p < d.length; p++) {\n var y = d[p];\n o.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 r.Tr(e, s).next((function(t) {\n return {\n zu: t,\n Hu: n,\n Yu: o\n };\n }));\n }));\n })) ];\n\n case 1:\n return i = e.sent(), [ 2 /*return*/ , (this.ar = n, this.ju = r, this.xu.Ku(this.ju), \n i) ];\n }\n }));\n }));\n }, \n /* Accept locally generated Mutations and commit them to storage. */ t.prototype.Ju = function(t) {\n var e, n = this, r = v.now(), i = t.reduce((function(t, e) {\n return t.add(e.key);\n }), Zt());\n return this.persistence.runTransaction(\"Locally write mutations\", \"readwrite\", (function(o) {\n return n.ju.Tr(o, i).next((function(i) {\n e = i;\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 = t; u < a.length; u++) {\n var h = a[u], c = h.ee(e.get(h.key));\n null != c && \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 ct(h.key, c, c.se(), ut.exists(!0)));\n }\n return n.ar.ko(o, r, s, t);\n }));\n })).then((function(t) {\n var n = t.Pn(e);\n return {\n batchId: t.batchId,\n zn: n\n };\n }));\n }, \n /**\n * Acknowledge 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 */\n t.prototype.Do = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Acknowledge batch\", \"readwrite-primary\", (function(n) {\n var r = t.batch.keys(), i = e.Wu.Ca({\n Na: !0\n });\n return e.ar.Do(n, t.batch, t.streamToken).next((function() {\n return e.Xu(n, t, i);\n })).next((function() {\n return i.apply(n);\n })).next((function() {\n return e.ar.zo(n);\n })).next((function() {\n return e.ju.Tr(n, r);\n }));\n }));\n }, \n /**\n * Remove mutations from the MutationQueue for the specified batch;\n * LocalDocuments will be recalculated.\n *\n * @returns The resulting modified documents.\n */\n t.prototype.Zu = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Reject batch\", \"readwrite-primary\", (function(n) {\n var r;\n return e.ar.Lo(n, t).next((function(t) {\n return _e(null !== t), r = t.keys(), e.ar.Wo(n, t);\n })).next((function() {\n return e.ar.zo(n);\n })).next((function() {\n return e.ju.Tr(n, r);\n }));\n }));\n }, \n /**\n * Returns the largest (latest) batch id in mutation queue that is pending server response.\n * Returns `BATCHID_UNKNOWN` if the queue is empty.\n */\n t.prototype.qo = function() {\n var t = this;\n return this.persistence.runTransaction(\"Get highest unacknowledged batch id\", \"readonly\", (function(e) {\n return t.ar.qo(e);\n }));\n }, \n /** Returns the last recorded stream token for the current user. */ t.prototype.Fo = function() {\n var t = this;\n return this.persistence.runTransaction(\"Get last stream token\", \"readonly\", (function(e) {\n return t.ar.Fo(e);\n }));\n }, \n /**\n * Sets the stream token for the current user without acknowledging any\n * mutation batch. This is usually only useful after a stream handshake or in\n * response to an error that requires clearing the stream token.\n */\n t.prototype.No = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Set last stream token\", \"readwrite-primary\", (function(n) {\n return e.ar.No(n, t);\n }));\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 */\n t.prototype.ea = function() {\n var t = this;\n return this.persistence.runTransaction(\"Get last remote snapshot version\", \"readonly\", (function(e) {\n return t.Za.ea(e);\n }));\n }, \n /**\n * Update 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 */\n t.prototype.tc = function(e) {\n var n = this, r = e.ts, i = this.qu;\n return this.persistence.runTransaction(\"Apply remote event\", \"readwrite-primary\", (function(o) {\n var s = n.Wu.Ca({\n Na: !0\n });\n // Reset newTargetDataByTargetMap in case this transaction gets re-run.\n i = n.qu;\n var u = [];\n e.Ts.forEach((function(e, s) {\n var a = i.get(s);\n if (a) {\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 u.push(n.Za.Ta(o, e.gs, s).next((function() {\n return n.Za.fa(o, e.Ps, s);\n })));\n var h = e.resumeToken;\n // Update the resume token if the change includes one.\n if (h.Ot() > 0) {\n var c = a.ss(h, r).es(o.Qa);\n i = i.nt(s, c), \n // Update the target data if there are target changes (or if\n // sufficient time has passed since the last update).\n t.ec(a, c, e) && u.push(n.Za.oa(o, c));\n }\n }\n }));\n var a = Ft(), h = Zt();\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.Is.forEach((function(t, e) {\n h = h.add(t);\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 u.push(s.getEntries(o, h).next((function(t) {\n e.Is.forEach((function(i, h) {\n var c = t.get(i);\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 h instanceof gt && h.version.isEqual(m.MIN) ? (\n // NoDocuments with SnapshotVersion.MIN are used in manufactured\n // events. We remove these documents from cache since we lost\n // access.\n s.Zn(i, r), a = a.nt(i, h)) : null == c || h.version.D(c.version) > 0 || 0 === h.version.D(c.version) && c.hasPendingWrites ? (s.Jn(h, r), \n a = a.nt(i, h)) : me(\"LocalStore\", \"Ignoring outdated watch update for \", i, \". Current version:\", c.version, \" Watch version:\", h.version), \n e.ws.has(i) && u.push(n.persistence.yo.Ou(o, i));\n }));\n }))), !r.isEqual(m.MIN)) {\n var c = n.Za.ea(o).next((function(t) {\n return n.Za.ia(o, o.Qa, r);\n }));\n u.push(c);\n }\n return Ve.Kn(u).next((function() {\n return s.apply(o);\n })).next((function() {\n return n.ju.Er(o, a);\n }));\n })).then((function(t) {\n return n.qu = i, t;\n }));\n }, \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 t.ec = function(t, e, n) {\n // Always persist target data if we don't already have a resume token.\n return _e(e.resumeToken.Ot() > 0), 0 === t.resumeToken.Ot() || (e.ts.C() - t.ts.C() >= this.sc || n.Ps.size + n.Vs.size + n.gs.size > 0);\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 }, \n /**\n * Notify local store of the changed views to locally pin documents.\n */\n t.prototype.ic = function(t) {\n for (var e = this, n = 0, r = t; n < r.length; n++) {\n var i = r[n], o = i.targetId;\n if (this.Bu.Sn(i.pr, o), this.Bu.Fn(i.yr, o), !i.fromCache) {\n var s = this.qu.get(o), u = s.ts, a = s.ns(u);\n // Advance the last limbo free snapshot version\n this.qu = this.qu.nt(o, a);\n }\n }\n return this.persistence.runTransaction(\"notifyLocalViewChanges\", \"readwrite\", (function(n) {\n return Ve.forEach(t, (function(t) {\n return Ve.forEach(t.yr, (function(t) {\n return e.persistence.yo.Dn(n, t);\n }));\n }));\n }));\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 t.prototype.nc = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Get next mutation batch\", \"readonly\", (function(n) {\n return void 0 === t && (t = -1), e.ar.Bo(n, t);\n }));\n }, \n /**\n * Read the current value of a Document with a given key or null if not\n * found - used for testing.\n */\n t.prototype.rc = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"read document\", \"readonly\", (function(n) {\n return e.ju.cr(n, t);\n }));\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 */\n t.prototype.hc = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Allocate target\", \"readwrite\", (function(n) {\n var r;\n return e.Za.da(n, t).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, Ve.resolve(r)) : e.Za.Xo(n).next((function(i) {\n return r = new Ct(t, i, 0 /* Listen */ , n.Qa), e.Za.na(n, r).next((function() {\n return r;\n }));\n }));\n }));\n })).then((function(n) {\n return null === e.qu.get(n.targetId) && (e.qu = e.qu.nt(n.targetId, n), e.Uu.set(t, n.targetId)), \n 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 t.prototype.da = function(t, e) {\n var n = this.Uu.get(e);\n return void 0 !== n ? Ve.resolve(this.qu.get(n)) : this.Za.da(t, e);\n }, \n /**\n * Unpin 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.\n t.prototype.oc = function(t, e) {\n var n = this, r = this.qu.get(t), i = e ? \"readwrite\" : \"readwrite-primary\";\n return this.persistence.runTransaction(\"Release target\", i, (function(i) {\n // References for documents sent via Watch are automatically removed\n // when we delete a target's data from the reference delegate.\n // Since this does not remove references for locally mutated documents,\n // we have to remove the target associations for these documents\n // manually.\n // This operation needs to be run inside the transaction since EagerGC\n // uses the local view references during the transaction's commit.\n // Fortunately, the operation is safe to be re-run in case the\n // transaction fails since there are no side effects if the target has\n // already been removed.\n var o = n.Bu.Nn(t);\n return e ? Ve.resolve() : Ve.forEach(o, (function(t) {\n return n.persistence.yo.Dn(i, t);\n })).next((function() {\n n.persistence.yo.removeTarget(i, r);\n }));\n })).then((function() {\n n.qu = n.qu.remove(t), n.Uu.delete(r.target);\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 */\n t.prototype.ac = function(t, e) {\n var n = this, r = m.MIN, i = Zt();\n return this.persistence.runTransaction(\"Execute query\", \"readonly\", (function(o) {\n return n.da(o, t.xe()).next((function(t) {\n if (t) return r = t.lastLimboFreeSnapshotVersion, n.Za.Ea(o, t.targetId).next((function(t) {\n i = t;\n }));\n })).next((function() {\n return n.xu.wr(o, t, e ? r : m.MIN, e ? i : Zt());\n })).next((function(t) {\n return {\n documents: t,\n uc: i\n };\n }));\n }));\n }, \n /**\n * Returns the keys of the documents that are associated with the given\n * target id in the remote table.\n */\n t.prototype.cc = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Remote document keys\", \"readonly\", (function(n) {\n return e.Za.Ea(n, t);\n }));\n }, t.prototype.Xu = function(t, e, n) {\n var r = this, i = e.batch, o = i.keys(), s = Ve.resolve();\n return o.forEach((function(r) {\n s = s.next((function() {\n return n.tr(t, r);\n })).next((function(t) {\n var o = t, s = e.gn.get(r);\n _e(null !== s), (!o || o.version.D(s) < 0) && ((o = i.qt(r, o, e)) && \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 n.Jn(o, e.Vn));\n }));\n })), s.next((function() {\n return r.ar.Wo(t, i);\n }));\n }, t.prototype.Gh = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Collect garbage\", \"readwrite-primary\", (function(n) {\n return t.eo(n, e.qu);\n }));\n }, t;\n}();\n\n/**\n * The maximum time to leave a resume token buffered without writing it out.\n * This value is arbitrary: it's long enough to avoid several writes\n * (possibly indefinitely if updates come more frequently than this) but\n * short enough that restarting after crashing will still have a pretty\n * recent resume token.\n */ nr.sc = 3e8;\n\n/**\n * An implementation of LocalStore that provides additional functionality\n * for MultiTabSyncEngine.\n */\n// PORTING NOTE: Web only.\nvar rr = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n return (i = t.call(this, e, n, r) || this).persistence = e, i.ar = e.bu(r), i.Wu = e.Su(), \n i.Za = e.vu(), i;\n }\n /** Starts the LocalStore. */ return e.__extends(n, t), n.prototype.start = function() {\n return this._c();\n }, \n /** Returns the local view of the documents affected by a mutation batch. */ n.prototype.lc = function(t) {\n var e = this;\n return this.persistence.runTransaction(\"Lookup mutation documents\", \"readonly\", (function(n) {\n return e.ar.xo(n, t).next((function(t) {\n return t ? e.ju.Tr(n, t) : Ve.resolve(null);\n }));\n }));\n }, n.prototype.dc = function(t) {\n this.ar.Ko(t);\n }, n.prototype.uu = function(t) {\n this.persistence.uu(t);\n }, n.prototype.yu = function() {\n return this.persistence.yu();\n }, n.prototype.fc = function(t) {\n var e = this, n = this.qu.get(t);\n return n ? Promise.resolve(n.target) : this.persistence.runTransaction(\"Get target data\", \"readonly\", (function(n) {\n return e.Za.ui(n, t).next((function(t) {\n return t ? t.target : null;\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 changes since\n * the point of rejection.\n */\n n.prototype.ba = function() {\n var t = this;\n return this.persistence.runTransaction(\"Get new document changes\", \"readonly\", (function(e) {\n return t.Wu.ba(e, t.Qu);\n })).then((function(e) {\n var n = e.va, r = e.readTime;\n return t.Qu = r, n;\n }));\n }, \n /**\n * Reads the newest document change from persistence and forwards the internal\n * synchronization marker so that calls to `getNewDocumentChanges()`\n * only return changes that happened after client initialization.\n */\n n.prototype._c = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t, n = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return t = this, [ 4 /*yield*/ , this.persistence.runTransaction(\"Synchronize last document change read time\", \"readonly\", (function(t) {\n return n.Wu.Da(t);\n })) ];\n\n case 1:\n return t.Qu = e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, n;\n}(nr);\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 * @return A Promise that resolves after we recovered, or the original error.\n */ function ir(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n if (t.code !== h.FAILED_PRECONDITION || t.message !== Pe) throw t;\n return me(\"LocalStore\", \"Unexpectedly lost primary lease\"), [ 2 /*return*/ ];\n }));\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 */\n/**\n * Validates that no arguments were passed in the invocation of functionName.\n *\n * Forward the magic \"arguments\" variable as second parameter on which the\n * parameter validation is performed:\n * validateNoArgs('myFunction', arguments);\n */ function or(t, e) {\n if (0 !== e.length) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() does not support arguments, but was called with \" + br(e.length, \"argument\") + \".\");\n}\n\n/**\n * Validates the invocation of functionName has the exact number of arguments.\n *\n * Forward the magic \"arguments\" variable as second parameter on which the\n * parameter validation is performed:\n * validateExactNumberOfArgs('myFunction', arguments, 2);\n */ function sr(t, e, n) {\n if (e.length !== n) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires \" + br(n, \"argument\") + \", but was called with \" + br(e.length, \"argument\") + \".\");\n}\n\n/**\n * Validates the invocation of functionName has at least the provided number of\n * arguments (but can have many more).\n *\n * Forward the magic \"arguments\" variable as second parameter on which the\n * parameter validation is performed:\n * validateAtLeastNumberOfArgs('myFunction', arguments, 2);\n */ function ur(t, e, n) {\n if (e.length < n) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires at least \" + br(n, \"argument\") + \", but was called with \" + br(e.length, \"argument\") + \".\");\n}\n\n/**\n * Validates the invocation of functionName has number of arguments between\n * the values provided.\n *\n * Forward the magic \"arguments\" variable as second parameter on which the\n * parameter validation is performed:\n * validateBetweenNumberOfArgs('myFunction', arguments, 2, 3);\n */ function ar(t, e, n, r) {\n if (e.length < n || e.length > r) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires between \" + n + \" and \" + r + \" arguments, but was called with \" + br(e.length, \"argument\") + \".\");\n}\n\n/**\n * Validates the provided argument is an array and has as least the expected\n * number of elements.\n */\n/**\n * Validates the provided positional argument has the native JavaScript type\n * using typeof checks.\n */ function hr(t, e, n, r) {\n dr(t, e, _r(n) + \" argument\", r);\n}\n\n/**\n * Validates the provided argument has the native JavaScript type using\n * typeof checks or is undefined.\n */ function cr(t, e, n, r) {\n void 0 !== r && hr(t, e, n, r);\n}\n\n/**\n * Validates the provided named option has the native JavaScript type using\n * typeof checks.\n */ function fr(t, e, n, r) {\n dr(t, e, n + \" option\", r);\n}\n\n/**\n * Validates the provided named option has the native JavaScript type using\n * typeof checks or is undefined.\n */ function lr(t, e, n, r) {\n void 0 !== r && fr(t, e, n, r);\n}\n\n/**\n * Validates that the provided named option equals one of the expected values.\n */\n/**\n * Validates that the provided named option equals one of the expected values or\n * is undefined.\n */\nfunction pr(t, e, n, r, i) {\n void 0 !== r && function(t, e, n, r, i) {\n for (var o = [], s = 0, u = i; s < u.length; s++) {\n var a = u[s];\n if (a === r) return;\n o.push(vr(a));\n }\n var f = vr(r);\n throw new c(h.INVALID_ARGUMENT, \"Invalid value \" + f + \" provided to function \" + t + '() for option \"' + n + '\". Acceptable values: ' + o.join(\", \"));\n }(t, 0, n, r, i);\n}\n\n/**\n * Validates that the provided argument is a valid enum.\n *\n * @param functionName Function making the validation call.\n * @param enums Array containing all possible values for the enum.\n * @param position Position of the argument in `functionName`.\n * @param argument Arugment to validate.\n */\n/** Helper to validate the type of a provided input. */ function dr(t, e, n, r) {\n if (!(\"object\" === e ? yr(r) : \"non-empty string\" === e ? \"string\" == typeof r && \"\" !== r : typeof r === e)) {\n var i = vr(r);\n throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires its \" + n + \" to be of type \" + e + \", but it was: \" + i);\n }\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 */ function yr(t) {\n return \"object\" == typeof t && null !== t && (Object.getPrototypeOf(t) === Object.prototype || null === Object.getPrototypeOf(t));\n}\n\n/** Returns a string describing the type / value of the provided input. */ function vr(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\" : Ee();\n}\n\nfunction mr(t, e, n) {\n if (void 0 === n) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires a valid \" + _r(e) + \" argument, but it was undefined.\");\n}\n\n/**\n * Validates the provided positional argument is an object, and its keys and\n * values match the expected keys and types provided in optionTypes.\n */ function gr(t, e, n) {\n k(e, (function(e, r) {\n if (n.indexOf(e) < 0) throw new c(h.INVALID_ARGUMENT, \"Unknown option '\" + e + \"' passed to function \" + t + \"(). Available options: \" + n.join(\", \"));\n }));\n}\n\n/**\n * Helper method to throw an error that the provided argument did not pass\n * an instanceof check.\n */ function wr(t, e, n, r) {\n var i = vr(r);\n return new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires its \" + _r(n) + \" argument to be a \" + e + \", but it was: \" + i);\n}\n\nfunction Er(t, e, n) {\n if (n <= 0) throw new c(h.INVALID_ARGUMENT, 'Function \"' + t + '()\" requires its ' + _r(e) + \" argument to be a positive number, but it was: \" + n + \".\");\n}\n\n/** Converts a number to its english word representation */ function _r(t) {\n switch (t) {\n case 1:\n return \"first\";\n\n case 2:\n return \"second\";\n\n case 3:\n return \"third\";\n\n default:\n return t + \"th\";\n }\n}\n\n/**\n * Formats the given word as plural conditionally given the preceding number.\n */ function br(t, e) {\n return t + \" \" + e + (1 === t ? \"\" : \"s\");\n}\n\n/**\n * @license\n * Copyright 2017 Google Inc.\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 function to prevent instantiation through the constructor.\n *\n * This method creates a new constructor that throws when it's invoked.\n * The prototype of that constructor is then set to the prototype of the hidden\n * \"class\" to expose all the prototype methods and allow for instanceof\n * checks.\n *\n * To also make all the static methods available, all properties of the\n * original constructor are copied to the new constructor.\n */ function Ir(t, e) {\n function n() {\n var t = \"This constructor is private.\";\n throw e && (t += \" \", t += e), new c(h.INVALID_ARGUMENT, t);\n }\n // Make sure instanceof checks work and all methods are exposed on the public\n // constructor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return n.prototype = t.prototype, \n // Copy any static methods/members\n Object.assign(n, t), 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. */;\n}\n\nfunction Tr() {\n if (\"undefined\" == typeof Uint8Array) throw new c(h.UNIMPLEMENTED, \"Uint8Arrays are not available in this environment.\");\n}\n\n/** Helper function to assert Base64 functions are available at runtime. */ function Nr() {\n if (!pe.Lt().Tc) throw new c(h.UNIMPLEMENTED, \"Blobs are unavailable in Firestore in this environment.\");\n}\n\n/**\n * Immutable class holding a blob (binary data).\n * This class is directly exposed in the public API.\n *\n * Note that while you can't hide the constructor in JavaScript code, we are\n * using the hack above to make sure no-one outside this module can call it.\n */ var Ar = /** @class */ function() {\n function t(t) {\n Nr(), this.Ec = t;\n }\n return t.fromBase64String = function(e) {\n sr(\"Blob.fromBase64String\", arguments, 1), hr(\"Blob.fromBase64String\", \"string\", 1, e), \n Nr();\n try {\n return new t(R.fromBase64String(e));\n } catch (e) {\n throw new c(h.INVALID_ARGUMENT, \"Failed to construct Blob from Base64 string: \" + e);\n }\n }, t.fromUint8Array = function(e) {\n if (sr(\"Blob.fromUint8Array\", arguments, 1), Tr(), !(e instanceof Uint8Array)) throw wr(\"Blob.fromUint8Array\", \"Uint8Array\", 1, e);\n return new t(R.fromUint8Array(e));\n }, t.prototype.toBase64 = function() {\n return sr(\"Blob.toBase64\", arguments, 0), Nr(), this.Ec.toBase64();\n }, t.prototype.toUint8Array = function() {\n return sr(\"Blob.toUint8Array\", arguments, 0), Tr(), this.Ec.toUint8Array();\n }, t.prototype.toString = function() {\n return \"Blob(base64: \" + this.toBase64() + \")\";\n }, t.prototype.isEqual = function(t) {\n return this.Ec.isEqual(t.Ec);\n }, t;\n}(), Sr = Ir(Ar, \"Use Blob.fromUint8Array() or Blob.fromBase64String() instead.\"), Dr = /** @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 !function(t, e, n, r) {\n if (!(e instanceof Array) || e.length < 1) throw new c(h.INVALID_ARGUMENT, \"Function FieldPath() requires its fieldNames argument to be an array with at least \" + br(1, \"element\") + \".\");\n }(0, t);\n for (var n = 0; n < t.length; ++n) if (hr(\"FieldPath\", \"string\", n, t[n]), 0 === t[n].length) throw new c(h.INVALID_ARGUMENT, \"Invalid field name at argument $(i + 1). Field names must not be empty.\");\n this.Ic = new _(t);\n }\n return t.documentId = function() {\n return t.wc;\n }, t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) throw wr(\"isEqual\", \"FieldPath\", 1, e);\n return this.Ic.isEqual(e.Ic);\n }, t;\n}();\n\n// Public instance that disallows construction at runtime. This constructor is\n// used when exporting Blob on firebase.firestore.Blob and will be called Blob\n// publicly. Internally we still use Blob which has a type checked private\n// constructor. Note that Blob and PublicBlob can be used interchangeably in\n// instanceof checks.\n// For our internal TypeScript code PublicBlob doesn't exist as a type, and so\n// we need to use Blob as type and export it too.\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 */\nDr.wc = new Dr(_.X().K());\n\n/**\n * Matches any characters in a field path string that are reserved.\n */\nvar kr = new RegExp(\"[~\\\\*/\\\\[\\\\]]\"), xr = /** @class */ function() {\n function t(t) {\n this.Rc = t;\n }\n return t.delete = function() {\n return or(\"FieldValue.delete\", arguments), Rr.instance;\n }, t.serverTimestamp = function() {\n return or(\"FieldValue.serverTimestamp\", arguments), Lr.instance;\n }, t.arrayUnion = 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 need access to the Firestore instance.\n return ur(\"FieldValue.arrayUnion\", arguments, 1), new Vr(t);\n }, t.arrayRemove = 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 need access to the Firestore instance.\n return ur(\"FieldValue.arrayRemove\", arguments, 1), new Or(t);\n }, t.increment = function(t) {\n return hr(\"FieldValue.increment\", \"number\", 1, t), sr(\"FieldValue.increment\", arguments, 1), \n new Pr(t);\n }, t.prototype.isEqual = function(t) {\n return this === t;\n }, t;\n}(), Rr = /** @class */ function(t) {\n function n() {\n return t.call(this, \"FieldValue.delete\") || this;\n }\n return e.__extends(n, t), n;\n}(xr);\n\n/**\n * Parses a field path string into a FieldPath, treating dots as separators.\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 opaque base class for FieldValue sentinel objects in our public API,\n * with public static methods for creating said sentinel objects.\n */\n/** Singleton instance. */ Rr.instance = new Rr;\n\nvar Lr = /** @class */ function(t) {\n function n() {\n return t.call(this, \"FieldValue.serverTimestamp\") || this;\n }\n return e.__extends(n, t), n;\n}(xr);\n\n/** Singleton instance. */ Lr.instance = new Lr;\n\nvar Vr = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this, \"FieldValue.arrayUnion\") || this).Ac = e, n;\n }\n return e.__extends(n, t), n;\n}(xr), Or = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this, \"FieldValue.arrayRemove\") || this).Ac = e, n;\n }\n return e.__extends(n, t), n;\n}(xr), Pr = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this, \"FieldValue.increment\") || this).mc = e, n;\n }\n return e.__extends(n, t), n;\n}(xr), Cr = Ir(xr, \"Use FieldValue.<field>() instead.\"), Ur = /** @class */ function() {\n function t(t, e) {\n if (sr(\"GeoPoint\", arguments, 2), hr(\"GeoPoint\", \"number\", 1, t), hr(\"GeoPoint\", \"number\", 2, e), \n !isFinite(t) || t < -90 || t > 90) throw new c(h.INVALID_ARGUMENT, \"Latitude must be a number between -90 and 90, but was: \" + t);\n if (!isFinite(e) || e < -180 || e > 180) throw new c(h.INVALID_ARGUMENT, \"Longitude must be a number between -180 and 180, but was: \" + e);\n this.Pc = t, this.Vc = e;\n }\n return Object.defineProperty(t.prototype, \"latitude\", {\n /**\n * Returns the latitude of this geo point, a number between -90 and 90.\n */\n get: function() {\n return this.Pc;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"longitude\", {\n /**\n * Returns the longitude of this geo point, a number between -180 and 180.\n */\n get: function() {\n return this.Vc;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.isEqual = function(t) {\n return this.Pc === t.Pc && this.Vc === t.Vc;\n }, \n /**\n * Actually private to JS consumers of our API, so this function is prefixed\n * with an underscore.\n */\n t.prototype.p = function(t) {\n return Ie(this.Pc, t.Pc) || Ie(this.Vc, t.Vc);\n }, t;\n}(), qr = /^__.*__$/, Mr = /** @class */ function() {\n function t(t, e, n) {\n this.data = t, this.se = e, this.fieldTransforms = n;\n }\n return t.prototype.gc = function(t, e) {\n var n = [];\n return null !== this.se ? n.push(new ct(t, this.data, this.se, e)) : n.push(new ht(t, this.data, e)), \n this.fieldTransforms.length > 0 && n.push(new ft(t, this.fieldTransforms)), n;\n }, t;\n}(), jr = /** @class */ function() {\n function t(t, e, n) {\n this.data = t, this.se = e, this.fieldTransforms = n;\n }\n return t.prototype.gc = function(t, e) {\n var n = [ new ct(t, this.data, this.se, e) ];\n return this.fieldTransforms.length > 0 && n.push(new ft(t, this.fieldTransforms)), \n n;\n }, t;\n}();\n\nfunction Fr(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 Ee();\n }\n}\n\n/** A \"context\" object passed around while parsing user data. */ var Gr = /** @class */ function() {\n /**\n * Initializes a ParseContext with the given source and path.\n *\n * @param dataSource Indicates what kind of API method this data came from.\n * @param methodName The name of the method the user called to create this\n * ParseContext.\n * @param path A path within the object being parsed. This could be an empty\n * path (in which case the context represents the root of the data being\n * parsed), or a nonempty path (indicating the context represents a nested\n * location within the data).\n * @param arrayElement Whether or not this context corresponds to an element\n * of an array.\n * @param fieldTransforms A mutable list of field transforms encountered while\n * 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.pc = t, this.methodName = e, this.path = n, this.yc = 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.bc(), this.yc = void 0 !== r && r, this.fieldTransforms = i || [], \n this.se = o || [];\n }\n return t.prototype.vc = function(e) {\n var n = null == this.path ? null : this.path.child(e), r = new t(this.pc, this.methodName, n, \n /*arrayElement=*/ !1, this.fieldTransforms, this.se);\n return r.Sc(e), r;\n }, t.prototype.Dc = function(e) {\n var n = null == this.path ? null : this.path.child(e), r = new t(this.pc, this.methodName, n, \n /*arrayElement=*/ !1, this.fieldTransforms, this.se);\n return r.bc(), r;\n }, t.prototype.Cc = function(e) {\n // TODO(b/34871131): We don't support array paths right now; so make path\n // null.\n return new t(this.pc, this.methodName, \n /*path=*/ null, \n /*arrayElement=*/ !0, this.fieldTransforms, this.se);\n }, t.prototype.Fc = function(t) {\n var e = null === this.path || this.path.q() ? \"\" : \" (found in field \" + this.path.toString() + \")\";\n return new c(h.INVALID_ARGUMENT, \"Function \" + this.methodName + \"() called with invalid data. \" + t + e);\n }, \n /** Returns 'true' if 'fieldPath' was traversed when creating this context. */ t.prototype.contains = function(t) {\n return void 0 !== this.se.find((function(e) {\n return t.U(e);\n })) || void 0 !== this.fieldTransforms.find((function(e) {\n return t.U(e.field);\n }));\n }, t.prototype.bc = function() {\n // TODO(b/34871131): Remove null check once we have proper paths for fields\n // within arrays.\n if (null !== this.path) for (var t = 0; t < this.path.length; t++) this.Sc(this.path.get(t));\n }, t.prototype.Sc = function(t) {\n if (0 === t.length) throw this.Fc(\"Document fields must not be empty\");\n if (Fr(this.pc) && qr.test(t)) throw this.Fc('Document fields cannot begin and end with \"__\"');\n }, t;\n}(), Br = function(t, e) {\n this.ci = t, this.key = e;\n}, zr = /** @class */ function() {\n function t(t, e) {\n this.serializer = t, this.Nc = e\n /** Parse document data from a non-merge set() call. */;\n }\n return t.prototype.kc = function(t, e) {\n var n = new Gr(0 /* Set */ , t, _.H);\n Yr(\"Data must be an object, but it was:\", n, e);\n var r = this.$c(e, n);\n return new Mr(new dt(r), \n /* fieldMask= */ null, n.fieldTransforms);\n }, \n /** Parse document data from a set() call with '{merge:true}'. */ t.prototype.Mc = function(t, e, n) {\n var r = new Gr(2 /* MergeSet */ , t, _.H);\n Yr(\"Data must be an object, but it was:\", r, e);\n var i, o, s = this.$c(e, r);\n if (n) {\n for (var u = new A(_.k), a = 0, f = n; a < f.length; a++) {\n var l = f[a], p = void 0;\n if (l instanceof Dr) p = l.Ic; else {\n if (\"string\" != typeof l) throw Ee();\n p = Zr(t, l);\n }\n if (!r.contains(p)) throw new c(h.INVALID_ARGUMENT, \"Field '\" + p + \"' is specified in your field mask but missing from your input data.\");\n u = u.add(p);\n }\n i = it.Kt(u), o = r.fieldTransforms.filter((function(t) {\n return i.zt(t.field);\n }));\n } else i = it.Gt(r.se), o = r.fieldTransforms;\n return new Mr(new dt(s), i, o);\n }, \n /** Parse update data from an update() call. */ t.prototype.Lc = function(t, e) {\n var n = this, r = new Gr(1 /* Update */ , t, _.H);\n Yr(\"Data must be an object, but it was:\", r, e);\n var i = new A(_.k), o = dt._e();\n k(e, (function(e, s) {\n var u = Zr(t, e), a = r.Dc(u);\n if ((s = n.Oc(s, a)) instanceof Rr) \n // Add it to the field mask, but don't add anything to updateData.\n i = i.add(u); else {\n var h = n.xc(s, a);\n null != h && (i = i.add(u), o.set(u, h));\n }\n }));\n var s = it.Kt(i);\n return new jr(o.he(), s, r.fieldTransforms);\n }, \n /** Parse update data from a list of field/value arguments. */ t.prototype.Bc = function(t, e, n, r) {\n var i = new Gr(1 /* Update */ , t, _.H), o = [ Qr(t, e) ], s = [ n ];\n if (r.length % 2 != 0) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() needs to be called with an even number of arguments that alternate between field names and values.\");\n for (var u = 0; u < r.length; u += 2) o.push(Qr(t, r[u])), s.push(r[u + 1]);\n for (var a = new A(_.k), f = dt._e(), l = 0; l < o.length; ++l) {\n var p = o[l], d = i.Dc(p), y = this.Oc(s[l], d);\n if (y instanceof Rr) \n // Add it to the field mask, but don't add anything to updateData.\n a = a.add(p); else {\n var v = this.xc(y, d);\n null != v && (a = a.add(p), f.set(p, v));\n }\n }\n var m = it.Kt(a);\n return new jr(f.he(), m, i.fieldTransforms);\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 */\n t.prototype.qc = function(t, e, n) {\n void 0 === n && (n = !1);\n var r = new Gr(n ? 4 /* ArrayArgument */ : 3 /* Argument */ , t, _.H);\n return this.xc(e, r);\n }, \n /** Sends data through this.preConverter, handling any thrown errors. */ t.prototype.Oc = function(t, e) {\n try {\n return this.Nc(t);\n } catch (t) {\n var n = Wr(t);\n throw e.Fc(n);\n }\n }, \n /**\n * Internal helper for parsing user data.\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 * @return The parsed value, or null if the value was a FieldValue sentinel\n * that should not be included in the resulting parsed data.\n */\n t.prototype.xc = function(t, e) {\n if (Kr(t = this.Oc(t, e))) return Yr(\"Unsupported field value:\", e, t), this.$c(t, e);\n if (t instanceof xr) \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 return this.Uc(t, e), 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.se.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.yc && 4 /* ArrayArgument */ !== e.pc) throw e.Fc(\"Nested arrays are not supported\");\n return this.Qc(t, e);\n }\n return this.Wc(t, e);\n }, t.prototype.$c = function(t, e) {\n var n = this, r = {};\n return x(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.se.push(e.path) : k(t, (function(t, i) {\n var o = n.xc(i, e.vc(t));\n null != o && (r[t] = o);\n })), {\n mapValue: {\n fields: r\n }\n };\n }, t.prototype.Qc = function(t, e) {\n for (var n = [], r = 0, i = 0, o = t; i < o.length; i++) {\n var s = o[i], u = this.xc(s, e.Cc(r));\n null == u && (\n // Just include nulls in the array for fields being replaced with a\n // sentinel.\n u = {\n nullValue: \"NULL_VALUE\"\n }), n.push(u), r++;\n }\n return {\n arrayValue: {\n values: n\n }\n };\n }, \n /**\n * \"Parses\" the provided FieldValueImpl, adding any necessary transforms to\n * context.fieldTransforms.\n */\n t.prototype.Uc = function(t, e) {\n // Sentinels are only supported with writes, and not within arrays.\n if (!Fr(e.pc)) throw e.Fc(t.Rc + \"() can only be used with update() and set()\");\n if (null === e.path) throw e.Fc(t.Rc + \"() is not currently supported inside arrays\");\n if (t instanceof Rr) {\n if (2 /* MergeSet */ !== e.pc) throw 1 /* Update */ === e.pc ? e.Fc(\"FieldValue.delete() can only appear at the top level of your update data\") : e.Fc(\"FieldValue.delete() 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 e.se.push(e.path);\n } else if (t instanceof Lr) e.fieldTransforms.push(new ot(e.path, $.instance)); else if (t instanceof Vr) {\n var n = this.jc(t.Rc, t.Ac), r = new tt(n);\n e.fieldTransforms.push(new ot(e.path, r));\n } else if (t instanceof Or) {\n var i = this.jc(t.Rc, t.Ac), o = new et(i);\n e.fieldTransforms.push(new ot(e.path, o));\n } else if (t instanceof Pr) {\n var s = this.qc(\"FieldValue.increment\", t.mc), u = new nt(this.serializer, s);\n e.fieldTransforms.push(new ot(e.path, u));\n } else Ee();\n }, \n /**\n * Helper to parse a scalar value (i.e. not an Object, Array, or FieldValue)\n *\n * @return The parsed value\n */\n t.prototype.Wc = function(t, e) {\n if (null === t) return {\n nullValue: \"NULL_VALUE\"\n };\n if (\"number\" == typeof t) return this.serializer.Ti(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 = v.fromDate(t);\n return {\n timestampValue: this.serializer.F(n)\n };\n }\n if (t instanceof v) {\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 var r = new v(t.seconds, 1e3 * Math.floor(t.nanoseconds / 1e3));\n return {\n timestampValue: this.serializer.F(r)\n };\n }\n if (t instanceof Ur) return {\n geoPointValue: {\n latitude: t.latitude,\n longitude: t.longitude\n }\n };\n if (t instanceof Ar) return {\n bytesValue: this.serializer.Ei(t)\n };\n if (t instanceof Br) return {\n referenceValue: this.serializer.wi(t.key.path, t.ci)\n };\n throw e.Fc(\"Unsupported field value: \" + vr(t));\n }, t.prototype.jc = function(t, e) {\n var n = this;\n return e.map((function(e, r) {\n // Although array transforms are used with writes, the actual elements\n // being unioned or removed are not considered writes since they cannot\n // contain any FieldValue sentinels, etc.\n var i = new Gr(3 /* Argument */ , t, _.H);\n return n.xc(e, i.Cc(r));\n }));\n }, t;\n}();\n\n/**\n * A placeholder object for DocumentReferences in this file, in order to\n * avoid a circular dependency. See the comments for `DataPreConverter` for\n * the full context.\n */\n/**\n * Checks whether an object looks like a JSON object that should be converted\n * into a struct. Normal class/prototype instances are considered to look like\n * JSON objects since they should be converted to a struct value. Arrays, Dates,\n * GeoPoints, etc. are not considered to look like JSON objects since they map\n * to specific FieldValue types other than ObjectValue.\n */\nfunction Kr(t) {\n return !(\"object\" != typeof t || null === t || t instanceof Array || t instanceof Date || t instanceof v || t instanceof Ur || t instanceof Ar || t instanceof Br || t instanceof xr);\n}\n\nfunction Yr(t, e, n) {\n if (!Kr(n) || !yr(n)) {\n var r = vr(n);\n throw \"an object\" === r ? e.Fc(t + \" a custom object\") : e.Fc(t + \" \" + r);\n }\n}\n\n/**\n * Helper that calls fromDotSeparatedString() but wraps any error thrown.\n */ function Qr(t, e) {\n if (e instanceof Dr) return e.Ic;\n if (\"string\" == typeof e) return Zr(t, e);\n throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() called with invalid data. Field path arguments must be of type string or FieldPath.\");\n}\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 split\n * on dots.\n */ function Zr(t, n) {\n try {\n return function(t) {\n if (t.search(kr) >= 0) throw new c(h.INVALID_ARGUMENT, \"Invalid field path (\" + t + \"). Paths must not contain '~', '*', '/', '[', or ']'\");\n try {\n return new (Dr.bind.apply(Dr, e.__spreadArrays([ void 0 ], t.split(\".\"))));\n } catch (e) {\n throw new c(h.INVALID_ARGUMENT, \"Invalid field path (\" + t + \"). Paths must not be empty, begin with '.', end with '.', or contain '..'\");\n }\n }(n).Ic;\n } catch (n) {\n var r = Wr(n);\n throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() called with invalid data. \" + r);\n }\n}\n\n/**\n * Extracts the message from a caught exception, which should be an Error object\n * though JS doesn't guarantee that.\n */ function Wr(t) {\n return t instanceof Error ? t.message : t.toString();\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 */ var Hr = /** @class */ function() {\n function t(t, e, n, r, i, o) {\n this.Nr = t, this.Kc = n, this.Gc = r, this.zc = 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.Hc = 0, this.Yc = null, this.stream = null, this.oh = new Fe(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.Jc = 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.Xc = 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.Zc();\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 e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.Jc() ? [ 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.t_ = function() {\n this.state = 0 /* Initial */ , this.oh.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.e_ = 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.Xc() && null === this.Yc && (this.Yc = this.Nr.Wr(this.Kc, 6e4, (function() {\n return t.s_();\n })));\n }, \n /** Sends a message to the underlying stream. */ t.prototype.i_ = function(t) {\n this.n_(), this.stream.send(t);\n }, \n /** Called by the idle timer when the stream should close due to inactivity. */ t.prototype.s_ = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n return this.Xc() ? [ 2 /*return*/ , this.close(0 /* Initial */) ] : [ 2 /*return*/ ];\n }));\n }));\n }, \n /** Marks the stream as active again. */ t.prototype.n_ = function() {\n this.Yc && (this.Yc.cancel(), this.Yc = 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, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n switch (e.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.n_(), this.oh.cancel(), \n // Invalidates any stream-related callbacks (e.g. from auth or the\n // underlying stream), guaranteeing they won't execute.\n this.Hc++, 3 /* Error */ !== t ? \n // If this is an intentional close ensure we don't delay our next connection attempt.\n this.oh.reset() : n && n.code === h.RESOURCE_EXHAUSTED ? (\n // Log the error. (Probably either 'quota exceeded' or 'max queue length reached'.)\n ge(n.toString()), ge(\"Using maximum backoff delay to prevent overloading the backend.\"), \n this.oh.qr()) : n && n.code === h.UNAUTHENTICATED && \n // \"unauthenticated\" error means the token was rejected. Try force refreshing it in case it\n // just expired.\n this.zc._(), \n // Clean up the underlying stream because we are no longer interested in events.\n null !== this.stream && (this.r_(), 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.h_(n) ];\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 e.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.r_ = function() {}, t.prototype.auth = function() {\n var t = this;\n this.state = 1 /* Starting */;\n var e = this.o_(this.Hc), n = this.Hc;\n // TODO(mikelehen): Just use dispatchIfNotClosed, but see TODO below.\n this.zc.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.Hc === 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.a_(e);\n }), (function(n) {\n e((function() {\n var e = new c(h.UNKNOWN, \"Fetching auth token failed: \" + n.message);\n return t.u_(e);\n }));\n }));\n }, t.prototype.a_ = function(t) {\n var e = this, n = this.o_(this.Hc);\n this.stream = this.c_(t), this.stream.__((function() {\n n((function() {\n return e.state = 2 /* Open */ , e.listener.__();\n }));\n })), this.stream.h_((function(t) {\n n((function() {\n return e.u_(t);\n }));\n })), this.stream.onMessage((function(t) {\n n((function() {\n return e.onMessage(t);\n }));\n }));\n }, t.prototype.Zc = function() {\n var t = this;\n this.state = 4 /* Backoff */ , this.oh.Ur((function() {\n return e.__awaiter(t, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n return this.state = 0 /* Initial */ , this.start(), [ 2 /*return*/ ];\n }));\n }));\n }));\n }, \n // Visible for tests\n t.prototype.u_ = 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 me(\"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.o_ = function(t) {\n var e = this;\n return function(n) {\n e.Nr.Zr((function() {\n return e.Hc === t ? n() : (me(\"PersistentStream\", \"stream callback skipped by getCloseGuardedDispatcher.\"), \n Promise.resolve());\n }));\n };\n }, t;\n}(), Xr = /** @class */ function(t) {\n function n(e, n, r, i, o) {\n var s = this;\n return (s = t.call(this, e, \"listen_stream_connection_backoff\" /* ListenStreamConnectionBackoff */ , \"listen_stream_idle\" /* ListenStreamIdle */ , n, r, o) || this).serializer = i, \n s;\n }\n return e.__extends(n, t), n.prototype.c_ = function(t) {\n return this.Gc.l_(\"Listen\", t);\n }, n.prototype.onMessage = function(t) {\n // A successful response means the stream is healthy\n this.oh.reset();\n var e = this.serializer.Fi(t), n = this.serializer.ki(t);\n return this.listener.d_(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.f_ = function(t) {\n var e = {};\n e.database = this.serializer.pi, e.addTarget = this.serializer.xe(t);\n var n = this.serializer.en(t);\n n && (e.labels = n), this.i_(e);\n }, \n /**\n * Unregisters interest in the results of the target associated with the\n * given targetId.\n */\n n.prototype.T_ = function(t) {\n var e = {};\n e.database = this.serializer.pi, e.removeTarget = t, this.i_(e);\n }, n;\n}(Hr), Jr = /** @class */ function(t) {\n function n(e, n, r, i, o) {\n var s = this;\n return (s = t.call(this, e, \"write_stream_connection_backoff\" /* WriteStreamConnectionBackoff */ , \"write_stream_idle\" /* WriteStreamIdle */ , n, r, o) || this).serializer = i, \n s.E_ = !1, \n /**\n * The last received stream token from the server, used to acknowledge which\n * responses the client has processed. Stream tokens are opaque checkpoint\n * markers whose only real value is their inclusion in the next request.\n *\n * PersistentWriteStream manages propagating this value from responses to the\n * next request.\n */\n s.lastStreamToken = R.xt, s;\n }\n return e.__extends(n, t), Object.defineProperty(n.prototype, \"I_\", {\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.E_;\n },\n enumerable: !0,\n configurable: !0\n }), \n // Override of PersistentStream.start\n n.prototype.start = function() {\n this.E_ = !1, t.prototype.start.call(this);\n }, n.prototype.r_ = function() {\n this.E_ && this.w_([]);\n }, n.prototype.c_ = function(t) {\n return this.Gc.l_(\"Write\", t);\n }, n.prototype.onMessage = function(t) {\n if (\n // Always capture the last stream token.\n _e(!!t.streamToken), this.lastStreamToken = this.serializer.Ii(t.streamToken), this.E_) {\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.oh.reset();\n var e = this.serializer.Wi(t.writeResults, t.commitTime), n = this.serializer.fromVersion(t.commitTime);\n return this.listener.R_(n, e);\n }\n // The first response is always the handshake response\n return _e(!t.writeResults || 0 === t.writeResults.length), this.E_ = !0, \n this.listener.A_();\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.m_ = 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 = this.serializer.pi, this.i_(t);\n }, \n /** Sends a group of mutations to the Firestore backend to apply. */ n.prototype.w_ = function(t) {\n var e = this, n = {\n streamToken: this.serializer.Ei(this.lastStreamToken),\n writes: t.map((function(t) {\n return e.serializer.$i(t);\n }))\n };\n this.i_(n);\n }, n;\n}(Hr), $r = /** @class */ function() {\n function t(t, e, n, r) {\n this.Nr = t, this.Gc = e, this.credentials = n, this.serializer = r;\n }\n return t.prototype.P_ = function(t) {\n return new Jr(this.Nr, this.Gc, this.credentials, this.serializer, t);\n }, t.prototype.V_ = function(t) {\n return new Xr(this.Nr, this.Gc, this.credentials, this.serializer, t);\n }, t.prototype.commit = function(t) {\n var e = this, n = {\n database: this.serializer.pi,\n writes: t.map((function(t) {\n return e.serializer.$i(t);\n }))\n };\n return this.g_(\"Commit\", n).then((function(t) {\n return e.serializer.Wi(t.writeResults, t.commitTime);\n }));\n }, t.prototype.p_ = function(t) {\n var e = this, n = {\n database: this.serializer.pi,\n documents: t.map((function(t) {\n return e.serializer.mi(t);\n }))\n };\n return this.y_(\"BatchGetDocuments\", n).then((function(n) {\n var r = Ft();\n n.forEach((function(t) {\n var n = e.serializer.Ci(t);\n r = r.nt(n.key, n);\n }));\n var i = [];\n return t.forEach((function(t) {\n var e = r.get(t);\n _e(!!e), i.push(e);\n })), i;\n }));\n }, \n /** Gets an auth token and invokes the provided RPC. */ t.prototype.g_ = function(t, e) {\n var n = this;\n return this.credentials.getToken().then((function(r) {\n return n.Gc.g_(t, e, r);\n })).catch((function(t) {\n throw t.code === h.UNAUTHENTICATED && n.credentials._(), t;\n }));\n }, \n /** Gets an auth token and invokes the provided RPC with streamed results. */ t.prototype.y_ = function(t, e) {\n var n = this;\n return this.credentials.getToken().then((function(r) {\n return n.Gc.y_(t, e, r);\n })).catch((function(t) {\n throw t.code === h.UNAUTHENTICATED && n.credentials._(), t;\n }));\n }, t;\n}(), ti = /** @class */ function() {\n function t(t) {\n this.b_ = t, \n // The version of each document that was read during this transaction.\n this.v_ = Yt(), this.mutations = [], this.S_ = !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.D_ = 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.C_ = new Set;\n }\n return t.prototype.p_ = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n if (this.F_(), this.mutations.length > 0) throw new c(h.INVALID_ARGUMENT, \"Firestore transactions require all reads to be executed before all writes.\");\n return [ 4 /*yield*/ , this.b_.p_(t) ];\n\n case 1:\n return [ 2 /*return*/ , ((n = e.sent()).forEach((function(t) {\n t instanceof gt || t instanceof mt ? r.N_(t) : Ee();\n })), n) ];\n }\n }));\n }));\n }, t.prototype.set = function(t, e) {\n this.write(e.gc(t, this.Zt(t))), this.C_.add(t);\n }, t.prototype.update = function(t, e) {\n try {\n this.write(e.gc(t, this.k_(t)));\n } catch (t) {\n this.D_ = t;\n }\n this.C_.add(t);\n }, t.prototype.delete = function(t) {\n this.write([ new lt(t, this.Zt(t)) ]), this.C_.add(t);\n }, t.prototype.commit = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t, n = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n if (this.F_(), this.D_) throw this.D_;\n return t = this.v_, \n // For each mutation, note that the doc was written.\n this.mutations.forEach((function(e) {\n t = t.remove(e.key);\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, e) {\n n.mutations.push(new pt(t, n.Zt(t)));\n })), [ 4 /*yield*/ , this.b_.commit(this.mutations) ];\n\n case 1:\n // For each mutation, note that the doc was written.\n return e.sent(), this.S_ = !0, [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.N_ = function(t) {\n var e;\n if (t instanceof mt) e = t.version; else {\n if (!(t instanceof gt)) throw Ee();\n // For deleted docs, we must use baseVersion 0 when we overwrite them.\n e = m.S();\n }\n var n = this.v_.get(t.key);\n if (null !== n) {\n if (!e.isEqual(n)) \n // This transaction will fail no matter what.\n throw new c(h.ABORTED, \"Document version changed between two reads.\");\n } else this.v_ = this.v_.nt(t.key, 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.Zt = function(t) {\n var e = this.v_.get(t);\n return !this.C_.has(t) && e ? ut.updateTime(e) : ut.NONE;\n }, \n /**\n * Returns the precondition for a document if the operation is an update.\n */\n t.prototype.k_ = function(t) {\n var e = this.v_.get(t);\n // The first time a document is written, we want to take into account the\n // read time and existence\n if (!this.C_.has(t) && e) {\n if (e.isEqual(m.S())) \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 c(h.INVALID_ARGUMENT, \"Can't update a document that doesn't exist.\");\n // Document exists, base precondition on document update time.\n return ut.updateTime(e);\n }\n // Document was not read, so we just use the preconditions for a blind\n // update.\n return ut.exists(!0);\n }, t.prototype.write = function(t) {\n this.F_(), this.mutations = this.mutations.concat(t);\n }, t.prototype.F_ = function() {}, t;\n}(), ei = /** @class */ function() {\n function t(t, e) {\n this.jr = t, this.M_ = 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.L_ = 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.O_ = 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.x_ = !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.B_ = function() {\n var t = this;\n 0 === this.L_ && (this.q_(\"Unknown\" /* Unknown */), this.O_ = this.jr.Wr(\"online_state_timeout\" /* OnlineStateTimeout */ , 1e4, (function() {\n return t.O_ = null, t.U_(\"Backend didn't respond within 10 seconds.\"), t.q_(\"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.Q_ = function(t) {\n \"Online\" /* Online */ === this.state ? this.q_(\"Unknown\" /* Unknown */) : (this.L_++, \n this.L_ >= 1 && (this.W_(), this.U_(\"Connection failed 1 times. Most recent error: \" + t.toString()), \n this.q_(\"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.W_(), this.L_ = 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.x_ = !1), this.q_(t);\n }, t.prototype.q_ = function(t) {\n t !== this.state && (this.state = t, this.M_(t));\n }, t.prototype.U_ = 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.x_ ? (ge(e), this.x_ = !1) : me(\"OnlineStateTracker\", e);\n }, t.prototype.W_ = function() {\n null !== this.O_ && (this.O_.cancel(), this.O_ = null);\n }, t;\n}(), ni = /** @class */ function() {\n function t(\n /**\n * The local store, used to fill the write pipeline with outbound mutations.\n */\n t, \n /** The client-side proxy for interacting with the backend. */\n n, r, i, o) {\n var s = this;\n this.j_ = t, this.b_ = n, \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.K_ = [], \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.G_ = new Map, this.z_ = null, \n /**\n * Set to true by enableNetwork() and false by disableNetwork() and indicates\n * the user-preferred network state.\n */\n this.networkEnabled = !1, this.isPrimary = !1, this.H_ = o, this.H_.Y_((function(t) {\n r.Zr((function() {\n return e.__awaiter(s, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.J_() ? (me(\"RemoteStore\", \"Restarting streams for network reachability change.\"), \n [ 4 /*yield*/ , this.X_() ]) : [ 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.Z_ = new ei(r, i), \n // Create streams (but note they're not started yet).\n this.tl = this.b_.V_({\n __: this.el.bind(this),\n h_: this.sl.bind(this),\n d_: this.il.bind(this)\n }), this.nl = this.b_.P_({\n __: this.rl.bind(this),\n h_: this.hl.bind(this),\n A_: this.ol.bind(this),\n R_: this.R_.bind(this)\n });\n }\n /**\n * Starts up the remote store, creating streams, restoring state from\n * LocalStore, etc.\n */ return t.prototype.start = function() {\n return this.enableNetwork();\n }, \n /** Re-enables the network. Idempotent. */ t.prototype.enableNetwork = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.networkEnabled = !0, this.J_() ? (t = this.nl, [ 4 /*yield*/ , this.j_.Fo() ]) : [ 3 /*break*/ , 3 ];\n\n case 1:\n // This will start the write stream if necessary.\n return t.lastStreamToken = e.sent(), this.al() ? this.ul() : this.Z_.set(\"Unknown\" /* Unknown */), \n [ 4 /*yield*/ , this.cl() ];\n\n case 2:\n // This will start the write stream if necessary.\n e.sent(), e.label = 3;\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Temporarily disables the network. The network can be re-enabled using\n * enableNetwork().\n */\n t.prototype.disableNetwork = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.networkEnabled = !1, [ 4 /*yield*/ , this._l() ];\n\n case 1:\n return t.sent(), \n // Set the OnlineState to Offline so get()s return from cache, etc.\n this.Z_.set(\"Offline\" /* Offline */), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype._l = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return [ 4 /*yield*/ , this.nl.stop() ];\n\n case 1:\n return t.sent(), [ 4 /*yield*/ , this.tl.stop() ];\n\n case 2:\n return t.sent(), this.K_.length > 0 && (me(\"RemoteStore\", \"Stopping write stream with \" + this.K_.length + \" pending writes\"), \n this.K_ = []), this.ll(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.mu = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return me(\"RemoteStore\", \"RemoteStore shutting down.\"), this.networkEnabled = !1, \n [ 4 /*yield*/ , this._l() ];\n\n case 1:\n return t.sent(), this.H_.mu(), \n // Set the OnlineState to Unknown (rather than Offline) to avoid potentially\n // triggering spurious listener events with cached data, etc.\n this.Z_.set(\"Unknown\" /* Unknown */), [ 2 /*return*/ ];\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 */\n t.prototype.listen = function(t) {\n this.G_.has(t.targetId) || (\n // Mark this as something the client is currently listening for.\n this.G_.set(t.targetId, t), this.al() ? \n // The listen will be sent in onWatchStreamOpen\n this.ul() : this.tl.Xc() && this.dl(t));\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 */\n t.prototype.fl = function(t) {\n this.G_.delete(t), this.tl.Xc() && this.Tl(t), 0 === this.G_.size && (this.tl.Xc() ? this.tl.e_() : this.J_() && \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 this.Z_.set(\"Unknown\" /* Unknown */));\n }, \n /** {@link TargetMetadataProvider.getTargetDataForTarget} */ t.prototype.ui = function(t) {\n return this.G_.get(t) || null;\n }, \n /** {@link TargetMetadataProvider.getRemoteKeysForTarget} */ t.prototype.ai = function(t) {\n return this.El.ai(t);\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 */\n t.prototype.dl = function(t) {\n this.z_.Bs(t.targetId), this.tl.f_(t);\n }, \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 t.prototype.Tl = function(t) {\n this.z_.Bs(t), this.tl.T_(t);\n }, t.prototype.ul = function() {\n this.z_ = new se(this), this.tl.start(), this.Z_.B_();\n }, \n /**\n * Returns whether the watch stream should be started because it's necessary\n * and has not yet been started.\n */\n t.prototype.al = function() {\n return this.J_() && !this.tl.Jc() && this.G_.size > 0;\n }, t.prototype.J_ = function() {\n return this.isPrimary && this.networkEnabled;\n }, t.prototype.ll = function() {\n this.z_ = null;\n }, t.prototype.el = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t = this;\n return e.__generator(this, (function(e) {\n return this.G_.forEach((function(e, n) {\n t.dl(e);\n })), [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.sl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n return this.ll(), \n // If we still need the watch stream, retry the connection.\n this.al() ? (this.Z_.Q_(t), this.ul()) : \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 this.Z_.set(\"Unknown\" /* Unknown */), [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.il = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n // Mark the client as online since we got a message from the server\n return this.Z_.set(\"Online\" /* Online */), t instanceof ie && 2 /* Removed */ === t.state && t.cause ? [ 2 /*return*/ , this.Il(t) ] : (t instanceof ne ? this.z_.zs(t) : t instanceof re ? this.z_.si(t) : this.z_.Js(t), \n n.isEqual(m.MIN) ? [ 3 /*break*/ , 4 ] : [ 4 /*yield*/ , this.j_.ea() ]);\n\n case 1:\n return r = e.sent(), n.D(r) >= 0 ? [ 4 /*yield*/ , this.wl(n) ] : [ 3 /*break*/ , 3 ];\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 2:\n // We have received a target change with a global snapshot if the snapshot\n // version is not equal to SnapshotVersion.MIN.\n e.sent(), e.label = 3;\n\n case 3:\n e.label = 4;\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \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 t.prototype.wl = function(t) {\n var e = this, n = this.z_.ri(t);\n // Update in-memory resume tokens. LocalStore will update the\n // persistent view of these when applying the completed RemoteEvent.\n // Finally raise remote event\n return n.Ts.forEach((function(n, r) {\n if (n.resumeToken.Ot() > 0) {\n var i = e.G_.get(r);\n // A watched target might have been removed already.\n i && e.G_.set(r, i.ss(n.resumeToken, t));\n }\n })), \n // Re-establish listens for the targets that have been invalidated by\n // existence filter mismatches.\n n.Es.forEach((function(t) {\n var n = e.G_.get(t);\n if (n) {\n // Clear the resume token for the target, since we're in a known mismatch\n // state.\n e.G_.set(t, n.ss(R.xt, n.ts)), \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 e.Tl(t);\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 Ct(n.target, t, 1 /* ExistenceFilterMismatch */ , n.sequenceNumber);\n e.dl(r);\n }\n })), this.El.tc(n);\n }, \n /** Handles an error on a target */ t.prototype.Il = function(t) {\n var n = this, r = t.cause, i = Promise.resolve();\n return t.targetIds.forEach((function(t) {\n i = i.then((function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n // A watched target might have been removed already.\n return this.G_.has(t) ? [ 2 /*return*/ , (this.G_.delete(t), this.z_.removeTarget(t), \n this.El.Rl(t, r)) ] : [ 2 /*return*/ ];\n }));\n }));\n }));\n })), i;\n }, \n /**\n * Attempts to fill our write pipeline with writes from the LocalStore.\n *\n * Called internally to bootstrap or refill the write pipeline and by\n * SyncEngine whenever there are new mutations to process.\n *\n * Starts the write stream if necessary.\n */\n t.prototype.cl = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t, n;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.Al() ? (t = this.K_.length > 0 ? this.K_[this.K_.length - 1].batchId : -1, \n [ 4 /*yield*/ , this.j_.nc(t) ]) : [ 3 /*break*/ , 5 ];\n\n case 1:\n return null !== (n = e.sent()) ? [ 3 /*break*/ , 2 ] : (0 === this.K_.length && this.nl.e_(), \n [ 3 /*break*/ , 4 ]);\n\n case 2:\n return this.ml(n), [ 4 /*yield*/ , this.cl() ];\n\n case 3:\n e.sent(), e.label = 4;\n\n case 4:\n e.label = 5;\n\n case 5:\n return this.Pl() && this.Vl(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, \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 t.prototype.Al = function() {\n return this.J_() && this.K_.length < 10;\n }, \n // For testing\n t.prototype.gl = function() {\n return this.K_.length;\n }, \n /**\n * Queues additional writes to be sent to the write stream, sending them\n * immediately if the write stream is established.\n */\n t.prototype.ml = function(t) {\n this.K_.push(t), this.nl.Xc() && this.nl.I_ && this.nl.w_(t.mutations);\n }, t.prototype.Pl = function() {\n return this.J_() && !this.nl.Jc() && this.K_.length > 0;\n }, t.prototype.Vl = function() {\n this.nl.start();\n }, t.prototype.rl = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n return this.nl.m_(), [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.ol = function() {\n var t = this;\n // Record the stream token.\n return this.j_.No(this.nl.lastStreamToken).then((function() {\n // Send the write pipeline now that the stream is established.\n for (var e = 0, n = t.K_; e < n.length; e++) {\n var r = n[e];\n t.nl.w_(r.mutations);\n }\n })).catch(ir);\n }, t.prototype.R_ = function(t, e) {\n var n = this, r = this.K_.shift(), i = xe.from(r, t, e, this.nl.lastStreamToken);\n return this.El.pl(i).then((function() {\n return n.cl();\n }));\n }, t.prototype.hl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r = this;\n return e.__generator(this, (function(e) {\n // If the write stream closed due to an error, invoke the error callbacks if\n // there are pending writes.\n return t && this.K_.length > 0 ? [ 2 /*return*/ , (n = this.nl.I_ ? this.yl(t) : this.bl(t), \n n.then((function() {\n // The write stream might have been started by refilling the write\n // pipeline for failed writes\n r.Pl() && r.Vl();\n }))) ] : [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.bl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n // Reset the token if it's a permanent error, signaling the write stream is\n // no longer valid. Note that the handshake does not count as a write: see\n // comments on isPermanentWriteError for details.\n return qt(t.code) ? [ 2 /*return*/ , (me(\"RemoteStore\", \"RemoteStore error before completed handshake; resetting stream token: \", this.nl.lastStreamToken), \n this.nl.lastStreamToken = R.xt, this.j_.No(R.xt).catch(ir)) ] : [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.yl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i = this;\n return e.__generator(this, (function(e) {\n // Only handle permanent errors here. If it's transient, just let the retry\n // logic kick in.\n return qt(r = t.code) && r !== h.ABORTED ? (n = this.K_.shift(), [ 2 /*return*/ , (this.nl.t_(), \n this.El.vl(n.batchId, t).then((function() {\n return i.cl();\n }))) ]) : [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.Sl = function() {\n return new ti(this.b_);\n }, t.prototype.X_ = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.networkEnabled = !1, [ 4 /*yield*/ , this._l() ];\n\n case 1:\n return t.sent(), this.Z_.set(\"Unknown\" /* Unknown */), [ 4 /*yield*/ , this.enableNetwork() ];\n\n case 2:\n return t.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.Dl = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return this.J_() ? (\n // Tear down and re-create our network streams. This will ensure we get a fresh auth token\n // for the new user and re-fill the write pipeline with new mutations from the LocalStore\n // (since mutations are per-user).\n me(\"RemoteStore\", \"RemoteStore restarting streams for new credential\"), [ 4 /*yield*/ , this.X_() ]) : [ 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 * Toggles the network state when the client gains or loses its primary lease.\n */\n t.prototype.Cl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.isPrimary = t, t && this.networkEnabled ? [ 4 /*yield*/ , this.enableNetwork() ] : [ 3 /*break*/ , 2 ];\n\n case 1:\n return e.sent(), [ 3 /*break*/ , 5 ];\n\n case 2:\n return (n = t) ? [ 3 /*break*/ , 4 ] : [ 4 /*yield*/ , this._l() ];\n\n case 3:\n e.sent(), n = this.Z_.set(\"Unknown\" /* Unknown */), e.label = 4;\n\n case 4:\n n, e.label = 5;\n\n case 5:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, t;\n}();\n\n/**\n * A PersistentStream that implements the Listen RPC.\n *\n * Once the Listen stream has called the onOpen() listener, any number of\n * listen() and unlisten() calls can be made to control what changes will be\n * sent from the server for ListenResponses.\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// The format of the LocalStorage key that stores the client state is:\n// firestore_clients_<persistence_prefix>_<instance_key>\n/** Assembles the key for a client state in WebStorage */\nfunction ri(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_<persistence_prefix>_<batch_id>\n// (for unauthenticated users)\n// or: firestore_mutations_<persistence_prefix>_<batch_id>_<user_uid>\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 ii(t, e, n) {\n var r = \"firestore_mutations_\" + t + \"_\" + n;\n return e.t() && (r += \"_\" + e.uid), r;\n}\n\n// The format of the WebStorage key that stores a query target's metadata is:\n// firestore_targets_<persistence_prefix>_<target_id>\n/** Assembles the key for a query state in WebStorage */ function oi(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_<persistence_prefix>\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\nvar si = /** @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.Fl = function(e, n, r) {\n var i = JSON.parse(r), o = \"object\" == typeof i && -1 !== [ \"pending\", \"acknowledged\", \"rejected\" ].indexOf(i.state) && (void 0 === i.error || \"object\" == typeof i.error), s = void 0;\n return o && i.error && ((o = \"string\" == typeof i.error.message && \"string\" == typeof i.error.code) && (s = new c(i.error.code, i.error.message))), \n o ? new t(e, n, i.state, s) : (ge(\"SharedClientState\", \"Failed to parse mutation state for ID '\" + n + \"': \" + r), \n null);\n }, t.prototype.Nl = 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}(), ui = /** @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.Fl = function(e, n) {\n var r = JSON.parse(n), i = \"object\" == typeof r && -1 !== [ \"not-current\", \"current\", \"rejected\" ].indexOf(r.state) && (void 0 === r.error || \"object\" == typeof r.error), o = void 0;\n return i && r.error && ((i = \"string\" == typeof r.error.message && \"string\" == typeof r.error.code) && (o = new c(r.error.code, r.error.message))), \n i ? new t(e, r.state, o) : (ge(\"SharedClientState\", \"Failed to parse target state for ID '\" + e + \"': \" + n), \n null);\n }, t.prototype.Nl = 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}(), ai = /** @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.Fl = function(e, n) {\n for (var r = JSON.parse(n), i = \"object\" == typeof r && r.activeTargetIds instanceof Array, o = Ht(), s = 0; i && s < r.activeTargetIds.length; ++s) i = O(r.activeTargetIds[s]), \n o = o.add(r.activeTargetIds[s]);\n return i ? new t(e, o) : (ge(\"SharedClientState\", \"Failed to parse client data for instance '\" + e + \"': \" + n), \n null);\n }, t;\n}(), hi = /** @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.Fl = 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) : (ge(\"SharedClientState\", \"Failed to parse online state: \" + e), \n null);\n }, t;\n}(), ci = /** @class */ function() {\n function t() {\n this.activeTargetIds = Ht();\n }\n return t.prototype.kl = function(t) {\n this.activeTargetIds = this.activeTargetIds.add(t);\n }, t.prototype.$l = 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.Nl = function() {\n var t = {\n activeTargetIds: this.activeTargetIds.j(),\n updateTimeMs: Date.now()\n };\n return JSON.stringify(t);\n }, t;\n}(), fi = /** @class */ function() {\n function t(e, n, r, i, o) {\n if (this.Nr = e, this.platform = n, this.persistenceKey = r, this.Ml = i, this.El = null, \n this.M_ = null, this.vr = null, this.Ll = this.Ol.bind(this), this.xl = new I(Ie), \n this.Kh = !1, \n /**\n * Captures WebStorage events that occur before `start()` is called. These\n * events are replayed once `WebStorageSharedClientState` is started.\n */\n this.Bl = [], !t.ho(this.platform)) throw new c(h.UNIMPLEMENTED, \"LocalStorage is not available on this platform.\");\n // Escape the special characters mentioned here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n var s = r.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n this.storage = this.platform.window.localStorage, this.currentUser = o, this.ql = ri(this.persistenceKey, this.Ml), \n this.Ul = \n /** Assembles the key for the current sequence number. */\n function(t) {\n return \"firestore_sequence_number_\" + t;\n }(this.persistenceKey), this.xl = this.xl.nt(this.Ml, new ci), this.Ql = new RegExp(\"^firestore_clients_\" + s + \"_([^_]*)$\"), \n this.Wl = new RegExp(\"^firestore_mutations_\" + s + \"_(\\\\d+)(?:_(.*))?$\"), this.jl = new RegExp(\"^firestore_targets_\" + s + \"_(\\\\d+)$\"), \n this.Kl = \n /** Assembles the key for the online state of the primary tab. */\n function(t) {\n return \"firestore_online_state_\" + 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.platform.window.addEventListener(\"storage\", this.Ll);\n }\n /** Returns 'true' if WebStorage is available in the current environment. */ return t.ho = function(t) {\n return !(!t.window || null == t.window.localStorage);\n }, t.prototype.start = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t, n, r, i, o, s, u, a, h, c, f, l = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , this.El.yu() ];\n\n case 1:\n for (t = e.sent(), n = 0, r = t; n < r.length; n++) (i = r[n]) !== this.Ml && (o = this.getItem(ri(this.persistenceKey, i))) && (s = ai.Fl(i, o)) && (this.xl = this.xl.nt(s.clientId, s));\n for (this.Gl(), (u = this.storage.getItem(this.Kl)) && (a = this.zl(u)) && this.Hl(a), \n h = 0, c = this.Bl; h < c.length; h++) f = c[h], this.Ol(f);\n return this.Bl = [], \n // Register a window unload hook to remove the client metadata entry from\n // WebStorage even if `shutdown()` was not called.\n this.platform.window.addEventListener(\"unload\", (function() {\n return l.mu();\n })), this.Kh = !0, [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.Cr = function(t) {\n this.setItem(this.Ul, JSON.stringify(t));\n }, t.prototype.Yl = function() {\n return this.Jl(this.xl);\n }, t.prototype.Xl = function(t) {\n var e = !1;\n return this.xl.forEach((function(n, r) {\n r.activeTargetIds.has(t) && (e = !0);\n })), e;\n }, t.prototype.Zl = function(t) {\n this.td(t, \"pending\");\n }, t.prototype.ed = function(t, e, n) {\n this.td(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.sd(t);\n }, t.prototype.nd = 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.Xl(t)) {\n var n = this.storage.getItem(oi(this.persistenceKey, t));\n if (n) {\n var r = ui.Fl(t, n);\n r && (e = r.state);\n }\n }\n return this.rd.kl(t), this.Gl(), e;\n }, t.prototype.hd = function(t) {\n this.rd.$l(t), this.Gl();\n }, t.prototype.od = function(t) {\n return this.rd.activeTargetIds.has(t);\n }, t.prototype.ad = function(t) {\n this.removeItem(oi(this.persistenceKey, t));\n }, t.prototype.ud = function(t, e, n) {\n this._d(t, e, n);\n }, t.prototype.Gu = function(t, e, n) {\n var r = this;\n e.forEach((function(t) {\n r.sd(t);\n })), this.currentUser = t, n.forEach((function(t) {\n r.Zl(t);\n }));\n }, t.prototype.ld = function(t) {\n this.dd(t);\n }, t.prototype.mu = function() {\n this.Kh && (this.platform.window.removeEventListener(\"storage\", this.Ll), this.removeItem(this.ql), \n this.Kh = !1);\n }, t.prototype.getItem = function(t) {\n var e = this.storage.getItem(t);\n return me(\"SharedClientState\", \"READ\", t, e), e;\n }, t.prototype.setItem = function(t, e) {\n me(\"SharedClientState\", \"SET\", t, e), this.storage.setItem(t, e);\n }, t.prototype.removeItem = function(t) {\n me(\"SharedClientState\", \"REMOVE\", t), this.storage.removeItem(t);\n }, t.prototype.Ol = function(t) {\n var n = this;\n if (t.storageArea === this.storage) {\n if (me(\"SharedClientState\", \"EVENT\", t.key, t.newValue), t.key === this.ql) return void ge(\"Received WebStorage notification for local change. Another client might have garbage-collected our state\");\n this.Nr.Ih((function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n var n, r, i, o, s, u;\n return e.__generator(this, (function(e) {\n if (this.Kh) {\n if (null !== t.key) if (this.Ql.test(t.key)) {\n if (null == t.newValue) return n = this.fd(t.key), [ 2 /*return*/ , this.Td(n, null) ];\n if (r = this.Ed(t.key, t.newValue)) return [ 2 /*return*/ , this.Td(r.clientId, r) ];\n } else if (this.Wl.test(t.key)) {\n if (null !== t.newValue && (i = this.Id(t.key, t.newValue))) return [ 2 /*return*/ , this.wd(i) ];\n } else if (this.jl.test(t.key)) {\n if (null !== t.newValue && (o = this.Rd(t.key, t.newValue))) return [ 2 /*return*/ , this.Ad(o) ];\n } else if (t.key === this.Kl) {\n if (null !== t.newValue && (s = this.zl(t.newValue))) return [ 2 /*return*/ , this.Hl(s) ];\n } else t.key === this.Ul && (u = function(t) {\n var e = Me.Fr;\n if (null != t) try {\n var n = JSON.parse(t);\n _e(\"number\" == typeof n), e = n;\n } catch (t) {\n ge(\"SharedClientState\", \"Failed to read sequence number from WebStorage\", t);\n }\n return e;\n }(t.newValue)) !== Me.Fr && this.vr(u);\n } else this.Bl.push(t);\n return [ 2 /*return*/ ];\n }));\n }));\n }));\n }\n }, Object.defineProperty(t.prototype, \"rd\", {\n get: function() {\n return this.xl.get(this.Ml);\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.Gl = function() {\n this.setItem(this.ql, this.rd.Nl());\n }, t.prototype.td = function(t, e, n) {\n var r = new si(this.currentUser, t, e, n), i = ii(this.persistenceKey, this.currentUser, t);\n this.setItem(i, r.Nl());\n }, t.prototype.sd = function(t) {\n var e = ii(this.persistenceKey, this.currentUser, t);\n this.removeItem(e);\n }, t.prototype.dd = function(t) {\n var e = {\n clientId: this.Ml,\n onlineState: t\n };\n this.storage.setItem(this.Kl, JSON.stringify(e));\n }, t.prototype._d = function(t, e, n) {\n var r = oi(this.persistenceKey, t), i = new ui(t, e, n);\n this.setItem(r, i.Nl());\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.fd = function(t) {\n var e = this.Ql.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.Ed = function(t, e) {\n var n = this.fd(t);\n return ai.Fl(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.Id = function(t, e) {\n var n = this.Wl.exec(t), r = Number(n[1]), i = void 0 !== n[2] ? n[2] : null;\n return si.Fl(new a(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.Rd = function(t, e) {\n var n = this.jl.exec(t), r = Number(n[1]);\n return ui.Fl(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.zl = function(t) {\n return hi.Fl(t);\n }, t.prototype.wd = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n return t.user.uid === this.currentUser.uid ? [ 2 /*return*/ , this.El.md(t.batchId, t.state, t.error) ] : (me(\"SharedClientState\", \"Ignoring mutation for non-active user \" + t.user.uid), \n [ 2 /*return*/ ]);\n }));\n }));\n }, t.prototype.Ad = function(t) {\n return this.El.Pd(t.targetId, t.state, t.error);\n }, t.prototype.Td = function(t, e) {\n var n = this, r = e ? this.xl.nt(t, e) : this.xl.remove(t), i = this.Jl(this.xl), o = this.Jl(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.El.Vd(s, u).then((function() {\n n.xl = r;\n }));\n }, t.prototype.Hl = 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.xl.get(t.clientId) && this.M_(t.onlineState);\n }, t.prototype.Jl = function(t) {\n var e = Ht();\n return t.forEach((function(t, n) {\n e = e.kt(n.activeTargetIds);\n })), e;\n }, t;\n}(), li = /** @class */ function() {\n function t() {\n this.gd = new ci, this.pd = {}, this.El = null, this.M_ = null, this.vr = null;\n }\n return t.prototype.Zl = function(t) {\n // No op.\n }, t.prototype.ed = function(t, e, n) {\n // No op.\n }, t.prototype.nd = function(t) {\n return this.gd.kl(t), this.pd[t] || \"not-current\";\n }, t.prototype.ud = function(t, e, n) {\n this.pd[t] = e;\n }, t.prototype.hd = function(t) {\n this.gd.$l(t);\n }, t.prototype.od = function(t) {\n return this.gd.activeTargetIds.has(t);\n }, t.prototype.ad = function(t) {\n delete this.pd[t];\n }, t.prototype.Yl = function() {\n return this.gd.activeTargetIds;\n }, t.prototype.Xl = function(t) {\n return this.gd.activeTargetIds.has(t);\n }, t.prototype.start = function() {\n return this.gd = new ci, Promise.resolve();\n }, t.prototype.Gu = function(t, e, n) {\n // No op.\n }, t.prototype.ld = function(t) {\n // No op.\n }, t.prototype.mu = function() {}, t.prototype.Cr = function(t) {}, t;\n}(), pi = function(t) {\n this.key = t;\n}, di = function(t) {\n this.key = t;\n}, yi = /** @class */ function() {\n function t(t, \n /** Documents included in the remote target */\n e) {\n this.query = t, this.yd = e, this.bd = 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.ms = !1, \n /** Documents in the view but not in the remote target */\n this.vd = Zt(), \n /** Document Keys that have local changes */\n this._s = Zt(), this.Sd = new Xt(t.Be.bind(t));\n }\n return Object.defineProperty(t.prototype, \"Dd\", {\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.yd;\n },\n enumerable: !0,\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 * @return a new set of docs, changes, and refill flag.\n */\n t.prototype.Cd = function(t, e) {\n var n = this, r = e ? e.Fd : new Jt, i = e ? e.Sd : this.Sd, o = e ? e._s : this._s, s = i, u = !1, a = this.query.je() && i.size === this.query.limit ? i.last() : null, h = this.query.Ke() && i.size === this.query.limit ? i.first() : null;\n // Drop documents out to meet limit/limitToLast requirement.\n if (t.ut((function(t, e) {\n var c = i.get(t), f = e instanceof mt ? e : null;\n f && (f = n.query.matches(f) ? f : null);\n var l = !!c && n._s.has(c.key), p = !!f && (f.te || \n // We only consider committed mutations for documents that were\n // mutated during the lifetime of the view.\n n._s.has(f.key) && f.hasCommittedMutations), d = !1;\n // Calculate change\n c && f ? c.data().isEqual(f.data()) ? l !== p && (r.track({\n type: 3 /* Metadata */ ,\n doc: f\n }), d = !0) : n.Nd(c, f) || (r.track({\n type: 2 /* Modified */ ,\n doc: f\n }), d = !0, (a && n.query.Be(f, a) > 0 || h && n.query.Be(f, h) < 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)) : !c && f ? (r.track({\n type: 0 /* Added */ ,\n doc: f\n }), d = !0) : c && !f && (r.track({\n type: 1 /* Removed */ ,\n doc: c\n }), d = !0, (a || h) && (\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)), d && (f ? (s = s.add(f), o = p ? o.add(t) : o.delete(t)) : (s = s.delete(t), \n o = o.delete(t)));\n })), this.query.je() || this.query.Ke()) for (;s.size > this.query.limit; ) {\n var c = this.query.je() ? s.last() : s.first();\n s = s.delete(c.key), o = o.delete(c.key), r.track({\n type: 1 /* Removed */ ,\n doc: c\n });\n }\n return {\n Sd: s,\n Fd: r,\n kd: u,\n _s: o\n };\n }, t.prototype.Nd = 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.te && e.hasCommittedMutations && !e.te;\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 this\n * change.\n * @param targetChange A target change to apply for computing limbo docs and\n * sync state.\n * @return 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.ir = function(t, e, n) {\n var r = this, i = this.Sd;\n this.Sd = t.Sd, this._s = t._s;\n // Sort changes based on type and query comparator\n var o = t.Fd.us();\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 Ee();\n }\n };\n return n(t) - n(e);\n }(t.type, e.type) || r.query.Be(t.doc, e.doc);\n })), this.$d(n);\n var s = e ? this.Md() : [], u = 0 === this.vd.size && this.ms ? 1 /* Synced */ : 0 /* Local */ , a = u !== this.bd;\n return this.bd = u, 0 !== o.length || a ? {\n snapshot: new $t(this.query, t.Sd, i, o, t._s, 0 /* Local */ === u, a, \n /* excludesMetadataChanges= */ !1),\n Ld: s\n } : {\n Ld: 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.Od = function(t) {\n return this.ms && \"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.ms = !1, this.ir({\n Sd: this.Sd,\n Fd: new Jt,\n _s: this._s,\n kd: !1\n }, \n /* updateLimboDocuments= */ !1)) : {\n Ld: []\n };\n }, \n /**\n * Returns whether the doc for the given key should be in limbo.\n */\n t.prototype.xd = function(t) {\n // If the remote end says it's part of this query, it's not in limbo.\n return !this.yd.has(t) && \n // The local store doesn't think it's a result, so it shouldn't be in limbo.\n !!this.Sd.has(t) && !this.Sd.get(t).te;\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.$d = function(t) {\n var e = this;\n t && (t.Ps.forEach((function(t) {\n return e.yd = e.yd.add(t);\n })), t.Vs.forEach((function(t) {})), t.gs.forEach((function(t) {\n return e.yd = e.yd.delete(t);\n })), this.ms = t.ms);\n }, t.prototype.Md = function() {\n var t = this;\n // We can only determine limbo documents when we're in-sync with the server.\n if (!this.ms) return [];\n // TODO(klimt): Do this incrementally so that it's not quadratic when\n // updating many documents.\n var e = this.vd;\n this.vd = Zt(), this.Sd.forEach((function(e) {\n t.xd(e.key) && (t.vd = t.vd.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.vd.has(e) || n.push(new di(e));\n })), this.vd.forEach((function(t) {\n e.has(t) || n.push(new pi(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 * @return The ViewChange that resulted from this synchronization.\n */\n // PORTING NOTE: Multi-tab only.\n t.prototype.Bd = function(t) {\n this.yd = t.uc, this.vd = Zt();\n var e = this.Cd(t.documents);\n return this.ir(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.qd = function() {\n return $t.fs(this.query, this.Sd, this._s, 0 /* Local */ === this.bd);\n }, t;\n}(), vi = /** @class */ function() {\n function t(t, e, n, r) {\n this.jr = t, this.Ud = e, this.updateFunction = n, this.zr = r, this.Qd = 5, this.oh = new Fe(this.jr, \"transaction_retry\" /* TransactionRetry */)\n /** Runs the transaction and sets the result on deferred. */;\n }\n return t.prototype.Wd = function() {\n this.jd();\n }, t.prototype.jd = function() {\n var t = this;\n this.oh.Ur((function() {\n return e.__awaiter(t, void 0, void 0, (function() {\n var t, n, r = this;\n return e.__generator(this, (function(e) {\n return t = this.Ud.Sl(), (n = this.Kd(t)) && n.then((function(e) {\n r.jr.Zr((function() {\n return t.commit().then((function() {\n r.zr.resolve(e);\n })).catch((function(t) {\n r.Gd(t);\n }));\n }));\n })).catch((function(t) {\n r.Gd(t);\n })), [ 2 /*return*/ ];\n }));\n }));\n }));\n }, t.prototype.Kd = function(t) {\n try {\n var e = this.updateFunction(t);\n return !L(e) && e.catch && e.then ? e : (this.zr.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.zr.reject(t), null;\n }\n }, t.prototype.Gd = function(t) {\n var e = this;\n this.Qd > 0 && this.zd(t) ? (this.Qd -= 1, this.jr.Zr((function() {\n return e.jd(), Promise.resolve();\n }))) : this.zr.reject(t);\n }, t.prototype.zd = 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 || !qt(e);\n }\n return !1;\n }, t;\n}(), mi = 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}, gi = 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.Hd = !1;\n}, wi = /** @class */ function() {\n function t(t, e, \n // PORTING NOTE: Manages state synchronization in multi-tab environments.\n n, r, i) {\n this.j_ = t, this.Ud = e, this.Yd = n, this.currentUser = r, this.Jd = i, this.Xd = null, \n this.Zd = new De((function(t) {\n return t.canonicalId();\n })), this.tf = new Map, \n /**\n * The keys of documents that are in limbo for which we haven't yet started a\n * limbo resolution query.\n */\n this.ef = [], \n /**\n * Keeps track of the target ID for each document that is in limbo with an\n * active target.\n */\n this.sf = new I(b.k), \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.if = new Map, this.nf = new Re, \n /** Stores user completion handlers, indexed by User and BatchId. */\n this.rf = {}, \n /** Stores user callbacks waiting for all pending writes to be acknowledged. */\n this.hf = new Map, this.af = yn.Jo(), this.onlineState = \"Unknown\" /* Unknown */;\n }\n return Object.defineProperty(t.prototype, \"uf\", {\n get: function() {\n return !0;\n },\n enumerable: !0,\n configurable: !0\n }), \n /** Subscribes to SyncEngine notifications. Has to be called exactly once. */ t.prototype.subscribe = function(t) {\n this.Xd = t;\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 targetId of the query.\n */\n t.prototype.listen = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i, o, s;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.cf(\"listen()\"), (i = this.Zd.get(t)) ? (\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 n = i.targetId, this.Yd.nd(n), r = i.view.qd(), [ 3 /*break*/ , 4 ]) : [ 3 /*break*/ , 1 ];\n\n case 1:\n return [ 4 /*yield*/ , this.j_.hc(t.xe()) ];\n\n case 2:\n return o = e.sent(), s = this.Yd.nd(o.targetId), n = o.targetId, [ 4 /*yield*/ , this._f(t, n, \"current\" === s) ];\n\n case 3:\n r = e.sent(), this.uf && this.Ud.listen(o), e.label = 4;\n\n case 4:\n return [ 2 /*return*/ , (this.Xd.d_([ r ]), n) ];\n }\n }));\n }));\n }, \n /**\n * Registers a view for a previously unknown query and computes its initial\n * snapshot.\n */\n t.prototype._f = function(t, n, r) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var i, o, s, u, a, h;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , this.j_.ac(t, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return i = e.sent(), o = new yi(t, i.uc), s = o.Cd(i.documents), u = ee.As(n, r && \"Offline\" /* Offline */ !== this.onlineState), \n a = o.ir(s, \n /* updateLimboDocuments= */ this.uf, u), this.lf(n, a.Ld), h = new mi(t, n, o), \n [ 2 /*return*/ , (this.Zd.set(t, h), this.tf.has(n) ? this.tf.get(n).push(t) : this.tf.set(n, [ t ]), \n a.snapshot) ];\n }\n }));\n }));\n }, \n /** Stops listening to the query. */ t.prototype.fl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n // Only clean up the query view and target if this is the only query mapped\n // to the target.\n return this.cf(\"unlisten()\"), n = this.Zd.get(t), (r = this.tf.get(n.targetId)).length > 1 ? [ 2 /*return*/ , (this.tf.set(n.targetId, r.filter((function(e) {\n return !e.isEqual(t);\n }))), void this.Zd.delete(t)) ] : this.uf ? (\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 this.Yd.hd(n.targetId), this.Yd.Xl(n.targetId) ? [ 3 /*break*/ , 2 ] : [ 4 /*yield*/ , this.j_.oc(n.targetId, /*keepPersistedTargetData=*/ !1).then((function() {\n i.Yd.ad(n.targetId), i.Ud.fl(n.targetId), i.df(n.targetId);\n })).catch(ir) ]) : [ 3 /*break*/ , 3 ];\n\n case 1:\n e.sent(), e.label = 2;\n\n case 2:\n return [ 3 /*break*/ , 5 ];\n\n case 3:\n return this.df(n.targetId), [ 4 /*yield*/ , this.j_.oc(n.targetId, \n /*keepPersistedTargetData=*/ !0) ];\n\n case 4:\n e.sent(), e.label = 5;\n\n case 5:\n return [ 2 /*return*/ ];\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 */\n t.prototype.write = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r, i;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n this.cf(\"write()\"), e.label = 1;\n\n case 1:\n return e.trys.push([ 1, 3, , 4 ]), [ 4 /*yield*/ , this.j_.Ju(t) ];\n\n case 2:\n return r = e.sent(), [ 3 /*break*/ , 4 ];\n\n case 3:\n if (\"IndexedDbTransactionError\" === (i = e.sent()).name) \n // If we can't persist the mutation, we reject the user callback and\n // don't send the mutation. The user can then retry the write.\n return [ 2 /*return*/ , (ge(\"SyncEngine\", \"Dropping write that cannot be persisted: \" + i), \n void n.reject(new c(h.UNAVAILABLE, \"Failed to persist write: \" + i))) ];\n throw i;\n\n case 4:\n return this.Yd.Zl(r.batchId), this.ff(r.batchId, n), [ 4 /*yield*/ , this.Tf(r.zn) ];\n\n case 5:\n return e.sent(), [ 4 /*yield*/ , this.Ud.cl() ];\n\n case 6:\n return e.sent(), [ 2 /*return*/ ];\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 * The Deferred input is resolved when the transaction is fully committed.\n */\n t.prototype.runTransaction = function(t, e, n) {\n new vi(t, this.Ud, e, n).Wd();\n }, t.prototype.tc = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n this.cf(\"applyRemoteEvent()\"), e.label = 1;\n\n case 1:\n return e.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , this.j_.tc(t) ];\n\n case 2:\n return n = e.sent(), \n // Update `receivedDocument` as appropriate for any limbo targets.\n t.Ts.forEach((function(t, e) {\n var n = r.if.get(e);\n n && (\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 _e(t.Ps.size + t.Vs.size + t.gs.size <= 1), t.Ps.size > 0 ? n.Hd = !0 : t.Vs.size > 0 ? _e(n.Hd) : t.gs.size > 0 && (_e(n.Hd), \n n.Hd = !1));\n })), [ 4 /*yield*/ , this.Tf(n, t) ];\n\n case 3:\n // Update `receivedDocument` as appropriate for any limbo targets.\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , ir(e.sent()) ];\n\n case 5:\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Applies an OnlineState change to the sync engine and notifies any views of\n * the change.\n */\n t.prototype.Od = function(t, e) {\n this.cf(\"applyOnlineStateChange()\");\n var n = [];\n this.Zd.forEach((function(e, r) {\n var i = r.view.Od(t);\n i.snapshot && n.push(i.snapshot);\n })), this.Xd.Ef(t), this.Xd.d_(n), this.onlineState = t;\n }, t.prototype.Rl = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r, i, o, s, u, a = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.cf(\"rejectListens()\"), \n // PORTING NOTE: Multi-tab only.\n this.Yd.ud(t, \"rejected\", n), r = this.if.get(t), (i = r && r.key) ? (\n // Since this query failed, we won't want to manually unlisten to it.\n // So go ahead and remove it from bookkeeping.\n this.sf = this.sf.remove(i), this.if.delete(t), this.If(), o = (o = new I(b.k)).nt(i, new gt(i, m.S())), \n s = Zt().add(i), u = new te(m.MIN, \n /* targetChanges= */ new Map, \n /* targetMismatches= */ new A(Ie), o, s), [ 2 /*return*/ , this.tc(u) ]) : [ 4 /*yield*/ , this.j_.oc(t, /* keepPersistedTargetData */ !1).then((function() {\n return a.df(t, n);\n })).catch(ir) ];\n\n case 1:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.pl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n this.cf(\"applySuccessfulWrite()\"), n = t.batch.batchId, \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 this.wf(n, /*error=*/ null), this.Rf(n), e.label = 1;\n\n case 1:\n return e.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , this.j_.Do(t) ];\n\n case 2:\n return r = e.sent(), this.Yd.ed(n, \"acknowledged\"), [ 4 /*yield*/ , this.Tf(r) ];\n\n case 3:\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , ir(e.sent()) ];\n\n case 5:\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.vl = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n this.cf(\"rejectFailedWrite()\"), \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 this.wf(t, n), this.Rf(t), e.label = 1;\n\n case 1:\n return e.trys.push([ 1, 4, , 6 ]), [ 4 /*yield*/ , this.j_.Zu(t) ];\n\n case 2:\n return r = e.sent(), this.Yd.ed(t, \"rejected\", n), [ 4 /*yield*/ , this.Tf(r) ];\n\n case 3:\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 4:\n return [ 4 /*yield*/ , ir(e.sent()) ];\n\n case 5:\n return e.sent(), [ 3 /*break*/ , 6 ];\n\n case 6:\n return [ 2 /*return*/ ];\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 */\n t.prototype.Af = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.Ud.J_() || me(\"SyncEngine\", \"The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.\"), \n [ 4 /*yield*/ , this.j_.qo() ];\n\n case 1:\n return -1 === (n = e.sent()) ? [ 2 /*return*/ , void t.resolve() ] : ((r = this.hf.get(n) || []).push(t), \n this.hf.set(n, r), [ 2 /*return*/ ]);\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 */\n t.prototype.Rf = function(t) {\n (this.hf.get(t) || []).forEach((function(t) {\n t.resolve();\n })), this.hf.delete(t);\n }, \n /** Reject all outstanding callbacks waiting for pending writes to complete. */ t.prototype.mf = function(t) {\n this.hf.forEach((function(e) {\n e.forEach((function(e) {\n e.reject(new c(h.CANCELLED, t));\n }));\n })), this.hf.clear();\n }, t.prototype.ff = function(t, e) {\n var n = this.rf[this.currentUser.s()];\n n || (n = new I(Ie)), n = n.nt(t, e), this.rf[this.currentUser.s()] = n;\n }, \n /**\n * Resolves or rejects the user callback for the given batch and then discards\n * it.\n */\n t.prototype.wf = function(t, e) {\n var n = this.rf[this.currentUser.s()];\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 (n) {\n var r = n.get(t);\n r && (e ? r.reject(e) : r.resolve(), n = n.remove(t)), this.rf[this.currentUser.s()] = n;\n }\n }, t.prototype.df = function(t, e) {\n var n = this;\n void 0 === e && (e = null), this.Yd.hd(t);\n for (var r = 0, i = this.tf.get(t); r < i.length; r++) {\n var o = i[r];\n this.Zd.delete(o), e && this.Xd.Pf(o, e);\n }\n if (this.tf.delete(t), this.uf) {\n var s = this.nf.$n(t);\n this.nf.Nn(t), s.forEach((function(t) {\n n.nf.Mn(t) || \n // We removed the last reference for this key\n n.Vf(t);\n }));\n }\n }, t.prototype.Vf = function(t) {\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 e = this.sf.get(t);\n null !== e && (this.Ud.fl(e), this.sf = this.sf.remove(t), this.if.delete(e), this.If());\n }, t.prototype.lf = function(t, e) {\n for (var n = 0, r = e; n < r.length; n++) {\n var i = r[n];\n i instanceof pi ? (this.nf.vn(i.key, t), this.gf(i)) : i instanceof di ? (me(\"SyncEngine\", \"Document no longer in limbo: \" + i.key), \n this.nf.Dn(i.key, t), this.nf.Mn(i.key) || \n // We removed the last reference for this key\n this.Vf(i.key)) : Ee();\n }\n }, t.prototype.gf = function(t) {\n var e = t.key;\n this.sf.get(e) || (me(\"SyncEngine\", \"New document in limbo: \" + e), this.ef.push(e), \n this.If());\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 */\n t.prototype.If = function() {\n for (;this.ef.length > 0 && this.sf.size < this.Jd; ) {\n var t = this.ef.shift(), e = this.af.next();\n this.if.set(e, new gi(t)), this.sf = this.sf.nt(t, e), this.Ud.listen(new Ct(_t.ve(t.path).xe(), e, 2 /* LimboResolution */ , Me.Fr));\n }\n }, \n // Visible for testing\n t.prototype.pf = function() {\n return this.sf;\n }, \n // Visible for testing\n t.prototype.yf = function() {\n return this.ef;\n }, t.prototype.Tf = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r, i, o, s = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return r = [], i = [], o = [], this.Zd.forEach((function(e, u) {\n o.push(Promise.resolve().then((function() {\n var e = u.view.Cd(t);\n return e.kd ? s.j_.ac(u.query, /* usePreviousResults= */ !1).then((function(t) {\n var n = t.documents;\n return u.view.Cd(n, e);\n })) : e;\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 })).then((function(t) {\n var e = n && n.Ts.get(u.targetId), o = u.view.ir(t, \n /* updateLimboDocuments= */ s.uf, e);\n if (s.lf(u.targetId, o.Ld), o.snapshot) {\n s.uf && s.Yd.ud(u.targetId, o.snapshot.fromCache ? \"not-current\" : \"current\"), r.push(o.snapshot);\n var a = qe.br(u.targetId, o.snapshot);\n i.push(a);\n }\n })));\n })), [ 4 /*yield*/ , Promise.all(o) ];\n\n case 1:\n return e.sent(), this.Xd.d_(r), [ 4 /*yield*/ , this.j_.ic(i) ];\n\n case 2:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.cf = function(t) {}, t.prototype.Dl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return n = !this.currentUser.isEqual(t), this.currentUser = t, n ? (\n // Fails tasks waiting for pending writes requested by previous user.\n this.mf(\"'waitForPendingWrites' promise is rejected due to a user change.\"), [ 4 /*yield*/ , this.j_.Gu(t) ]) : [ 3 /*break*/ , 3 ];\n\n case 1:\n return r = e.sent(), \n // TODO(b/114226417): Consider calling this only in the primary tab.\n this.Yd.Gu(t, r.Hu, r.Yu), [ 4 /*yield*/ , this.Tf(r.zu) ];\n\n case 2:\n // TODO(b/114226417): Consider calling this only in the primary tab.\n e.sent(), e.label = 3;\n\n case 3:\n return [ 4 /*yield*/ , this.Ud.Dl() ];\n\n case 4:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.enableNetwork = function() {\n return this.Ud.enableNetwork();\n }, t.prototype.disableNetwork = function() {\n return this.Ud.disableNetwork();\n }, t.prototype.ai = function(t) {\n var e = this.if.get(t);\n if (e && e.Hd) return Zt().add(e.key);\n var n = Zt(), r = this.tf.get(t);\n if (!r) return n;\n for (var i = 0, o = r; i < o.length; i++) {\n var s = o[i], u = this.Zd.get(s);\n n = n.kt(u.view.Dd);\n }\n return n;\n }, t;\n}(), Ei = /** @class */ function(t) {\n function n(e, n, r, i, o) {\n var s = this;\n return (s = t.call(this, e, n, r, i, o) || this).j_ = e, \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 s.isPrimary = void 0, s;\n }\n return e.__extends(n, t), Object.defineProperty(n.prototype, \"uf\", {\n get: function() {\n return !0 === this.isPrimary;\n },\n enumerable: !0,\n configurable: !0\n }), n.prototype.enableNetwork = function() {\n return this.j_.uu(!0), t.prototype.enableNetwork.call(this);\n }, n.prototype.disableNetwork = function() {\n return this.j_.uu(!1), t.prototype.disableNetwork.call(this);\n }, \n /**\n * Reconcile the list of synced documents in an existing view with those\n * from persistence.\n */\n n.prototype.bf = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , this.j_.ac(t.query, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return n = e.sent(), r = t.view.Bd(n), [ 2 /*return*/ , (this.isPrimary && this.lf(t.targetId, r.Ld), \n r) ];\n }\n }));\n }));\n }, n.prototype.Od = function(e, n) {\n // If we are the primary client, the online state of all clients only\n // depends on the online state of the local RemoteStore.\n this.uf && 0 /* RemoteStore */ === n && (t.prototype.Od.call(this, e, n), this.Yd.ld(e)), \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 this.uf || 1 /* SharedClientState */ !== n || t.prototype.Od.call(this, e, n);\n }, n.prototype.md = function(t, n, r) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var i;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.cf(\"applyBatchState()\"), [ 4 /*yield*/ , this.j_.lc(t) ];\n\n case 1:\n return null === (i = e.sent()) ? [ 3 /*break*/ , 6 ] : \"pending\" !== n ? [ 3 /*break*/ , 3 ] : [ 4 /*yield*/ , this.Ud.cl() ];\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 e.sent(), [ 3 /*break*/ , 4 ];\n\n case 3:\n \"acknowledged\" === n || \"rejected\" === n ? (\n // NOTE: Both these methods are no-ops for batches that originated from\n // other clients.\n this.wf(t, r || null), this.j_.dc(t)) : Ee(), e.label = 4;\n\n case 4:\n return [ 4 /*yield*/ , this.Tf(i) ];\n\n case 5:\n return e.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 me(\"SyncEngine\", \"Cannot apply mutation batch with id: \" + t), e.label = 7;\n\n case 7:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, n.prototype.Cl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i, o, s, u, a, h = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return !0 !== t || !0 === this.isPrimary ? [ 3 /*break*/ , 3 ] : (this.isPrimary = !0, \n [ 4 /*yield*/ , this.Ud.Cl(!0) ]);\n\n case 1:\n return e.sent(), n = this.Yd.Yl(), [ 4 /*yield*/ , this.vf(n.j()) ];\n\n case 2:\n for (r = e.sent(), i = 0, o = r; i < o.length; i++) s = o[i], this.Ud.listen(s);\n return [ 3 /*break*/ , 7 ];\n\n case 3:\n return !1 !== t || !1 === this.isPrimary ? [ 3 /*break*/ , 7 ] : (this.isPrimary = !1, \n u = [], a = Promise.resolve(), this.tf.forEach((function(t, e) {\n h.Yd.od(e) ? u.push(e) : a = a.then((function() {\n return h.df(e), h.j_.oc(e, \n /*keepPersistedTargetData=*/ !0);\n })), h.Ud.fl(e);\n })), [ 4 /*yield*/ , a ]);\n\n case 4:\n return e.sent(), [ 4 /*yield*/ , this.vf(u) ];\n\n case 5:\n return e.sent(), this.Sf(), [ 4 /*yield*/ , this.Ud.Cl(!1) ];\n\n case 6:\n e.sent(), e.label = 7;\n\n case 7:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, n.prototype.Sf = function() {\n var t = this;\n this.if.forEach((function(e, n) {\n t.Ud.fl(n);\n })), this.nf.kn(), this.if = new Map, this.sf = new I(b.k);\n }, \n /**\n * Reconcile the query views of the provided query targets with the state from\n * persistence. Raises snapshots for any changes that affect the local\n * client and returns the updated state of all target's query data.\n */\n n.prototype.vf = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i, o, s, u, a, h, c, f, l, p, d;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n n = [], r = [], i = 0, o = t, e.label = 1;\n\n case 1:\n return i < o.length ? (s = o[i], u = void 0, (a = this.tf.get(s)) && 0 !== a.length ? [ 4 /*yield*/ , this.j_.oc(s, \n /*keepPersistedTargetData=*/ !0) ] : [ 3 /*break*/ , 8 ]) : [ 3 /*break*/ , 14 ];\n\n case 2:\n // For queries that have a local View, we need to update their state\n // in 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 return e.sent(), [ 4 /*yield*/ , this.j_.hc(a[0].xe()) ];\n\n case 3:\n // For queries that have a local View, we need to update their state\n // in 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 u = e.sent(), h = 0, c = a, e.label = 4;\n\n case 4:\n return h < c.length ? (f = c[h], l = this.Zd.get(f), [ 4 /*yield*/ , this.bf(l) ]) : [ 3 /*break*/ , 7 ];\n\n case 5:\n (p = e.sent()).snapshot && r.push(p.snapshot), e.label = 6;\n\n case 6:\n return h++, [ 3 /*break*/ , 4 ];\n\n case 7:\n return [ 3 /*break*/ , 12 ];\n\n case 8:\n return [ 4 /*yield*/ , this.j_.fc(s) ];\n\n case 9:\n return d = e.sent(), [ 4 /*yield*/ , this.j_.hc(d) ];\n\n case 10:\n return u = e.sent(), [ 4 /*yield*/ , this._f(this.Df(d), s, \n /*current=*/ !1) ];\n\n case 11:\n e.sent(), e.label = 12;\n\n case 12:\n n.push(u), e.label = 13;\n\n case 13:\n return i++, [ 3 /*break*/ , 1 ];\n\n case 14:\n return [ 2 /*return*/ , (this.Xd.d_(r), 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 n.prototype.Df = function(t) {\n return new _t(t.path, t.collectionGroup, t.orderBy, t.filters, t.limit, \"F\" /* First */ , t.startAt, t.endAt);\n }, n.prototype.yu = function() {\n return this.j_.yu();\n }, n.prototype.Pd = function(t, n, r) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var i, o;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.isPrimary ? (\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 me(\"SyncEngine\", \"Ignoring unexpected query state notification.\"), [ 3 /*break*/ , 8 ]) : [ 3 /*break*/ , 1 ];\n\n case 1:\n if (!this.tf.has(t)) return [ 3 /*break*/ , 8 ];\n switch (n) {\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*/ , this.j_.ba() ];\n\n case 3:\n return i = e.sent(), o = te.Rs(t, \"current\" === n), [ 4 /*yield*/ , this.Tf(i, o) ];\n\n case 4:\n return e.sent(), [ 3 /*break*/ , 8 ];\n\n case 5:\n return [ 4 /*yield*/ , this.j_.oc(t, \n /* keepPersistedTargetData */ !0) ];\n\n case 6:\n return e.sent(), this.df(t, r), [ 3 /*break*/ , 8 ];\n\n case 7:\n Ee(), e.label = 8;\n\n case 8:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, n.prototype.Vd = function(t, n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r, i, o, s, u, a, h, c, f, l, p = this;\n return e.__generator(this, (function(d) {\n switch (d.label) {\n case 0:\n if (!this.isPrimary) return [ 3 /*break*/ , 10 ];\n r = 0, i = t, d.label = 1;\n\n case 1:\n return r < i.length ? (o = i[r], this.tf.has(o) ? (\n // A target might have been added in a previous attempt\n me(\"SyncEngine\", \"Adding an already active target \" + o), [ 3 /*break*/ , 5 ]) : [ 4 /*yield*/ , this.j_.fc(o) ]) : [ 3 /*break*/ , 6 ];\n\n case 2:\n return s = d.sent(), [ 4 /*yield*/ , this.j_.hc(s) ];\n\n case 3:\n return u = d.sent(), [ 4 /*yield*/ , this._f(this.Df(s), u.targetId, \n /*current=*/ !1) ];\n\n case 4:\n d.sent(), this.Ud.listen(u), d.label = 5;\n\n case 5:\n return r++, [ 3 /*break*/ , 1 ];\n\n case 6:\n a = function(t) {\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return h.tf.has(t) ? [ 4 /*yield*/ , h.j_.oc(t, /* keepPersistedTargetData */ !1).then((function() {\n p.Ud.fl(t), p.df(t);\n })).catch(ir) ] : [ 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 }, h = this, c = 0, f = n, d.label = 7;\n\n case 7:\n return c < f.length ? (l = f[c], [ 5 /*yield**/ , a(l) ]) : [ 3 /*break*/ , 10 ];\n\n case 8:\n d.sent(), d.label = 9;\n\n case 9:\n return c++, [ 3 /*break*/ , 7 ];\n\n case 10:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, n;\n}(wi), _i = function() {\n this.Cf = null, this.targetId = 0, this.Ff = [];\n}, bi = /** @class */ function() {\n function t(t) {\n this.El = t, this.Nf = new De((function(t) {\n return t.canonicalId();\n })), this.onlineState = \"Unknown\" /* Unknown */ , this.kf = new Set, this.El.subscribe(this);\n }\n return t.prototype.listen = function(t) {\n var e = t.query, n = !1, r = this.Nf.get(e);\n return r || (n = !0, r = new _i, this.Nf.set(e, r)), r.Ff.push(t), \n // Run global snapshot listeners if a consistent snapshot has been emitted.\n t.Od(this.onlineState), r.Cf && t.$f(r.Cf) && this.Mf(), n ? this.El.listen(e).then((function(t) {\n return r.targetId = t, t;\n })) : Promise.resolve(r.targetId);\n }, t.prototype.fl = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n, r, i, o;\n return e.__generator(this, (function(e) {\n return n = t.query, r = !1, (i = this.Nf.get(n)) && (o = i.Ff.indexOf(t)) >= 0 && (i.Ff.splice(o, 1), \n r = 0 === i.Ff.length), r ? [ 2 /*return*/ , (this.Nf.delete(n), this.El.fl(n)) ] : [ 2 /*return*/ ];\n }));\n }));\n }, t.prototype.d_ = function(t) {\n for (var e = !1, n = 0, r = t; n < r.length; n++) {\n var i = r[n], o = i.query, s = this.Nf.get(o);\n if (s) {\n for (var u = 0, a = s.Ff; u < a.length; u++) {\n a[u].$f(i) && (e = !0);\n }\n s.Cf = i;\n }\n }\n e && this.Mf();\n }, t.prototype.Pf = function(t, e) {\n var n = this.Nf.get(t);\n if (n) for (var r = 0, i = n.Ff; r < i.length; r++) {\n i[r].onError(e);\n }\n // Remove all listeners. NOTE: We don't need to call syncEngine.unlisten()\n // after an error.\n this.Nf.delete(t);\n }, t.prototype.Ef = function(t) {\n this.onlineState = t;\n var e = !1;\n this.Nf.forEach((function(n, r) {\n for (var i = 0, o = r.Ff; i < o.length; i++) {\n // Run global snapshot listeners if a consistent snapshot has been emitted.\n o[i].Od(t) && (e = !0);\n }\n })), e && this.Mf();\n }, t.prototype.Lf = function(t) {\n this.kf.add(t), \n // Immediately fire an initial event, indicating all existing listeners\n // are in-sync.\n t.next();\n }, t.prototype.Of = function(t) {\n this.kf.delete(t);\n }, \n // Call all global snapshot listeners that have been set.\n t.prototype.Mf = function() {\n this.kf.forEach((function(t) {\n t.next();\n }));\n }, t;\n}(), Ii = /** @class */ function() {\n function t(t, e, n) {\n this.query = t, this.xf = 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.Bf = !1, this.qf = 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.$f = 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 $t(t.query, t.docs, t.cs, e, t._s, t.fromCache, t.ls, \n /* excludesMetadataChanges= */ !0);\n }\n var o = !1;\n return this.Bf ? this.Uf(t) && (this.xf.next(t), o = !0) : this.Qf(t, this.onlineState) && (this.Wf(t), \n o = !0), this.qf = t, o;\n }, t.prototype.onError = function(t) {\n this.xf.error(t);\n }, \n /** Returns whether a snapshot was raised. */ t.prototype.Od = function(t) {\n this.onlineState = t;\n var e = !1;\n return this.qf && !this.Bf && this.Qf(this.qf, t) && (this.Wf(this.qf), e = !0), \n e;\n }, t.prototype.Qf = 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.jf && n || t.docs.q() && \"Offline\" /* Offline */ !== e);\n // Raise data from cache if we have any documents or we are offline\n }, t.prototype.Uf = 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.qf && this.qf.hasPendingWrites !== t.hasPendingWrites;\n return !(!t.ls && !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.Wf = function(t) {\n t = $t.fs(t.query, t.docs, t._s, t.fromCache), this.Bf = !0, this.xf.next(t);\n }, t;\n}(), Ti = /** @class */ function() {\n function t() {}\n return t.prototype.Ku = function(t) {\n this.Kf = t;\n }, t.prototype.wr = function(t, e, n, i) {\n var o = this;\n // Queries that match all documents don't benefit from using\n // IndexFreeQueries. It is more efficient to scan all documents in a\n // collection, rather than to perform individual lookups.\n return e.Oe() || n.isEqual(m.MIN) ? this.Gf(t, e) : this.Kf.Tr(t, i).next((function(s) {\n var u = o.zf(e, s);\n return (e.je() || e.Ke()) && o.kd(e.ge, u, i, n) ? o.Gf(t, e) : (ye() <= r.LogLevel.DEBUG && me(\"IndexFreeQueryEngine\", \"Re-using previous result from %s to execute query: %s\", n.toString(), e.toString()), \n o.Kf.wr(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 u.forEach((function(e) {\n t = t.nt(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.zf = 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 A((function(e, n) {\n return t.Be(e, n);\n }));\n return e.forEach((function(e, r) {\n r instanceof mt && t.matches(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 query\n * was last synchronized.\n */\n t.prototype.kd = 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.D(r) > 0);\n }, t.prototype.Gf = function(t, e) {\n return ye() <= r.LogLevel.DEBUG && me(\"IndexFreeQueryEngine\", \"Using full collection scan to execute query: %s\", e.toString()), \n this.Kf.wr(t, e, m.MIN);\n }, t;\n}(), Ni = /** @class */ function() {\n function t(t, e) {\n this.ur = t, this.yo = e, \n /**\n * The set of all mutations that have been sent but not yet been applied to\n * the backend.\n */\n this.ar = [], \n /** Next value to use when assigning sequential IDs to each mutation batch. */\n this.Hf = 1, \n /** The last received stream token from the server, used to acknowledge which\n * responses the client has processed. Stream tokens are opaque checkpoint\n * markers whose only real value is their inclusion in the next request.\n */\n this.lastStreamToken = R.xt, \n /** An ordered mapping between documents and the mutations batch IDs. */\n this.Yf = new A(Le.Ie);\n }\n return t.prototype.So = function(t) {\n return Ve.resolve(0 === this.ar.length);\n }, t.prototype.Do = function(t, e, n) {\n var r = e.batchId, i = this.Jf(r, \"acknowledged\");\n return _e(0 === i), \n // Verify that the batch in the queue is the one to be acknowledged.\n this.ar[i], this.lastStreamToken = n, Ve.resolve();\n }, t.prototype.Fo = function(t) {\n return Ve.resolve(this.lastStreamToken);\n }, t.prototype.No = function(t, e) {\n return this.lastStreamToken = e, Ve.resolve();\n }, t.prototype.ko = function(t, e, n, r) {\n var i = this.Hf;\n this.Hf++, this.ar.length > 0 && this.ar[this.ar.length - 1];\n var o = new ke(i, e, n, r);\n this.ar.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.Yf = this.Yf.add(new Le(a.key, i)), this.ur.Mo(t, a.key.path.L());\n }\n return Ve.resolve(o);\n }, t.prototype.Lo = function(t, e) {\n return Ve.resolve(this.Xf(e));\n }, t.prototype.Bo = function(t, e) {\n var n = e + 1, r = this.Zf(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 Ve.resolve(this.ar.length > i ? this.ar[i] : null);\n }, t.prototype.qo = function() {\n return Ve.resolve(0 === this.ar.length ? -1 : this.Hf - 1);\n }, t.prototype.Uo = function(t) {\n return Ve.resolve(this.ar.slice());\n }, t.prototype._r = function(t, e) {\n var n = this, r = new Le(e, 0), i = new Le(e, Number.POSITIVE_INFINITY), o = [];\n return this.Yf.Ct([ r, i ], (function(t) {\n var e = n.Xf(t.Ln);\n o.push(e);\n })), Ve.resolve(o);\n }, t.prototype.Ir = function(t, e) {\n var n = this, r = new A(Ie);\n return e.forEach((function(t) {\n var e = new Le(t, 0), i = new Le(t, Number.POSITIVE_INFINITY);\n n.Yf.Ct([ e, i ], (function(t) {\n r = r.add(t.Ln);\n }));\n })), Ve.resolve(this.tT(r));\n }, t.prototype.Vr = 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 b.st(i) || (i = i.child(\"\"));\n var o = new Le(new b(i), 0), s = new A(Ie);\n // Find unique batchIDs referenced by all documents potentially matching the\n // query.\n return this.Yf.Ft((function(t) {\n var e = t.key.path;\n return !!n.U(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.Ln)), !0);\n }), o), Ve.resolve(this.tT(s));\n }, t.prototype.tT = 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.Xf(t);\n null !== r && n.push(r);\n })), n;\n }, t.prototype.Wo = function(t, e) {\n var n = this;\n _e(0 === this.Jf(e.batchId, \"removed\")), this.ar.shift();\n var r = this.Yf;\n return Ve.forEach(e.mutations, (function(i) {\n var o = new Le(i.key, e.batchId);\n return r = r.delete(o), n.yo.Go(t, i.key);\n })).next((function() {\n n.Yf = r;\n }));\n }, t.prototype.Ko = function(t) {\n // No-op since the memory mutation queue does not maintain a separate cache.\n }, t.prototype.Mn = function(t, e) {\n var n = new Le(e, 0), r = this.Yf.Nt(n);\n return Ve.resolve(e.isEqual(r && r.key));\n }, t.prototype.zo = function(t) {\n return this.ar.length, Ve.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.Jf = function(t, e) {\n return this.Zf(t);\n }, \n /**\n * Finds the index of the given batchId in the mutation queue. This operation\n * is O(1).\n *\n * @return 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.Zf = function(t) {\n return 0 === this.ar.length ? 0 : t - this.ar[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.Xf = function(t) {\n var e = this.Zf(t);\n return e < 0 || e >= this.ar.length ? null : this.ar[e];\n }, t;\n}(), Ai = /** @class */ function() {\n /**\n * @param sizer Used to assess the size of a document. For eager GC, this is expected to just\n * return 0 to avoid unnecessarily doing the work of calculating the size.\n */\n function t(t, e) {\n this.ur = t, this.eT = e, \n /** Underlying cache of documents and their read times. */\n this.docs = new I(b.k), \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.Jn = function(t, e, n) {\n var r = e.key, i = this.docs.get(r), o = i ? i.size : 0, s = this.eT(e);\n return this.docs = this.docs.nt(r, {\n Aa: e,\n size: s,\n readTime: n\n }), this.size += s - o, this.ur.Mo(t, r.path.L());\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.Zn = function(t) {\n var e = this.docs.get(t);\n e && (this.docs = this.docs.remove(t), this.size -= e.size);\n }, t.prototype.tr = function(t, e) {\n var n = this.docs.get(e);\n return Ve.resolve(n ? n.Aa : null);\n }, t.prototype.getEntries = function(t, e) {\n var n = this, r = Gt();\n return e.forEach((function(t) {\n var e = n.docs.get(t);\n r = r.nt(t, e ? e.Aa : null);\n })), Ve.resolve(r);\n }, t.prototype.wr = function(t, e, n) {\n for (var r = zt(), i = new b(e.path.child(\"\")), o = this.docs.lt(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.wt(); ) {\n var s = o.It(), u = s.key, a = s.value, h = a.Aa, c = a.readTime;\n if (!e.path.U(u.path)) break;\n c.D(n) <= 0 || h instanceof mt && e.matches(h) && (r = r.nt(h.key, h));\n }\n return Ve.resolve(r);\n }, t.prototype.sT = function(t, e) {\n return Ve.forEach(this.docs, (function(t) {\n return e(t);\n }));\n }, t.prototype.Ca = function(e) {\n // `trackRemovals` is ignores since the MemoryRemoteDocumentCache keeps\n // a separate changelog and does not need special handling for removals.\n return new t.Fa(this);\n }, t.prototype.ka = function(t) {\n return Ve.resolve(this.size);\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 * Handles the details of adding and updating documents in the MemoryRemoteDocumentCache.\n */\nAi.Fa = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this) || this).$a = e, n;\n }\n return e.__extends(n, t), n.prototype.ir = function(t) {\n var e = this, n = [];\n return this.zn.forEach((function(r, i) {\n i ? n.push(e.$a.Jn(t, i, e.readTime)) : e.$a.Zn(r);\n })), Ve.Kn(n);\n }, n.prototype.er = function(t, e) {\n return this.$a.tr(t, e);\n }, n.prototype.sr = function(t, e) {\n return this.$a.getEntries(t, e);\n }, n;\n}(Oe);\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 Si = /** @class */ function() {\n function t(t) {\n this.persistence = t, \n /**\n * Maps a target to the data about that target\n */\n this.iT = new De((function(t) {\n return t.canonicalId();\n })), \n /** The last received snapshot version. */\n this.lastRemoteSnapshotVersion = m.MIN, \n /** The highest numbered target ID encountered. */\n this.highestTargetId = 0, \n /** The highest sequence number encountered. */\n this.nT = 0, \n /**\n * A ordered bidirectional mapping between documents and the remote target\n * IDs.\n */\n this.rT = new Re, this.targetCount = 0, this.hT = yn.Yo();\n }\n return t.prototype.Xs = function(t, e) {\n return this.iT.forEach((function(t, n) {\n return e(n);\n })), Ve.resolve();\n }, t.prototype.ea = function(t) {\n return Ve.resolve(this.lastRemoteSnapshotVersion);\n }, t.prototype.sa = function(t) {\n return Ve.resolve(this.nT);\n }, t.prototype.Xo = function(t) {\n return this.highestTargetId = this.hT.next(), Ve.resolve(this.highestTargetId);\n }, t.prototype.ia = function(t, e, n) {\n return n && (this.lastRemoteSnapshotVersion = n), e > this.nT && (this.nT = e), \n Ve.resolve();\n }, t.prototype.ra = function(t) {\n this.iT.set(t.target, t);\n var e = t.targetId;\n e > this.highestTargetId && (this.hT = new yn(e), this.highestTargetId = e), t.sequenceNumber > this.nT && (this.nT = t.sequenceNumber);\n }, t.prototype.na = function(t, e) {\n return this.ra(e), this.targetCount += 1, Ve.resolve();\n }, t.prototype.oa = function(t, e) {\n return this.ra(e), Ve.resolve();\n }, t.prototype.aa = function(t, e) {\n return this.iT.delete(e.target), this.rT.Nn(e.targetId), this.targetCount -= 1, \n Ve.resolve();\n }, t.prototype.Zh = function(t, e, n) {\n var r = this, i = 0, o = [];\n return this.iT.forEach((function(s, u) {\n u.sequenceNumber <= e && null === n.get(u.targetId) && (r.iT.delete(s), o.push(r.ua(t, u.targetId)), \n i++);\n })), Ve.Kn(o).next((function() {\n return i;\n }));\n }, t.prototype.la = function(t) {\n return Ve.resolve(this.targetCount);\n }, t.prototype.da = function(t, e) {\n var n = this.iT.get(e) || null;\n return Ve.resolve(n);\n }, t.prototype.fa = function(t, e, n) {\n this.rT.Sn(e, n);\n var r = this.persistence.yo, i = [];\n return r && e.forEach((function(e) {\n i.push(r.vn(t, e));\n })), Ve.Kn(i);\n }, t.prototype.Ta = function(t, e, n) {\n this.rT.Fn(e, n);\n var r = this.persistence.yo, i = [];\n return r && e.forEach((function(e) {\n i.push(r.Dn(t, e));\n })), Ve.Kn(i);\n }, t.prototype.ua = function(t, e) {\n return this.rT.Nn(e), Ve.resolve();\n }, t.prototype.Ea = function(t, e) {\n var n = this.rT.$n(e);\n return Ve.resolve(n);\n }, t.prototype.Mn = function(t, e) {\n return Ve.resolve(this.rT.Mn(e));\n }, t;\n}(), Di = /** @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) {\n var e = this;\n this.oT = {}, this.hu = new Me(0), this.ja = !1, this.ja = !0, this.yo = t(this), \n this.Za = new Si(this), this.ur = new An, this.or = new Ai(this.ur, (function(t) {\n return e.yo.aT(t);\n }));\n }\n return t.prototype.start = function() {\n return Promise.resolve();\n }, t.prototype.mu = function() {\n // No durable state to ensure is closed on shutdown.\n return this.ja = !1, Promise.resolve();\n }, Object.defineProperty(t.prototype, \"Kh\", {\n get: function() {\n return this.ja;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.au = function() {\n // No op.\n }, t.prototype.Du = function() {\n return this.ur;\n }, t.prototype.bu = function(t) {\n var e = this.oT[t.s()];\n return e || (e = new Ni(this.ur, this.yo), this.oT[t.s()] = e), e;\n }, t.prototype.vu = function() {\n return this.Za;\n }, t.prototype.Su = function() {\n return this.or;\n }, t.prototype.runTransaction = function(t, e, n) {\n var r = this;\n me(\"MemoryPersistence\", \"Starting transaction:\", t);\n var i = new ki(this.hu.next());\n return this.yo.uT(), n(i).next((function(t) {\n return r.yo.cT(i).next((function() {\n return t;\n }));\n })).Wn().then((function(t) {\n return i.hr(), t;\n }));\n }, t.prototype._T = function(t, e) {\n return Ve.Gn(Object.values(this.oT).map((function(n) {\n return function() {\n return n.Mn(t, e);\n };\n })));\n }, t;\n}(), ki = /** @class */ function(t) {\n function n(e) {\n var n = this;\n return (n = t.call(this) || this).Qa = e, n;\n }\n return e.__extends(n, t), n;\n}(Ce), xi = /** @class */ function() {\n function t(t) {\n this.persistence = t, this.Nu = null, this.lT = null;\n }\n return t.dT = function(e) {\n return new t(e);\n }, Object.defineProperty(t.prototype, \"fT\", {\n get: function() {\n if (this.lT) return this.lT;\n throw Ee();\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.Mu = function(t) {\n this.Nu = t;\n }, t.prototype.vn = function(t, e) {\n return this.fT.delete(e), Ve.resolve();\n }, t.prototype.Dn = function(t, e) {\n return this.fT.add(e), Ve.resolve();\n }, t.prototype.Go = function(t, e) {\n return this.fT.add(e), Ve.resolve();\n }, t.prototype.removeTarget = function(t, e) {\n var n = this, r = this.persistence.vu();\n return r.Ea(t, e.targetId).next((function(t) {\n t.forEach((function(t) {\n return n.fT.add(t);\n }));\n })).next((function() {\n return r.aa(t, e);\n }));\n }, t.prototype.uT = function() {\n this.lT = new Set;\n }, t.prototype.cT = function(t) {\n var e = this, n = this.persistence.Su().Ca();\n // Remove newly orphaned documents.\n return Ve.forEach(this.fT, (function(r) {\n return e.TT(t, r).next((function(t) {\n t || n.Zn(r);\n }));\n })).next((function() {\n return e.lT = null, n.apply(t);\n }));\n }, t.prototype.Ou = function(t, e) {\n var n = this;\n return this.TT(t, e).next((function(t) {\n t ? n.fT.delete(e) : n.fT.add(e);\n }));\n }, t.prototype.aT = 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.TT = function(t, e) {\n var n = this;\n return Ve.Gn([ function() {\n return n.persistence.vu().Mn(t, e);\n }, function() {\n return n.persistence._T(t, e);\n }, function() {\n return Ve.resolve(n.Nu.Mn(e));\n } ]);\n }, t;\n}(), Ri = /** @class */ function() {\n function t() {}\n return t.prototype.initialize = function(t) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var n = this;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return this.Yd = this.ET(t), this.persistence = this.IT(t), [ 4 /*yield*/ , this.persistence.start() ];\n\n case 1:\n return e.sent(), this.wT = this.RT(t), this.j_ = this.AT(t), this.Ud = this.mT(t), \n this.El = this.PT(t), this.VT = this.gT(t), this.Yd.M_ = function(t) {\n return n.El.Od(t, 1 /* SharedClientState */);\n }, this.Ud.El = this.El, [ 4 /*yield*/ , this.j_.start() ];\n\n case 2:\n return e.sent(), [ 4 /*yield*/ , this.Yd.start() ];\n\n case 3:\n return e.sent(), [ 4 /*yield*/ , this.Ud.start() ];\n\n case 4:\n return e.sent(), [ 4 /*yield*/ , this.Ud.Cl(this.El.uf) ];\n\n case 5:\n return e.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, t.prototype.gT = function(t) {\n return new bi(this.El);\n }, t.prototype.RT = function(t) {\n return null;\n }, t.prototype.AT = function(t) {\n return new nr(this.persistence, new Ti, t.pT);\n }, t.prototype.IT = function(t) {\n return new Di(xi.dT);\n }, t.prototype.mT = function(t) {\n var e = this;\n return new ni(this.j_, t.b_, t.jr, (function(t) {\n return e.El.Od(t, 0 /* RemoteStore */);\n }), t.platform.yT());\n }, t.prototype.ET = function(t) {\n return new li;\n }, t.prototype.PT = function(t) {\n return new wi(this.j_, this.Ud, this.Yd, t.pT, t.Jd);\n }, t.prototype.clearPersistence = function(t) {\n throw new c(h.FAILED_PRECONDITION, \"You are using the memory-only build of Firestore. Persistence support is only available via the @firebase/firestore bundle or the firebase-firestore.js build.\");\n }, t;\n}(), Li = /** @class */ function(t) {\n function n() {\n return null !== t && t.apply(this, arguments) || this;\n }\n return e.__extends(n, t), n.prototype.initialize = function(n) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var r = this;\n return e.__generator(this, (function(i) {\n switch (i.label) {\n case 0:\n return [ 4 /*yield*/ , t.prototype.initialize.call(this, n) ];\n\n case 1:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return i.sent(), [ 4 /*yield*/ , this.persistence.ou((function(t) {\n return e.__awaiter(r, void 0, void 0, (function() {\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , this.El.Cl(t) ];\n\n case 1:\n return e.sent(), this.wT && (t && !this.wT.Kh ? this.wT.start(this.j_) : t || this.wT.stop()), \n [ 2 /*return*/ ];\n }\n }));\n }));\n })) ];\n\n case 2:\n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n return i.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }, n.prototype.AT = function(t) {\n return new rr(this.persistence, new Ti, t.pT);\n }, n.prototype.PT = function(t) {\n var e = new Ei(this.j_, this.Ud, this.Yd, t.pT, t.Jd);\n return this.Yd instanceof fi && (this.Yd.El = e), e;\n }, n.prototype.RT = function(t) {\n var e = this.persistence.yo.qh;\n return new Ze(e, t.jr);\n }, n.prototype.IT = function(t) {\n var e = Xn.Fu(t.bT), n = t.platform.vT(t.bT.ci);\n return new Xn(t.ST.synchronizeTabs, e, t.clientId, t.platform, Qe.kh(t.ST.cacheSizeBytes), t.jr, n, this.Yd);\n }, n.prototype.ET = function(t) {\n if (t.ST.DT && t.ST.synchronizeTabs) {\n if (!fi.ho(t.platform)) throw new c(h.UNIMPLEMENTED, \"IndexedDB persistence is only available on platforms that support LocalStorage.\");\n var e = Xn.Fu(t.bT);\n return new fi(t.jr, t.platform, e, t.clientId, t.pT);\n }\n return new li;\n }, n.prototype.clearPersistence = function(t) {\n var e = Xn.Fu(t);\n return Xn.clearPersistence(e);\n }, n;\n}(Ri), Vi = /** @class */ function() {\n function t(t, e, n, \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 r) {\n this.platform = t, this.bT = e, this.credentials = n, this.jr = r, this.clientId = be.En()\n /**\n * Starts up the FirestoreClient, returning only whether or not enabling\n * persistence succeeded.\n *\n * The intent here is to \"do the right thing\" as far as users are concerned.\n * Namely, in cases where offline persistence is requested and possible,\n * enable it, but otherwise fall back to persistence disabled. For the most\n * part we expect this to succeed one way or the other so we don't expect our\n * users to actually wait on the firestore.enablePersistence Promise since\n * they generally won't care.\n *\n * Of course some users actually do care about whether or not persistence\n * was successfully enabled, so the Promise returned from this method\n * indicates this outcome.\n *\n * This presents a problem though: even before enablePersistence resolves or\n * rejects, users may have made calls to e.g. firestore.collection() which\n * means that the FirestoreClient in there will be available and will be\n * enqueuing actions on the async queue.\n *\n * Meanwhile any failure of an operation on the async queue causes it to\n * panic and reject any further work, on the premise that unhandled errors\n * are fatal.\n *\n * Consequently the fallback is handled internally here in start, and if the\n * fallback succeeds we signal success to the async queue even though the\n * start() itself signals failure.\n *\n * @param componentProvider Provider that returns all core components.\n * @param persistenceSettings Settings object to configure offline\n * persistence.\n * @returns A deferred result indicating the user-visible result of enabling\n * offline persistence. This method will reject this if IndexedDB fails to\n * start for any reason. If usePersistence is false this is\n * unconditionally resolved.\n */;\n }\n return t.prototype.start = function(t, e) {\n var n = this;\n this.CT();\n // We defer our initialization until we get the current user from\n // setChangeListener(). We block the async queue until we got the initial\n // user and the initialization is completed. This will prevent any scheduled\n // work from happening before initialization is completed.\n // If initializationDone resolved then the FirestoreClient is in a usable\n // state.\n var r = new je, i = new je, o = !1;\n // If usePersistence is true, certain classes of errors while starting are\n // recoverable but only by falling back to persistence disabled.\n // If there's an error in the first case but not in recovery we cannot\n // reject the promise blocking the async queue because this will cause the\n // async queue to panic.\n // Return only the result of enabling persistence. Note that this does not\n // need to await the completion of initializationDone because the result of\n // this method should not reflect any other kind of failure to start.\n return this.credentials.l((function(s) {\n if (!o) return o = !0, me(\"FirestoreClient\", \"Initializing. user=\", s.uid), n.FT(t, e, s, i).then(r.resolve, r.reject);\n n.jr.Zr((function() {\n return n.Dl(s);\n }));\n })), \n // Block the async queue until initialization is done\n this.jr.Zr((function() {\n return r.promise;\n })), i.promise;\n }, \n /** Enables the network connection and requeues all pending operations. */ t.prototype.enableNetwork = function() {\n var t = this;\n return this.CT(), this.jr.enqueue((function() {\n return t.El.enableNetwork();\n }));\n }, \n /**\n * Initializes persistent storage, attempting to use IndexedDB if\n * usePersistence is true or memory-only if false.\n *\n * If IndexedDB fails because it's already open in another tab or because the\n * platform can't possibly support our implementation then this method rejects\n * the persistenceResult and falls back on memory-only persistence.\n *\n * @param componentProvider The provider that provides all core componennts\n * for IndexedDB or memory-backed persistence\n * @param persistenceSettings Settings object to configure offline persistence\n * @param user The initial user\n * @param persistenceResult A deferred result indicating the user-visible\n * result of enabling offline persistence. This method will reject this if\n * IndexedDB fails to start for any reason. If usePersistence is false\n * this is unconditionally resolved.\n * @returns a Promise indicating whether or not initialization should\n * continue, i.e. that one of the persistence implementations actually\n * succeeded.\n */\n t.prototype.FT = function(t, n, r, i) {\n return e.__awaiter(this, void 0, void 0, (function() {\n var o, s, u, a, h = this;\n return e.__generator(this, (function(c) {\n switch (c.label) {\n case 0:\n return c.trys.push([ 0, 3, , 4 ]), [ 4 /*yield*/ , this.platform.NT(this.bT) ];\n\n case 1:\n return o = c.sent(), s = this.platform.vT(this.bT.ci), u = new $r(this.jr, o, this.credentials, s), \n [ 4 /*yield*/ , t.initialize({\n jr: this.jr,\n bT: this.bT,\n platform: this.platform,\n b_: u,\n clientId: this.clientId,\n pT: r,\n Jd: 100,\n ST: n\n }) ];\n\n case 2:\n return c.sent(), this.persistence = t.persistence, this.Yd = t.Yd, this.j_ = t.j_, \n this.Ud = t.Ud, this.El = t.El, this.wT = t.wT, this.kT = t.VT, \n // When a user calls clearPersistence() in one client, all other clients\n // need to be terminated to allow the delete to succeed.\n this.persistence.au((function() {\n return e.__awaiter(h, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n return [ 4 /*yield*/ , this.terminate() ];\n\n case 1:\n return t.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n })), i.resolve(), [ 3 /*break*/ , 4 ];\n\n case 3:\n // An unknown failure on the first stage shuts everything down.\n if (a = c.sent(), \n // Regardless of whether or not the retry succeeds, from an user\n // perspective, offline persistence has failed.\n i.reject(a), !this.$T(a)) throw a;\n return [ 2 /*return*/ , (console.warn(\"Error enabling offline persistence. Falling back to persistence disabled: \" + a), \n this.FT(new Ri, {\n DT: !1\n }, r, i)) ];\n\n case 4:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n }, \n /**\n * Decides whether the provided error allows us to gracefully disable\n * persistence (as opposed to crashing the client).\n */\n t.prototype.$T = function(t) {\n return \"FirebaseError\" === t.name ? t.code === h.FAILED_PRECONDITION || t.code === h.UNIMPLEMENTED : !(\"undefined\" != typeof DOMException && t instanceof DOMException) || \n // When the browser is out of quota we could get either quota exceeded\n // or an aborted error depending on whether the error happened during\n // schema migration.\n 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 /**\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.CT = function() {\n if (this.jr._h) throw new c(h.FAILED_PRECONDITION, \"The client has already been terminated.\");\n }, t.prototype.Dl = function(t) {\n return this.jr.Rh(), me(\"FirestoreClient\", \"Credential Changed. Current user: \" + t.uid), \n this.El.Dl(t);\n }, \n /** Disables the network connection. Pending operations will not complete. */ t.prototype.disableNetwork = function() {\n var t = this;\n return this.CT(), this.jr.enqueue((function() {\n return t.El.disableNetwork();\n }));\n }, t.prototype.terminate = function() {\n var t = this;\n return this.jr.Eh((function() {\n return e.__awaiter(t, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n // PORTING NOTE: LocalStore does not need an explicit shutdown on web.\n return this.wT && this.wT.stop(), [ 4 /*yield*/ , this.Ud.mu() ];\n\n case 1:\n return t.sent(), [ 4 /*yield*/ , this.Yd.mu() ];\n\n case 2:\n return t.sent(), [ 4 /*yield*/ , this.persistence.mu() ];\n\n case 3:\n // PORTING NOTE: LocalStore does not need an explicit shutdown on web.\n return t.sent(), \n // `removeChangeListener` must be called after shutting down the\n // RemoteStore as it will prevent the RemoteStore from retrieving\n // auth tokens.\n this.credentials.T(), [ 2 /*return*/ ];\n }\n }));\n }));\n }));\n }, \n /**\n * Returns a Promise that resolves when all writes that were pending at the time this\n * method was called received server acknowledgement. An acknowledgement can be either acceptance\n * or rejection.\n */\n t.prototype.waitForPendingWrites = function() {\n var t = this;\n this.CT();\n var e = new je;\n return this.jr.Zr((function() {\n return t.El.Af(e);\n })), e.promise;\n }, t.prototype.listen = function(t, e, n) {\n var r = this;\n this.CT();\n var i = new Ii(t, e, n);\n return this.jr.Zr((function() {\n return r.kT.listen(i);\n })), i;\n }, t.prototype.fl = function(t) {\n var e = this;\n // Checks for termination but does not raise error, allowing unlisten after\n // termination to be a no-op.\n this.MT || this.jr.Zr((function() {\n return e.kT.fl(t);\n }));\n }, t.prototype.LT = function(t) {\n var e = this;\n return this.CT(), this.jr.enqueue((function() {\n return e.j_.rc(t);\n })).then((function(t) {\n if (t instanceof mt) return t;\n if (t instanceof gt) return null;\n throw new c(h.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 }));\n }, t.prototype.OT = function(t) {\n var n = this;\n return this.CT(), this.jr.enqueue((function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n var n, r, i;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return [ 4 /*yield*/ , this.j_.ac(t, \n /* usePreviousResults= */ !0) ];\n\n case 1:\n return n = e.sent(), r = new yi(t, n.uc), i = r.Cd(n.documents), [ 2 /*return*/ , r.ir(i, \n /* updateLimboDocuments= */ !1).snapshot ];\n }\n }));\n }));\n }));\n }, t.prototype.write = function(t) {\n var e = this;\n this.CT();\n var n = new je;\n return this.jr.Zr((function() {\n return e.El.write(t, n);\n })), n.promise;\n }, t.prototype.ci = function() {\n return this.bT.ci;\n }, t.prototype.Lf = function(t) {\n var e = this;\n this.CT(), this.jr.Zr((function() {\n return e.kT.Lf(t), Promise.resolve();\n }));\n }, t.prototype.Of = function(t) {\n // Checks for shutdown but does not raise error, allowing remove after\n // shutdown to be a no-op.\n this.MT || this.kT.Of(t);\n }, Object.defineProperty(t.prototype, \"MT\", {\n get: function() {\n // Technically, the asyncQueue is still running, but only accepting operations\n // related to termination or supposed to be run after termination. It is effectively\n // terminated to the eyes of users.\n return this.jr._h;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.transaction = function(t) {\n var e = this;\n this.CT();\n var n = new je;\n return this.jr.Zr((function() {\n return e.El.runTransaction(e.jr, t, n), Promise.resolve();\n })), n.promise;\n }, t;\n}(), Oi = /** @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.xT(this.observer.next, t);\n }, t.prototype.error = function(t) {\n this.xT(this.observer.error, t);\n }, t.prototype.BT = function() {\n this.muted = !0;\n }, t.prototype.xT = function(t, e) {\n var n = this;\n this.muted || setTimeout((function() {\n n.muted || t(e);\n }), 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 * A memory-backed instance of Persistence. Data is stored only in RAM and\n * not persisted across sessions.\n */\n/**\n * @license\n * Copyright 2017 Google Inc.\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 Pi(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 Ci = /** @class */ function() {\n function t(t, e, n, r) {\n this.firestore = t, this.timestampsInSnapshots = e, this.qT = n, this.converter = r;\n }\n return t.prototype.UT = function(t) {\n switch (q(t)) {\n case 0 /* NullValue */ :\n return null;\n\n case 1 /* BooleanValue */ :\n return t.booleanValue;\n\n case 2 /* NumberValue */ :\n return K(t.integerValue || t.doubleValue);\n\n case 3 /* TimestampValue */ :\n return this.QT(t.timestampValue);\n\n case 4 /* ServerTimestampValue */ :\n return this.WT(t);\n\n case 5 /* StringValue */ :\n return t.stringValue;\n\n case 6 /* BlobValue */ :\n return new Ar(Y(t.bytesValue));\n\n case 7 /* RefValue */ :\n return this.jT(t.referenceValue);\n\n case 8 /* GeoPointValue */ :\n return new Ur(t.geoPointValue.latitude, t.geoPointValue.longitude);\n\n case 9 /* ArrayValue */ :\n return this.KT(t.arrayValue);\n\n case 10 /* ObjectValue */ :\n return this.GT(t.mapValue);\n\n default:\n throw Ee();\n }\n }, t.prototype.GT = function(t) {\n var e = this, n = {};\n return k(t.fields || {}, (function(t, r) {\n n[t] = e.UT(r);\n })), n;\n }, t.prototype.KT = function(t) {\n var e = this;\n return (t.values || []).map((function(t) {\n return e.UT(t);\n }));\n }, t.prototype.WT = function(t) {\n switch (this.qT) {\n case \"previous\":\n var e = function t(e) {\n var n = e.mapValue.fields.__previous_value__;\n return P(n) ? t(n) : n;\n }(t);\n return null == e ? null : this.UT(e);\n\n case \"estimate\":\n return this.QT(C(t));\n\n default:\n return null;\n }\n }, t.prototype.QT = function(t) {\n var e = z(t), n = new v(e.seconds, e.nanos);\n return this.timestampsInSnapshots ? n : n.toDate();\n }, t.prototype.jT = function(t) {\n var e = w.G(t);\n _e(le(e));\n var n = new Se(e.get(1), e.get(3)), r = new b(e.M(5));\n return n.isEqual(this.firestore.zT) || \n // TODO(b/64130202): Somehow support foreign references.\n ge(\"Document \" + r + \" contains a document reference within a different database (\" + n.projectId + \"/\" + n.database + \") which is not supported. It will be treated as a reference in the current database (\" + this.firestore.zT.projectId + \"/\" + this.firestore.zT.database + \") instead.\"), \n new Gi(r, this.firestore, this.converter);\n }, t;\n}(), Ui = Qe.Lh, qi = /** @class */ function() {\n function t(t) {\n var e, n;\n if (void 0 === t.host) {\n if (void 0 !== t.ssl) throw new c(h.INVALID_ARGUMENT, \"Can't provide ssl option if host option is not set\");\n this.host = \"firestore.googleapis.com\", this.ssl = !0;\n } else fr(\"settings\", \"non-empty string\", \"host\", t.host), this.host = t.host, lr(\"settings\", \"boolean\", \"ssl\", t.ssl), \n this.ssl = null === (e = t.ssl) || void 0 === e || e;\n if (gr(\"settings\", t, [ \"host\", \"ssl\", \"credentials\", \"timestampsInSnapshots\", \"cacheSizeBytes\", \"experimentalForceLongPolling\" ]), \n lr(\"settings\", \"object\", \"credentials\", t.credentials), this.credentials = t.credentials, \n lr(\"settings\", \"boolean\", \"timestampsInSnapshots\", t.timestampsInSnapshots), \n // Nobody should set timestampsInSnapshots anymore, but the error depends on\n // whether they set it to true or false...\n !0 === t.timestampsInSnapshots ? ge(\"The setting 'timestampsInSnapshots: true' is no longer required and should be removed.\") : !1 === t.timestampsInSnapshots && ge(\"Support for 'timestampsInSnapshots: false' will be removed soon. You must update your code to handle Timestamp objects.\"), \n this.timestampsInSnapshots = null === (n = t.timestampsInSnapshots) || void 0 === n || n, \n lr(\"settings\", \"number\", \"cacheSizeBytes\", t.cacheSizeBytes), void 0 === t.cacheSizeBytes) this.cacheSizeBytes = Qe.xh; else {\n if (t.cacheSizeBytes !== Ui && t.cacheSizeBytes < Qe.Oh) throw new c(h.INVALID_ARGUMENT, \"cacheSizeBytes must be at least \" + Qe.Oh);\n this.cacheSizeBytes = t.cacheSizeBytes;\n }\n lr(\"settings\", \"boolean\", \"experimentalForceLongPolling\", t.experimentalForceLongPolling), \n this.forceLongPolling = void 0 !== t.experimentalForceLongPolling && t.experimentalForceLongPolling;\n }\n return t.prototype.isEqual = function(t) {\n return this.host === t.host && this.ssl === t.ssl && this.timestampsInSnapshots === t.timestampsInSnapshots && this.credentials === t.credentials && this.cacheSizeBytes === t.cacheSizeBytes && this.forceLongPolling === t.forceLongPolling;\n }, t;\n}(), Mi = /** @class */ function() {\n // Note: We are using `MemoryComponentProvider` as a default\n // ComponentProvider to ensure backwards compatibility with the format\n // expected by the console build.\n function t(n, r, i) {\n var o = this;\n if (void 0 === i && (i = new Ri), this.HT = null, \n // Public for use in tests.\n // TODO(mikelehen): Use modularized initialization instead.\n this.YT = new Be, this.INTERNAL = {\n delete: function() {\n return e.__awaiter(o, void 0, void 0, (function() {\n return e.__generator(this, (function(t) {\n switch (t.label) {\n case 0:\n // The client must be initalized to ensure that all subsequent API usage\n // throws an exception.\n return this.JT(), [ 4 /*yield*/ , this.XT.terminate() ];\n\n case 1:\n // The client must be initalized to ensure that all subsequent API usage\n // throws an exception.\n return t.sent(), [ 2 /*return*/ ];\n }\n }));\n }));\n }\n }, \"object\" == typeof n.options) {\n // This is very likely a Firebase app object\n // TODO(b/34177605): Can we somehow use instanceof?\n var s = n;\n this.HT = s, this.zT = t.ZT(s), this.tE = s.name, this.eE = new p(r);\n } else {\n var u = n;\n if (!u.projectId) throw new c(h.INVALID_ARGUMENT, \"Must provide projectId\");\n this.zT = new Se(u.projectId, u.database), \n // Use a default persistenceKey that lines up with FirebaseApp.\n this.tE = \"[DEFAULT]\", this.eE = new l;\n }\n this.sE = i, this.iE = new qi({}), this.nE = this.rE(this.zT);\n }\n return t.prototype.settings = function(t) {\n sr(\"Firestore.settings\", arguments, 1), hr(\"Firestore.settings\", \"object\", 1, t);\n var e = new qi(t);\n if (this.XT && !this.iE.isEqual(e)) throw new c(h.FAILED_PRECONDITION, \"Firestore has already been started and its settings can no longer be changed. You can only call settings() before calling any other methods on a Firestore object.\");\n this.iE = e, void 0 !== e.credentials && (this.eE = function(t) {\n if (!t) return new l;\n switch (t.type) {\n case \"gapi\":\n var e = t.hE;\n // Make sure this really is a Gapi client.\n return _e(!(\"object\" != typeof e || null === e || !e.auth || !e.auth.getAuthHeaderValueForFirstParty)), \n new y(e, t.V || \"0\");\n\n case \"provider\":\n return t.hE;\n\n default:\n throw new c(h.INVALID_ARGUMENT, \"makeCredentialsProvider failed due to invalid credential type\");\n }\n }(e.credentials));\n }, t.prototype.enableNetwork = function() {\n return this.JT(), this.XT.enableNetwork();\n }, t.prototype.disableNetwork = function() {\n return this.JT(), this.XT.disableNetwork();\n }, t.prototype.enablePersistence = function(t) {\n var e, n;\n if (this.XT) throw new c(h.FAILED_PRECONDITION, \"Firestore has already been started and persistence can no longer be enabled. You can only call enablePersistence() before calling any other methods on a Firestore object.\");\n var r = !1;\n return t && (void 0 !== t.experimentalTabSynchronization && ge(\"The 'experimentalTabSynchronization' setting will be removed. Use 'synchronizeTabs' instead.\"), \n r = null !== (n = null !== (e = t.synchronizeTabs) && void 0 !== e ? e : t.experimentalTabSynchronization) && void 0 !== n && n), \n this.oE(this.sE, {\n DT: !0,\n cacheSizeBytes: this.iE.cacheSizeBytes,\n synchronizeTabs: r\n });\n }, t.prototype.clearPersistence = function() {\n return e.__awaiter(this, void 0, void 0, (function() {\n var t, n = this;\n return e.__generator(this, (function(r) {\n if (void 0 !== this.XT && !this.XT.MT) throw new c(h.FAILED_PRECONDITION, \"Persistence cannot be cleared after this Firestore instance is initialized.\");\n return t = new je, [ 2 /*return*/ , (this.YT.lh((function() {\n return e.__awaiter(n, void 0, void 0, (function() {\n var n, r;\n return e.__generator(this, (function(e) {\n switch (e.label) {\n case 0:\n return e.trys.push([ 0, 2, , 3 ]), n = this.aE(), [ 4 /*yield*/ , this.sE.clearPersistence(n) ];\n\n case 1:\n return e.sent(), t.resolve(), [ 3 /*break*/ , 3 ];\n\n case 2:\n return r = e.sent(), t.reject(r), [ 3 /*break*/ , 3 ];\n\n case 3:\n return [ 2 /*return*/ ];\n }\n }));\n }));\n })), t.promise) ];\n }));\n }));\n }, t.prototype.terminate = function() {\n return this.app._removeServiceInstance(\"firestore\"), this.INTERNAL.delete();\n }, Object.defineProperty(t.prototype, \"uE\", {\n get: function() {\n return this.JT(), this.XT.MT;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.waitForPendingWrites = function() {\n return this.JT(), this.XT.waitForPendingWrites();\n }, t.prototype.onSnapshotsInSync = function(t) {\n if (this.JT(), Pi(t)) return this.cE(t);\n hr(\"Firestore.onSnapshotsInSync\", \"function\", 1, t);\n var e = {\n next: t\n };\n return this.cE(e);\n }, t.prototype.cE = function(t) {\n var e = this, n = new Oi({\n next: function() {\n t.next && t.next();\n },\n error: function(t) {\n throw Ee();\n }\n });\n return this.XT.Lf(n), function() {\n n.BT(), e.XT.Of(n);\n };\n }, t.prototype.JT = function() {\n return this.XT || \n // Kick off starting the client but don't actually wait for it.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.oE(new Ri, {\n DT: !1\n }), this.XT;\n }, t.prototype.aE = function() {\n return new Ae(this.zT, this.tE, this.iE.host, this.iE.ssl, this.iE.forceLongPolling);\n }, t.prototype.oE = function(t, e) {\n var n = this.aE();\n return this.XT = new Vi(pe.Lt(), n, this.eE, this.YT), this.XT.start(t, e);\n }, t.prototype.rE = function(t) {\n var e = pe.Lt().vT(t);\n return new zr(e, (function(e) {\n if (e instanceof Gi) {\n var n = t, r = e.firestore.zT;\n if (!r.isEqual(n)) throw new c(h.INVALID_ARGUMENT, \"Document reference is for database \" + r.projectId + \"/\" + r.database + \" but should be for database \" + n.projectId + \"/\" + n.database);\n return new Br(t, e._E);\n }\n return e;\n }));\n }, t.ZT = function(t) {\n if (e = t.options, \"projectId\", !Object.prototype.hasOwnProperty.call(e, \"projectId\")) throw new c(h.INVALID_ARGUMENT, '\"projectId\" not provided in firebase.initializeApp.');\n var e, n = t.options.projectId;\n // Export the classes with a private constructor (it will fail if invoked\n // at runtime). Note that this still allows instanceof checks.\n // We're treating the variables as class names, so disable checking for lower\n // case variable names.\n if (!n || \"string\" != typeof n) throw new c(h.INVALID_ARGUMENT, \"projectId must be a string in FirebaseApp.options\");\n return new Se(n);\n }, Object.defineProperty(t.prototype, \"app\", {\n get: function() {\n if (!this.HT) throw new c(h.FAILED_PRECONDITION, \"Firestore was not initialized using the Firebase SDK. 'app' is not available\");\n return this.HT;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.collection = function(t) {\n return sr(\"Firestore.collection\", arguments, 1), hr(\"Firestore.collection\", \"non-empty string\", 1, t), \n this.JT(), new Zi(w.G(t), this);\n }, t.prototype.doc = function(t) {\n return sr(\"Firestore.doc\", arguments, 1), hr(\"Firestore.doc\", \"non-empty string\", 1, t), \n this.JT(), Gi.lE(w.G(t), this);\n }, t.prototype.collectionGroup = function(t) {\n if (sr(\"Firestore.collectionGroup\", arguments, 1), hr(\"Firestore.collectionGroup\", \"non-empty string\", 1, t), \n t.indexOf(\"/\") >= 0) throw new c(h.INVALID_ARGUMENT, \"Invalid collection ID '\" + t + \"' passed to function Firestore.collectionGroup(). Collection IDs must not contain '/'.\");\n return this.JT(), new Yi(new _t(w.H, t), this);\n }, t.prototype.runTransaction = function(t) {\n var e = this;\n return sr(\"Firestore.runTransaction\", arguments, 1), hr(\"Firestore.runTransaction\", \"function\", 1, t), \n this.JT().transaction((function(n) {\n return t(new ji(e, n));\n }));\n }, t.prototype.batch = function() {\n return this.JT(), new Fi(this);\n }, Object.defineProperty(t, \"logLevel\", {\n get: function() {\n switch (ye()) {\n case r.LogLevel.DEBUG:\n return \"debug\";\n\n case r.LogLevel.SILENT:\n return \"silent\";\n\n default:\n // The default log level is error\n return \"error\";\n }\n },\n enumerable: !0,\n configurable: !0\n }), t.setLogLevel = function(t) {\n switch (sr(\"Firestore.setLogLevel\", arguments, 1), hr(\"Firestore.setLogLevel\", \"non-empty string\", 1, t), \n t) {\n case \"debug\":\n ve(r.LogLevel.DEBUG);\n break;\n\n case \"error\":\n ve(r.LogLevel.ERROR);\n break;\n\n case \"silent\":\n ve(r.LogLevel.SILENT);\n break;\n\n default:\n throw new c(h.INVALID_ARGUMENT, \"Invalid log level: \" + t);\n }\n }, \n // Note: this is not a property because the minifier can't work correctly with\n // the way TypeScript compiler outputs properties.\n t.prototype.dE = function() {\n return this.iE.timestampsInSnapshots;\n }, t;\n}(), ji = /** @class */ function() {\n function t(t, e) {\n this.fE = t, this.TE = e;\n }\n return t.prototype.get = function(t) {\n var e = this;\n sr(\"Transaction.get\", arguments, 1);\n var n = Ji(\"Transaction.get\", t, this.fE);\n return this.TE.p_([ n._E ]).then((function(t) {\n if (!t || 1 !== t.length) return Ee();\n var r = t[0];\n if (r instanceof gt) return new zi(e.fE, n._E, null, \n /* fromCache= */ !1, \n /* hasPendingWrites= */ !1, n.EE);\n if (r instanceof mt) return new zi(e.fE, n._E, r, \n /* fromCache= */ !1, \n /* hasPendingWrites= */ !1, n.EE);\n throw Ee();\n }));\n }, t.prototype.set = function(t, e, n) {\n ar(\"Transaction.set\", arguments, 2, 3);\n var r = Ji(\"Transaction.set\", t, this.fE);\n n = Wi(\"Transaction.set\", n);\n var i = to(r.EE, e, \"Transaction.set\"), o = i[0], s = i[1], u = n.merge || n.mergeFields ? this.fE.nE.Mc(s, o, n.mergeFields) : this.fE.nE.kc(s, o);\n return this.TE.set(r._E, u), this;\n }, t.prototype.update = function(t, e, n) {\n for (var r, i, o = [], s = 3; s < arguments.length; s++) o[s - 3] = arguments[s];\n return \"string\" == typeof e || e instanceof Dr ? (ur(\"Transaction.update\", arguments, 3), \n r = Ji(\"Transaction.update\", t, this.fE), i = this.fE.nE.Bc(\"Transaction.update\", e, n, o)) : (sr(\"Transaction.update\", arguments, 2), \n r = Ji(\"Transaction.update\", t, this.fE), i = this.fE.nE.Lc(\"Transaction.update\", e)), \n this.TE.update(r._E, i), this;\n }, t.prototype.delete = function(t) {\n sr(\"Transaction.delete\", arguments, 1);\n var e = Ji(\"Transaction.delete\", t, this.fE);\n return this.TE.delete(e._E), this;\n }, t;\n}(), Fi = /** @class */ function() {\n function t(t) {\n this.fE = t, this.IE = [], this.wE = !1;\n }\n return t.prototype.set = function(t, e, n) {\n ar(\"WriteBatch.set\", arguments, 2, 3), this.RE();\n var r = Ji(\"WriteBatch.set\", t, this.fE);\n n = Wi(\"WriteBatch.set\", n);\n var i = to(r.EE, e, \"WriteBatch.set\"), o = i[0], s = i[1], u = n.merge || n.mergeFields ? this.fE.nE.Mc(s, o, n.mergeFields) : this.fE.nE.kc(s, o);\n return this.IE = this.IE.concat(u.gc(r._E, ut.NONE)), this;\n }, t.prototype.update = function(t, e, n) {\n for (var r, i, o = [], s = 3; s < arguments.length; s++) o[s - 3] = arguments[s];\n return this.RE(), \"string\" == typeof e || e instanceof Dr ? (ur(\"WriteBatch.update\", arguments, 3), \n r = Ji(\"WriteBatch.update\", t, this.fE), i = this.fE.nE.Bc(\"WriteBatch.update\", e, n, o)) : (sr(\"WriteBatch.update\", arguments, 2), \n r = Ji(\"WriteBatch.update\", t, this.fE), i = this.fE.nE.Lc(\"WriteBatch.update\", e)), \n this.IE = this.IE.concat(i.gc(r._E, ut.exists(!0))), this;\n }, t.prototype.delete = function(t) {\n sr(\"WriteBatch.delete\", arguments, 1), this.RE();\n var e = Ji(\"WriteBatch.delete\", t, this.fE);\n return this.IE = this.IE.concat(new lt(e._E, ut.NONE)), this;\n }, t.prototype.commit = function() {\n return this.RE(), this.wE = !0, this.IE.length > 0 ? this.fE.JT().write(this.IE) : Promise.resolve();\n }, t.prototype.RE = function() {\n if (this.wE) throw new c(h.FAILED_PRECONDITION, \"A write batch can no longer be used after commit() has been called.\");\n }, t;\n}(), Gi = /** @class */ function() {\n function t(t, e, n) {\n this._E = t, this.firestore = e, this.EE = n, this.XT = this.firestore.JT();\n }\n return t.lE = function(e, n, r) {\n if (e.length % 2 != 0) throw new c(h.INVALID_ARGUMENT, \"Invalid document reference. Document references must have an even number of segments, but \" + e.K() + \" has \" + e.length);\n return new t(new b(e), n, r);\n }, Object.defineProperty(t.prototype, \"id\", {\n get: function() {\n return this._E.path.B();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"parent\", {\n get: function() {\n return new Zi(this._E.path.L(), this.firestore, this.EE);\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"path\", {\n get: function() {\n return this._E.path.K();\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.collection = function(t) {\n if (sr(\"DocumentReference.collection\", arguments, 1), hr(\"DocumentReference.collection\", \"non-empty string\", 1, t), \n !t) throw new c(h.INVALID_ARGUMENT, \"Must provide a non-empty collection name to collection()\");\n var e = w.G(t);\n return new Zi(this._E.path.child(e), this.firestore);\n }, t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) throw wr(\"isEqual\", \"DocumentReference\", 1, e);\n return this.firestore === e.firestore && this._E.isEqual(e._E) && this.EE === e.EE;\n }, t.prototype.set = function(t, e) {\n ar(\"DocumentReference.set\", arguments, 1, 2), e = Wi(\"DocumentReference.set\", e);\n var n = to(this.EE, t, \"DocumentReference.set\"), r = n[0], i = n[1], o = e.merge || e.mergeFields ? this.firestore.nE.Mc(i, r, e.mergeFields) : this.firestore.nE.kc(i, r);\n return this.XT.write(o.gc(this._E, ut.NONE));\n }, t.prototype.update = function(t, e) {\n for (var n, r = [], i = 2; i < arguments.length; i++) r[i - 2] = arguments[i];\n return \"string\" == typeof t || t instanceof Dr ? (ur(\"DocumentReference.update\", arguments, 2), \n n = this.firestore.nE.Bc(\"DocumentReference.update\", t, e, r)) : (sr(\"DocumentReference.update\", arguments, 1), \n n = this.firestore.nE.Lc(\"DocumentReference.update\", t)), this.XT.write(n.gc(this._E, ut.exists(!0)));\n }, t.prototype.delete = function() {\n return sr(\"DocumentReference.delete\", arguments, 0), this.XT.write([ new lt(this._E, ut.NONE) ]);\n }, t.prototype.onSnapshot = function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n ar(\"DocumentReference.onSnapshot\", arguments, 1, 4);\n var n, r = {\n includeMetadataChanges: !1\n }, i = 0;\n \"object\" != typeof t[i] || Pi(t[i]) || (gr(\"DocumentReference.onSnapshot\", r = t[i], [ \"includeMetadataChanges\" ]), \n lr(\"DocumentReference.onSnapshot\", \"boolean\", \"includeMetadataChanges\", r.includeMetadataChanges), \n i++);\n var o = {\n includeMetadataChanges: r.includeMetadataChanges\n };\n return Pi(t[i]) ? n = t[i] : (hr(\"DocumentReference.onSnapshot\", \"function\", i, t[i]), \n cr(\"DocumentReference.onSnapshot\", \"function\", i + 1, t[i + 1]), cr(\"DocumentReference.onSnapshot\", \"function\", i + 2, t[i + 2]), \n n = {\n next: t[i],\n error: t[i + 1],\n complete: t[i + 2]\n }), this.AE(o, n);\n }, t.prototype.AE = function(t, e) {\n var n = this, r = function(t) {\n console.error(\"Uncaught Error in onSnapshot:\", t);\n };\n e.error && (r = e.error.bind(e));\n var i = new Oi({\n next: function(t) {\n if (e.next) {\n var r = t.docs.get(n._E);\n e.next(new zi(n.firestore, n._E, r, t.fromCache, t.hasPendingWrites, n.EE));\n }\n },\n error: r\n }), o = this.XT.listen(_t.ve(this._E.path), i, t);\n return function() {\n i.BT(), n.XT.fl(o);\n };\n }, t.prototype.get = function(t) {\n var e = this;\n return ar(\"DocumentReference.get\", arguments, 0, 1), Xi(\"DocumentReference.get\", t), \n new Promise((function(n, r) {\n t && \"cache\" === t.source ? e.firestore.JT().LT(e._E).then((function(t) {\n n(new zi(e.firestore, e._E, t, \n /*fromCache=*/ !0, t instanceof mt && t.te, e.EE));\n }), r) : e.mE(n, r, t);\n }));\n }, t.prototype.mE = function(t, e, n) {\n var r = this.AE({\n includeMetadataChanges: !0,\n jf: !0\n }, {\n next: function(i) {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n r(), !i.exists && i.metadata.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 e(new c(h.UNAVAILABLE, \"Failed to get document because the client is offline.\")) : i.exists && i.metadata.fromCache && n && \"server\" === n.source ? e(new c(h.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.)')) : t(i);\n },\n error: e\n });\n }, t.prototype.withConverter = function(e) {\n return new t(this._E, this.firestore, e);\n }, t;\n}(), Bi = /** @class */ function() {\n function t(t, e) {\n this.hasPendingWrites = t, this.fromCache = e;\n }\n return t.prototype.isEqual = function(t) {\n return this.hasPendingWrites === t.hasPendingWrites && this.fromCache === t.fromCache;\n }, t;\n}(), zi = /** @class */ function() {\n function t(t, e, n, r, i, o) {\n this.fE = t, this._E = e, this.PE = n, this.VE = r, this.gE = i, this.EE = o;\n }\n return t.prototype.data = function(t) {\n if (ar(\"DocumentSnapshot.data\", arguments, 0, 1), t = Hi(\"DocumentSnapshot.data\", t), \n this.PE) {\n // We only want to use the converter and create a new DocumentSnapshot\n // if a converter has been provided.\n if (this.EE) {\n var e = new Ki(this.fE, this._E, this.PE, this.VE, this.gE);\n return this.EE.fromFirestore(e, t);\n }\n return new Ci(this.fE, this.fE.dE(), t.serverTimestamps, \n /* converter= */ void 0).UT(this.PE.Re());\n }\n }, t.prototype.get = function(t, e) {\n if (ar(\"DocumentSnapshot.get\", arguments, 1, 2), e = Hi(\"DocumentSnapshot.get\", e), \n this.PE) {\n var n = this.PE.data().field(Qr(\"DocumentSnapshot.get\", t));\n if (null !== n) return new Ci(this.fE, this.fE.dE(), e.serverTimestamps, this.EE).UT(n);\n }\n }, Object.defineProperty(t.prototype, \"id\", {\n get: function() {\n return this._E.path.B();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"ref\", {\n get: function() {\n return new Gi(this._E, this.fE, this.EE);\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"exists\", {\n get: function() {\n return null !== this.PE;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"metadata\", {\n get: function() {\n return new Bi(this.gE, this.VE);\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) throw wr(\"isEqual\", \"DocumentSnapshot\", 1, e);\n return this.fE === e.fE && this.VE === e.VE && this._E.isEqual(e._E) && (null === this.PE ? null === e.PE : this.PE.isEqual(e.PE)) && this.EE === e.EE;\n }, t;\n}(), Ki = /** @class */ function(t) {\n function n() {\n return null !== t && t.apply(this, arguments) || this;\n }\n return e.__extends(n, t), n.prototype.data = function(e) {\n return t.prototype.data.call(this, e);\n }, n;\n}(zi), Yi = /** @class */ function() {\n function t(t, e, n) {\n this.pE = t, this.firestore = e, this.EE = n;\n }\n return t.prototype.where = function(e, n, r) {\n var i;\n sr(\"Query.where\", arguments, 3), mr(\"Query.where\", 3, r), function(t, e, n, r) {\n if (!e.some((function(t) {\n return t === r;\n }))) throw new c(h.INVALID_ARGUMENT, \"Invalid value \" + vr(r) + \" provided to function Query.where() for its \" + _r(2) + \" argument. Acceptable values: \" + e.join(\", \"));\n }(0, [ \"<\", \"<=\", \"==\", \">=\", \">\", \"array-contains\", \"in\", \"array-contains-any\" ], 0, n);\n var o = Qr(\"Query.where\", e), s = bt.G(n);\n if (o.J()) {\n if (s === bt.ARRAY_CONTAINS || s === bt.ARRAY_CONTAINS_ANY) throw new c(h.INVALID_ARGUMENT, \"Invalid Query. You can't perform '\" + s.toString() + \"' queries on FieldPath.documentId().\");\n if (s === bt.IN) {\n this.yE(r, s);\n for (var u = [], a = 0, f = r; a < f.length; a++) {\n var l = f[a];\n u.push(this.bE(l));\n }\n i = {\n arrayValue: {\n values: u\n }\n };\n } else i = this.bE(r);\n } else s !== bt.IN && s !== bt.ARRAY_CONTAINS_ANY || this.yE(r, s), i = this.firestore.nE.qc(\"Query.where\", r, \n // We only allow nested arrays for IN queries.\n /** allowArrays = */ s === bt.IN);\n var p = It.create(o, s, i);\n return this.vE(p), new t(this.pE.Ce(p), this.firestore, this.EE);\n }, t.prototype.orderBy = function(e, n) {\n var r;\n if (ar(\"Query.orderBy\", arguments, 1, 2), cr(\"Query.orderBy\", \"non-empty string\", 2, n), \n void 0 === n || \"asc\" === n) r = kt.ASCENDING; else {\n if (\"desc\" !== n) throw new c(h.INVALID_ARGUMENT, \"Function Query.orderBy() has unknown direction '\" + n + \"', expected 'asc' or 'desc'.\");\n r = kt.DESCENDING;\n }\n if (null !== this.pE.startAt) throw new c(h.INVALID_ARGUMENT, \"Invalid query. You must not call Query.startAt() or Query.startAfter() before calling Query.orderBy().\");\n if (null !== this.pE.endAt) throw new c(h.INVALID_ARGUMENT, \"Invalid query. You must not call Query.endAt() or Query.endBefore() before calling Query.orderBy().\");\n var i = Qr(\"Query.orderBy\", e), o = new Vt(i, r);\n return this.SE(o), new t(this.pE.Fe(o), this.firestore, this.EE);\n }, t.prototype.limit = function(e) {\n return sr(\"Query.limit\", arguments, 1), hr(\"Query.limit\", \"number\", 1, e), Er(\"Query.limit\", 1, e), \n new t(this.pE.Ne(e), this.firestore, this.EE);\n }, t.prototype.limitToLast = function(e) {\n return sr(\"Query.limitToLast\", arguments, 1), hr(\"Query.limitToLast\", \"number\", 1, e), \n Er(\"Query.limitToLast\", 1, e), new t(this.pE.ke(e), this.firestore, this.EE);\n }, t.prototype.startAt = function(e) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n ur(\"Query.startAt\", arguments, 1);\n var i = this.DE(\"Query.startAt\", e, n, \n /*before=*/ !0);\n return new t(this.pE.$e(i), this.firestore, this.EE);\n }, t.prototype.startAfter = function(e) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n ur(\"Query.startAfter\", arguments, 1);\n var i = this.DE(\"Query.startAfter\", e, n, \n /*before=*/ !1);\n return new t(this.pE.$e(i), this.firestore, this.EE);\n }, t.prototype.endBefore = function(e) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n ur(\"Query.endBefore\", arguments, 1);\n var i = this.DE(\"Query.endBefore\", e, n, \n /*before=*/ !0);\n return new t(this.pE.Me(i), this.firestore, this.EE);\n }, t.prototype.endAt = function(e) {\n for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r];\n ur(\"Query.endAt\", arguments, 1);\n var i = this.DE(\"Query.endAt\", e, n, \n /*before=*/ !1);\n return new t(this.pE.Me(i), this.firestore, this.EE);\n }, t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) throw wr(\"isEqual\", \"Query\", 1, e);\n return this.firestore === e.firestore && this.pE.isEqual(e.pE);\n }, t.prototype.withConverter = function(e) {\n return new t(this.pE, this.firestore, e);\n }, \n /** Helper function to create a bound from a document or fields */ t.prototype.DE = function(t, e, n, r) {\n if (mr(t, 1, e), e instanceof zi) {\n if (n.length > 0) throw new c(h.INVALID_ARGUMENT, \"Too many arguments provided to \" + t + \"().\");\n var i = e;\n if (!i.exists) throw new c(h.NOT_FOUND, \"Can't use a DocumentSnapshot that doesn't exist for \" + t + \"().\");\n return this.CE(i.PE, r);\n }\n var o = [ e ].concat(n);\n return this.FE(t, o, r);\n }, \n /**\n * Create a Bound from a query and a document.\n *\n * Note that the Bound will always include the key of the document\n * and so only the provided document will compare equal to the returned\n * position.\n *\n * Will throw if the document does not contain all fields of the order by\n * of the query or if any of the fields in the order by are an uncommitted\n * server timestamp.\n */\n t.prototype.CE = function(t, e) {\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 n = [], r = 0, i = this.pE.orderBy; r < i.length; r++) {\n var o = i[r];\n if (o.field.J()) n.push(Q(this.firestore.zT, t.key)); else {\n var s = t.field(o.field);\n if (P(s)) throw new c(h.INVALID_ARGUMENT, 'Invalid query. You are trying to start or end a query using a document for which the field \"' + o.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 === s) {\n var u = o.field.K();\n throw new c(h.INVALID_ARGUMENT, \"Invalid query. You are trying to start or end a query using a document for which the field '\" + u + \"' (used as the orderBy) does not exist.\");\n }\n n.push(s);\n }\n }\n return new Lt(n, e);\n }, \n /**\n * Converts a list of field values to a Bound for the given query.\n */\n t.prototype.FE = function(t, e, n) {\n // Use explicit order by's because it has to match the query the user made\n var r = this.pE.Ve;\n if (e.length > r.length) throw new c(h.INVALID_ARGUMENT, \"Too many arguments provided to \" + t + \"(). The number of arguments must be less than or equal to the number of Query.orderBy() clauses\");\n for (var i = [], o = 0; o < e.length; o++) {\n var s = e[o];\n if (r[o].field.J()) {\n if (\"string\" != typeof s) throw new c(h.INVALID_ARGUMENT, \"Invalid query. Expected a string for document ID in \" + t + \"(), but got a \" + typeof s);\n if (!this.pE.He() && -1 !== s.indexOf(\"/\")) throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying a collection and ordering by FieldPath.documentId(), the value passed to \" + t + \"() must be a plain document ID, but '\" + s + \"' contains a slash.\");\n var u = this.pE.path.child(w.G(s));\n if (!b.st(u)) throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying a collection group and ordering by FieldPath.documentId(), the value passed to \" + t + \"() must result in a valid document path, but '\" + u + \"' is not because it contains an odd number of segments.\");\n var a = new b(u);\n i.push(Q(this.firestore.zT, a));\n } else {\n var f = this.firestore.nE.qc(t, s);\n i.push(f);\n }\n }\n return new Lt(i, n);\n }, t.prototype.onSnapshot = function() {\n for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];\n ar(\"Query.onSnapshot\", arguments, 1, 4);\n var n, r = {}, i = 0;\n return \"object\" != typeof t[i] || Pi(t[i]) || (gr(\"Query.onSnapshot\", r = t[i], [ \"includeMetadataChanges\" ]), \n lr(\"Query.onSnapshot\", \"boolean\", \"includeMetadataChanges\", r.includeMetadataChanges), \n i++), Pi(t[i]) ? n = t[i] : (hr(\"Query.onSnapshot\", \"function\", i, t[i]), cr(\"Query.onSnapshot\", \"function\", i + 1, t[i + 1]), \n cr(\"Query.onSnapshot\", \"function\", i + 2, t[i + 2]), n = {\n next: t[i],\n error: t[i + 1],\n complete: t[i + 2]\n }), this.NE(this.pE), this.AE(r, n);\n }, t.prototype.AE = function(t, e) {\n var n = this, r = function(t) {\n console.error(\"Uncaught Error in onSnapshot:\", t);\n };\n e.error && (r = e.error.bind(e));\n var i = new Oi({\n next: function(t) {\n e.next && e.next(new Qi(n.firestore, n.pE, t, n.EE));\n },\n error: r\n }), o = this.firestore.JT(), s = o.listen(this.pE, i, t);\n return function() {\n i.BT(), o.fl(s);\n };\n }, t.prototype.NE = function(t) {\n if (t.Ke() && 0 === t.Ve.length) throw new c(h.UNIMPLEMENTED, \"limitToLast() queries require specifying at least one orderBy() clause\");\n }, t.prototype.get = function(t) {\n var e = this;\n return ar(\"Query.get\", arguments, 0, 1), Xi(\"Query.get\", t), this.NE(this.pE), new Promise((function(n, r) {\n t && \"cache\" === t.source ? e.firestore.JT().OT(e.pE).then((function(t) {\n n(new Qi(e.firestore, e.pE, t, e.EE));\n }), r) : e.mE(n, r, t);\n }));\n }, t.prototype.mE = function(t, e, n) {\n var r = this.AE({\n includeMetadataChanges: !0,\n jf: !0\n }, {\n next: function(i) {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n r(), i.metadata.fromCache && n && \"server\" === n.source ? e(new c(h.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.)')) : t(i);\n },\n error: e\n });\n }, \n /**\n * Parses the given documentIdValue into a ReferenceValue, throwing\n * appropriate errors if the value is anything other than a DocumentReference\n * or String, or if the string is malformed.\n */\n t.prototype.bE = function(t) {\n if (\"string\" == typeof t) {\n if (\"\" === t) throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying with FieldPath.documentId(), you must provide a valid document ID, but it was an empty string.\");\n if (!this.pE.He() && -1 !== t.indexOf(\"/\")) throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying a collection by FieldPath.documentId(), you must provide a plain document ID, but '\" + t + \"' contains a '/' character.\");\n var e = this.pE.path.child(w.G(t));\n if (!b.st(e)) throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying a collection group by FieldPath.documentId(), the value provided must result in a valid document path, but '\" + e + \"' is not because it has an odd number of segments (\" + e.length + \").\");\n return Q(this.firestore.zT, new b(e));\n }\n if (t instanceof Gi) {\n var n = t;\n return Q(this.firestore.zT, n._E);\n }\n throw new c(h.INVALID_ARGUMENT, \"Invalid query. When querying with FieldPath.documentId(), you must provide a valid string or a DocumentReference, but it was: \" + vr(t) + \".\");\n }, \n /**\n * Validates that the value passed into a disjunctrive filter satisfies all\n * array requirements.\n */\n t.prototype.yE = function(t, e) {\n if (!Array.isArray(t) || 0 === t.length) throw new c(h.INVALID_ARGUMENT, \"Invalid Query. A non-empty array is required for '\" + e.toString() + \"' filters.\");\n if (t.length > 10) throw new c(h.INVALID_ARGUMENT, \"Invalid Query. '\" + e.toString() + \"' filters support a maximum of 10 elements in the value array.\");\n if (t.indexOf(null) >= 0) throw new c(h.INVALID_ARGUMENT, \"Invalid Query. '\" + e.toString() + \"' filters cannot contain 'null' in the value array.\");\n if (t.filter((function(t) {\n return Number.isNaN(t);\n })).length > 0) throw new c(h.INVALID_ARGUMENT, \"Invalid Query. '\" + e.toString() + \"' filters cannot contain 'NaN' in the value array.\");\n }, t.prototype.vE = function(t) {\n if (t instanceof It) {\n var e = [ bt.ARRAY_CONTAINS, bt.ARRAY_CONTAINS_ANY ], n = [ bt.IN, bt.ARRAY_CONTAINS_ANY ], r = e.indexOf(t.op) >= 0, i = n.indexOf(t.op) >= 0;\n if (t.Ge()) {\n var o = this.pE.Se();\n if (null !== o && !o.isEqual(t.field)) throw new c(h.INVALID_ARGUMENT, \"Invalid query. All where filters with an inequality (<, <=, >, or >=) must be on the same field. But you have inequality filters on '\" + o.toString() + \"' and '\" + t.field.toString() + \"'\");\n var s = this.pE.De();\n null !== s && this.kE(t.field, s);\n } else if (i || r) {\n // You can have at most 1 disjunctive filter and 1 array filter. Check if\n // the new filter conflicts with an existing one.\n var u = null;\n if (i && (u = this.pE.ze(n)), null === u && r && (u = this.pE.ze(e)), null != u) \n // We special case when it's a duplicate op to give a slightly clearer error message.\n throw u === t.op ? new c(h.INVALID_ARGUMENT, \"Invalid query. You cannot use more than one '\" + t.op.toString() + \"' filter.\") : new c(h.INVALID_ARGUMENT, \"Invalid query. You cannot use '\" + t.op.toString() + \"' filters with '\" + u.toString() + \"' filters.\");\n }\n }\n }, t.prototype.SE = function(t) {\n if (null === this.pE.De()) {\n // This is the first order by. It must match any inequality.\n var e = this.pE.Se();\n null !== e && this.kE(e, t.field);\n }\n }, t.prototype.kE = function(t, e) {\n if (!e.isEqual(t)) throw new c(h.INVALID_ARGUMENT, \"Invalid query. You have a where filter with an inequality (<, <=, >, or >=) on field '\" + t.toString() + \"' and so you must also use '\" + t.toString() + \"' as your first Query.orderBy(), but your first Query.orderBy() is on field '\" + e.toString() + \"' instead.\");\n }, t;\n}(), Qi = /** @class */ function() {\n function t(t, e, n, r) {\n this.fE = t, this.$E = e, this.ME = n, this.EE = r, this.LE = null, this.OE = null, \n this.metadata = new Bi(n.hasPendingWrites, n.fromCache);\n }\n return Object.defineProperty(t.prototype, \"docs\", {\n get: function() {\n var t = [];\n return this.forEach((function(e) {\n return t.push(e);\n })), t;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"empty\", {\n get: function() {\n return this.ME.docs.q();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"size\", {\n get: function() {\n return this.ME.docs.size;\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.forEach = function(t, e) {\n var n = this;\n ar(\"QuerySnapshot.forEach\", arguments, 1, 2), hr(\"QuerySnapshot.forEach\", \"function\", 1, t), \n this.ME.docs.forEach((function(r) {\n t.call(e, n.xE(r));\n }));\n }, Object.defineProperty(t.prototype, \"query\", {\n get: function() {\n return new Yi(this.$E, this.fE, this.EE);\n },\n enumerable: !0,\n configurable: !0\n }), t.prototype.docChanges = function(t) {\n t && (gr(\"QuerySnapshot.docChanges\", t, [ \"includeMetadataChanges\" ]), lr(\"QuerySnapshot.docChanges\", \"boolean\", \"includeMetadataChanges\", t.includeMetadataChanges));\n var e = !(!t || !t.includeMetadataChanges);\n if (e && this.ME.ds) throw new c(h.INVALID_ARGUMENT, \"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().\");\n return this.LE && this.OE === e || (this.LE = \n /**\n * Calculates the array of firestore.DocumentChange's for a given ViewSnapshot.\n *\n * Exported for testing.\n */\n function(t, e, n, r) {\n if (n.cs.q()) {\n // Special case the first snapshot because index calculation is easy and\n // fast\n var i = 0;\n return n.docChanges.map((function(e) {\n var o = new Ki(t, e.doc.key, e.doc, n.fromCache, n._s.has(e.doc.key), r);\n return e.doc, {\n type: \"added\",\n doc: o,\n oldIndex: -1,\n newIndex: i++\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 o = n.cs;\n return n.docChanges.filter((function(t) {\n return e || 3 /* Metadata */ !== t.type;\n })).map((function(e) {\n var i = new Ki(t, e.doc.key, e.doc, n.fromCache, n._s.has(e.doc.key), r), s = -1, u = -1;\n return 0 /* Added */ !== e.type && (s = o.indexOf(e.doc.key), o = o.delete(e.doc.key)), \n 1 /* Removed */ !== e.type && (u = (o = o.add(e.doc)).indexOf(e.doc.key)), {\n type: $i(e.type),\n doc: i,\n oldIndex: s,\n newIndex: u\n };\n }));\n }(this.fE, e, this.ME, this.EE), this.OE = e), this.LE;\n }, \n /** Check the equality. The call can be very expensive. */ t.prototype.isEqual = function(e) {\n if (!(e instanceof t)) throw wr(\"isEqual\", \"QuerySnapshot\", 1, e);\n return this.fE === e.fE && this.$E.isEqual(e.$E) && this.ME.isEqual(e.ME) && this.EE === e.EE;\n }, t.prototype.xE = function(t) {\n return new Ki(this.fE, t.key, t, this.metadata.fromCache, this.ME._s.has(t.key), this.EE);\n }, t;\n}(), Zi = /** @class */ function(t) {\n function n(e, n, r) {\n var i = this;\n if ((i = t.call(this, _t.ve(e), n, r) || this).BE = e, e.length % 2 != 1) throw new c(h.INVALID_ARGUMENT, \"Invalid collection reference. Collection references must have an odd number of segments, but \" + e.K() + \" has \" + e.length);\n return i;\n }\n return e.__extends(n, t), Object.defineProperty(n.prototype, \"id\", {\n get: function() {\n return this.pE.path.B();\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"parent\", {\n get: function() {\n var t = this.pE.path.L();\n return t.q() ? null : new Gi(new b(t), this.firestore);\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(n.prototype, \"path\", {\n get: function() {\n return this.pE.path.K();\n },\n enumerable: !0,\n configurable: !0\n }), n.prototype.doc = function(t) {\n if (ar(\"CollectionReference.doc\", arguments, 0, 1), \n // We allow omission of 'pathString' but explicitly prohibit passing in both\n // 'undefined' and 'null'.\n 0 === arguments.length && (t = be.En()), hr(\"CollectionReference.doc\", \"non-empty string\", 1, t), \n \"\" === t) throw new c(h.INVALID_ARGUMENT, \"Document path must be a non-empty string\");\n var e = w.G(t);\n return Gi.lE(this.pE.path.child(e), this.firestore, this.EE);\n }, n.prototype.add = function(t) {\n sr(\"CollectionReference.add\", arguments, 1), hr(\"CollectionReference.add\", \"object\", 1, this.EE ? this.EE.toFirestore(t) : t);\n var e = this.doc();\n return e.set(t).then((function() {\n return e;\n }));\n }, n.prototype.withConverter = function(t) {\n return new n(this.BE, this.firestore, t);\n }, n;\n}(Yi);\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// settings() defaults:\nfunction Wi(t, e) {\n if (void 0 === e) return {\n merge: !1\n };\n if (gr(t, e, [ \"merge\", \"mergeFields\" ]), lr(t, \"boolean\", \"merge\", e.merge), function(t, e, n, r, i) {\n void 0 !== r && function(t, e, n, r, i) {\n if (!(r instanceof Array)) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires its \" + e + \" option to be an array, but it was: \" + vr(r));\n for (var o = 0; o < r.length; ++o) if (!i(r[o])) throw new c(h.INVALID_ARGUMENT, \"Function \" + t + \"() requires all \" + e + \" elements to be \" + n + \", but the value at index \" + o + \" was: \" + vr(r[o]));\n }(t, e, n, r, i);\n }(t, \"mergeFields\", \"a string or a FieldPath\", e.mergeFields, (function(t) {\n return \"string\" == typeof t || t instanceof Dr;\n })), void 0 !== e.mergeFields && void 0 !== e.merge) throw new c(h.INVALID_ARGUMENT, \"Invalid options passed to function \" + t + '(): You cannot specify both \"merge\" and \"mergeFields\".');\n return e;\n}\n\nfunction Hi(t, e) {\n return void 0 === e ? {} : (gr(t, e, [ \"serverTimestamps\" ]), pr(t, 0, \"serverTimestamps\", e.serverTimestamps, [ \"estimate\", \"previous\", \"none\" ]), \n e);\n}\n\nfunction Xi(t, e) {\n cr(t, \"object\", 1, e), e && (gr(t, e, [ \"source\" ]), pr(t, 0, \"source\", e.source, [ \"default\", \"server\", \"cache\" ]));\n}\n\nfunction Ji(t, e, n) {\n if (e instanceof Gi) {\n if (e.firestore !== n) throw new c(h.INVALID_ARGUMENT, \"Provided document reference is from a different Firestore instance.\");\n return e;\n }\n throw wr(t, \"DocumentReference\", 1, e);\n}\n\nfunction $i(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 Ee();\n }\n}\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 to(t, e, n) {\n var r;\n return t ? (r = t.toFirestore(e), n = \"toFirestore() in \" + n) : r = e, [ r, n ];\n}\n\nvar eo = Ir(Mi, \"Use firebase.firestore() instead.\"), no = Ir(ji, \"Use firebase.firestore().runTransaction() instead.\"), ro = Ir(Fi, \"Use firebase.firestore().batch() instead.\"), io = Ir(Gi, \"Use firebase.firestore().doc() instead.\"), oo = Ir(zi), so = Ir(Ki), uo = Ir(Yi), ao = Ir(Qi), ho = Ir(Zi, \"Use firebase.firestore().collection() instead.\"), co = {\n Firestore: eo,\n GeoPoint: Ur,\n Timestamp: v,\n Blob: Sr,\n Transaction: no,\n WriteBatch: ro,\n DocumentReference: io,\n DocumentSnapshot: oo,\n Query: uo,\n QueryDocumentSnapshot: so,\n QuerySnapshot: ao,\n CollectionReference: ho,\n FieldPath: Dr,\n FieldValue: Cr,\n setLogLevel: Mi.setLogLevel,\n CACHE_SIZE_UNLIMITED: Ui\n}, fo = /** @class */ function() {\n function t() {}\n return t.prototype.Y_ = function(t) {\n // No-op.\n }, t.prototype.mu = function() {\n // No-op.\n }, t;\n}(), lo = /** @class */ function() {\n function t() {\n var t = this;\n this.qE = function() {\n return t.UE();\n }, this.QE = function() {\n return t.WE();\n }, this.jE = [], this.KE();\n }\n return t.prototype.Y_ = function(t) {\n this.jE.push(t);\n }, t.prototype.mu = function() {\n window.removeEventListener(\"online\", this.qE), window.removeEventListener(\"offline\", this.QE);\n }, t.prototype.KE = function() {\n window.addEventListener(\"online\", this.qE), window.addEventListener(\"offline\", this.QE);\n }, t.prototype.UE = function() {\n me(\"ConnectivityMonitor\", \"Network connectivity changed: AVAILABLE\");\n for (var t = 0, e = this.jE; t < e.length; t++) {\n (0, e[t])(0 /* AVAILABLE */);\n }\n }, t.prototype.WE = function() {\n me(\"ConnectivityMonitor\", \"Network connectivity changed: UNAVAILABLE\");\n for (var t = 0, e = this.jE; 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.ho = function() {\n return \"undefined\" != typeof window && void 0 !== window.addEventListener && void 0 !== window.removeEventListener;\n }, t;\n}(), po = /** @class */ function() {\n function t(t) {\n this.GE = t.GE, this.zE = t.zE;\n }\n return t.prototype.__ = function(t) {\n this.HE = t;\n }, t.prototype.h_ = function(t) {\n this.YE = t;\n }, t.prototype.onMessage = function(t) {\n this.JE = t;\n }, t.prototype.close = function() {\n this.zE();\n }, t.prototype.send = function(t) {\n this.GE(t);\n }, t.prototype.XE = function() {\n this.HE();\n }, t.prototype.ZE = function(t) {\n this.YE(t);\n }, t.prototype.tI = function(t) {\n this.JE(t);\n }, t;\n}(), yo = {\n BatchGetDocuments: \"batchGet\",\n Commit: \"commit\"\n}, vo = \"gl-js/ fire/\" + u, mo = /** @class */ function() {\n function t(t) {\n this.ci = t.ci;\n var e = t.ssl ? \"https\" : \"http\";\n this.eI = e + \"://\" + t.host, this.forceLongPolling = t.forceLongPolling;\n }\n /**\n * Modifies the headers for a request, adding any authorization token if\n * present and any additional headers for the request.\n */ return t.prototype.sI = function(t, e) {\n if (e) for (var n in e.o) e.o.hasOwnProperty(n) && (t[n] = e.o[n]);\n t[\"X-Goog-Api-Client\"] = vo;\n }, t.prototype.g_ = function(t, e, n) {\n var r = this, i = this.iI(t);\n return new Promise((function(o, u) {\n var a = new s.XhrIo;\n a.listenOnce(s.EventType.COMPLETE, (function() {\n try {\n switch (a.getLastErrorCode()) {\n case s.ErrorCode.NO_ERROR:\n var e = a.getResponseJson();\n me(\"Connection\", \"XHR received:\", JSON.stringify(e)), o(e);\n break;\n\n case s.ErrorCode.TIMEOUT:\n me(\"Connection\", 'RPC \"' + t + '\" timed out'), u(new c(h.DEADLINE_EXCEEDED, \"Request time out\"));\n break;\n\n case s.ErrorCode.HTTP_ERROR:\n var n = a.getStatus();\n if (me(\"Connection\", 'RPC \"' + t + '\" failed with status:', n, \"response text:\", a.getResponseText()), \n n > 0) {\n var r = a.getResponseJson().error;\n if (r && r.status && r.message) {\n var i = function(t) {\n var e = t.toLowerCase().replace(\"_\", \"-\");\n return Object.values(h).indexOf(e) >= 0 ? e : h.UNKNOWN;\n }(r.status);\n u(new c(i, r.message));\n } else u(new c(h.UNKNOWN, \"Server responded with status \" + a.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 me(\"Connection\", 'RPC \"' + t + '\" failed'), u(new c(h.UNAVAILABLE, \"Connection failed.\"));\n break;\n\n default:\n Ee();\n }\n } finally {\n me(\"Connection\", 'RPC \"' + t + '\" completed.');\n }\n }));\n // The database field is already encoded in URL. Specifying it again in\n // the body is not necessary in production, and will cause duplicate field\n // errors in the Firestore Emulator. Let's remove it.\n var f = Object.assign({}, e);\n delete f.database;\n var l = JSON.stringify(f);\n me(\"Connection\", \"XHR sending: \", i + \" \" + l);\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\n // $httpOverwrite parameter supported by ESF to avoid\n // triggering preflight requests.\n var p = {\n \"Content-Type\": \"text/plain\"\n };\n r.sI(p, n), a.send(i, \"POST\", l, p, 15);\n }));\n }, t.prototype.y_ = function(t, e, n) {\n // The REST API automatically aggregates all of the streamed results, so we\n // can just use the normal invoke() method.\n return this.g_(t, e, n);\n }, t.prototype.l_ = function(t, e) {\n var n = [ this.eI, \"/\", \"google.firestore.v1.Firestore\", \"/\", t, \"/channel\" ], r = s.createWebChannelTransport(), 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.ci.projectId + \"/databases/\" + this.ci.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 };\n this.sI(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 i.isMobileCordova() || i.isReactNative() || i.isElectron() || i.isIE() || i.isUWP() || i.isBrowserExtension() || (o.httpHeadersOverwriteParam = \"$httpHeaders\");\n var u = n.join(\"\");\n me(\"Connection\", \"Creating WebChannel: \" + u + \" \" + o);\n var a = r.createWebChannel(u, o), f = !1, l = !1, p = new po({\n GE: function(t) {\n l ? me(\"Connection\", \"Not sending because WebChannel is closed:\", t) : (f || (me(\"Connection\", \"Opening WebChannel transport.\"), \n a.open(), f = !0), me(\"Connection\", \"WebChannel sending:\", t), a.send(t));\n },\n zE: function() {\n return a.close();\n }\n }), d = function(t, e) {\n // TODO(dimond): closure typing seems broken because WebChannel does\n // not implement goog.events.Listenable\n a.listen(t, (function(t) {\n try {\n e(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 d(s.WebChannel.EventType.OPEN, (function() {\n l || me(\"Connection\", \"WebChannel transport opened.\");\n })), d(s.WebChannel.EventType.CLOSE, (function() {\n l || (l = !0, me(\"Connection\", \"WebChannel transport closed\"), p.ZE());\n })), d(s.WebChannel.EventType.ERROR, (function(t) {\n l || (l = !0, me(\"Connection\", \"WebChannel transport errored:\", t), p.ZE(new c(h.UNAVAILABLE, \"The operation could not be completed\")));\n })), d(s.WebChannel.EventType.MESSAGE, (function(t) {\n var e;\n if (!l) {\n var n = t.data[0];\n _e(!!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 me(\"Connection\", \"WebChannel received error:\", i);\n // error.status will be a string like 'OK' or 'NOT_FOUND'.\n var o = i.status, s = function(t) {\n // lookup by string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var e = xt[t];\n if (void 0 !== e) return Mt(e);\n }(o), u = i.message;\n void 0 === s && (s = h.INTERNAL, u = \"Unknown error status: \" + o + \" with message \" + i.message), \n // Mark closed so no further events are propagated\n l = !0, p.ZE(new c(s, u)), a.close();\n } else me(\"Connection\", \"WebChannel received:\", n), p.tI(n);\n }\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 p.XE();\n }), 0), p;\n }, \n // visible for testing\n t.prototype.iI = function(t) {\n var e = yo[t];\n return this.eI + \"/v1/projects/\" + this.ci.projectId + \"/databases/\" + this.ci.database + \"/documents:\" + e;\n }, t;\n}();\n\n/**\n * @license\n * Copyright 2019 Google Inc.\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 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// Implements the Platform API for browsers and some browser-like environments\n// (including ReactNative).\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 go(t) {\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(t, e) {\n t.INTERNAL.registerComponent(new o.Component(\"firestore\", (function(t) {\n return function(t, e) {\n return new Mi(t, e, new Li);\n }(t.getProvider(\"app\").getImmediate(), t.getProvider(\"auth-internal\"));\n }), \"PUBLIC\" /* PUBLIC */).setServiceProps(Object.assign({}, co)));\n }(t), t.registerVersion(\"@firebase/firestore\", \"1.14.2\")\n /**\n * @license\n * Copyright 2017 Google Inc.\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 * This code needs to run before Firestore is used. This can be achieved in\n * several ways:\n * 1) Through the JSCompiler compiling this code and then (automatically)\n * executing it before exporting the Firestore symbols.\n * 2) Through importing this module first in a Firestore main module\n */;\n}\n\npe.fn(new (/** @class */ function() {\n function t() {\n this.Tc = \"undefined\" != typeof atob;\n }\n return Object.defineProperty(t.prototype, \"document\", {\n get: function() {\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 enumerable: !0,\n configurable: !0\n }), Object.defineProperty(t.prototype, \"window\", {\n get: function() {\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 enumerable: !0,\n configurable: !0\n }), t.prototype.NT = function(t) {\n return Promise.resolve(new mo(t));\n }, t.prototype.yT = function() {\n return lo.ho() ? new lo : new fo;\n }, t.prototype.vT = function(t) {\n return new fe(t, {\n di: !0\n });\n }, t.prototype.Tn = function(t) {\n return JSON.stringify(t);\n }, t.prototype.atob = function(t) {\n return atob(t);\n }, t.prototype.btoa = function(t) {\n return btoa(t);\n }, t;\n}())), go(n), exports.__PRIVATE_registerFirestore = go;\n//# sourceMappingURL=index.cjs.js.map\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar g,goog=goog||{},k=commonjsGlobal;function m(a){return \"string\"==typeof a}function aa(a){return \"number\"==typeof a}function n(a,b){a=a.split(\".\");b=b||k;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b}function ba(){}\nfunction p(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return \"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return \"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return \"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return \"function\"}else return \"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return \"object\";return b}function q(a){return \"array\"==p(a)}function ca(a){var b=p(a);return \"array\"==b||\"object\"==b&&\"number\"==typeof a.length}function r(a){var b=typeof a;return \"object\"==b&&null!=a||\"function\"==b}var t=\"closure_uid_\"+(1E9*Math.random()>>>0),da=0;function ea(a,b,c){return a.call.apply(a.bind,arguments)}\nfunction fa(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}}function u(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?u=ea:u=fa;return u.apply(null,arguments)}\nfunction v(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}}var w=Date.now||function(){return +new Date};function x(a,b){function c(){}c.prototype=b.prototype;a.N=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.yb=function(d,e,f){for(var h=Array(arguments.length-2),l=2;l<arguments.length;l++)h[l-2]=arguments[l];return b.prototype[e].apply(d,h)};}function y(){this.j=this.j;this.i=this.i;}var ha=0;y.prototype.j=!1;y.prototype.la=function(){if(!this.j&&(this.j=!0,this.G(),0!=ha)){var a=this[t]||(this[t]=++da);}};y.prototype.G=function(){if(this.i)for(;this.i.length;)this.i.shift()();};var ja=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(m(a))return m(b)&&1==b.length?a.indexOf(b,0):-1;for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return -1},la=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c);}:function(a,b,c){for(var d=a.length,e=m(a)?a.split(\"\"):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a);};\nfunction ma(a){a:{var b=na;for(var c=a.length,d=m(a)?a.split(\"\"):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a)){b=e;break a}b=-1;}return 0>b?null:m(a)?a.charAt(b):a[b]}function oa(a){return Array.prototype.concat.apply([],arguments)}function pa(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return []}function qa(a){return /^[\\s\\xa0]*$/.test(a)}var ra=String.prototype.trim?function(a){return a.trim()}:function(a){return /^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};function z(a,b){return -1!=a.indexOf(b)}function sa(a,b){return a<b?-1:a>b?1:0}var A;a:{var ta=k.navigator;if(ta){var ua=ta.userAgent;if(ua){A=ua;break a}}A=\"\";}function va(a,b,c){for(var d in a)b.call(c,a[d],d,a);}function wa(a){var b={},c;for(c in a)b[c]=a[c];return b}var xa=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");function ya(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<xa.length;f++)c=xa[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c]);}}function za(a){za[\" \"](a);return a}za[\" \"]=ba;function Aa(a,b){var c=Ba;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)}var Ca=z(A,\"Opera\"),B=z(A,\"Trident\")||z(A,\"MSIE\"),Da=z(A,\"Edge\"),Ea=Da||B,Fa=z(A,\"Gecko\")&&!(z(A.toLowerCase(),\"webkit\")&&!z(A,\"Edge\"))&&!(z(A,\"Trident\")||z(A,\"MSIE\"))&&!z(A,\"Edge\"),Ga=z(A.toLowerCase(),\"webkit\")&&!z(A,\"Edge\");function Ha(){var a=k.document;return a?a.documentMode:void 0}var Ia;\na:{var Ja=\"\",Ka=function(){var a=A;if(Fa)return /rv:([^\\);]+)(\\)|;)/.exec(a);if(Da)return /Edge\\/([\\d\\.]+)/.exec(a);if(B)return /\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(Ga)return /WebKit\\/(\\S+)/.exec(a);if(Ca)return /(?:Version)[ \\/]?(\\S+)/.exec(a)}();Ka&&(Ja=Ka?Ka[1]:\"\");if(B){var La=Ha();if(null!=La&&La>parseFloat(Ja)){Ia=String(La);break a}}Ia=Ja;}var Ba={};\nfunction Ma(a){return Aa(a,function(){for(var b=0,c=ra(String(Ia)).split(\".\"),d=ra(String(a)).split(\".\"),e=Math.max(c.length,d.length),f=0;0==b&&f<e;f++){var h=c[f]||\"\",l=d[f]||\"\";do{h=/(\\d*)(\\D*)(.*)/.exec(h)||[\"\",\"\",\"\",\"\"];l=/(\\d*)(\\D*)(.*)/.exec(l)||[\"\",\"\",\"\",\"\"];if(0==h[0].length&&0==l[0].length)break;b=sa(0==h[1].length?0:parseInt(h[1],10),0==l[1].length?0:parseInt(l[1],10))||sa(0==h[2].length,0==l[2].length)||sa(h[2],l[2]);h=h[3];l=l[3];}while(0==b)}return 0<=b})}var Na;var Oa=k.document;\nNa=Oa&&B?Ha()||(\"CSS1Compat\"==Oa.compatMode?parseInt(Ia,10):5):void 0;var Pa=!B||9<=Number(Na),Qa=B&&!Ma(\"9\"),Ra=function(){if(!k.addEventListener||!Object.defineProperty)return !1;var a=!1,b=Object.defineProperty({},\"passive\",{get:function(){a=!0;}});try{k.addEventListener(\"test\",ba,b),k.removeEventListener(\"test\",ba,b);}catch(c){}return a}();function C(a,b){this.type=a;this.a=this.target=b;this.Ia=!0;}C.prototype.b=function(){this.Ia=!1;};function D(a,b){C.call(this,a?a.type:\"\");this.relatedTarget=this.a=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key=\"\";this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.pointerId=0;this.pointerType=\"\";this.c=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.a=b;if(b=a.relatedTarget){if(Fa){a:{try{za(b.nodeName);var e=!0;break a}catch(f){}e=!1;}e||(b=null);}}else \"mouseover\"==\nc?b=a.fromElement:\"mouseout\"==c&&(b=a.toElement);this.relatedTarget=b;d?(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.key=a.key||\"\";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=\na.metaKey;this.pointerId=a.pointerId||0;this.pointerType=m(a.pointerType)?a.pointerType:Sa[a.pointerType]||\"\";this.c=a;a.defaultPrevented&&this.b();}}x(D,C);var Sa={2:\"touch\",3:\"pen\",4:\"mouse\"};D.prototype.b=function(){D.N.b.call(this);var a=this.c;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,Qa)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1;}catch(b){}};var F=\"closure_listenable_\"+(1E6*Math.random()|0),Ta=0;function Ua(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.da=e;this.key=++Ta;this.X=this.Z=!1;}function Va(a){a.X=!0;a.listener=null;a.proxy=null;a.src=null;a.da=null;}function Wa(a){this.src=a;this.a={};this.b=0;}Wa.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.a[f];a||(a=this.a[f]=[],this.b++);var h=Xa(a,b,d,e);-1<h?(b=a[h],c||(b.Z=!1)):(b=new Ua(b,this.src,f,!!d,e),b.Z=c,a.push(b));return b};function Ya(a,b){var c=b.type;if(c in a.a){var d=a.a[c],e=ja(d,b),f;(f=0<=e)&&Array.prototype.splice.call(d,e,1);f&&(Va(b),0==a.a[c].length&&(delete a.a[c],a.b--));}}\nfunction Xa(a,b,c,d){for(var e=0;e<a.length;++e){var f=a[e];if(!f.X&&f.listener==b&&f.capture==!!c&&f.da==d)return e}return -1}var Za=\"closure_lm_\"+(1E6*Math.random()|0),$a={};function bb(a,b,c,d,e){if(d&&d.once)return cb(a,b,c,d,e);if(q(b)){for(var f=0;f<b.length;f++)bb(a,b[f],c,d,e);return null}c=db(c);return a&&a[F]?a.za(b,c,r(d)?!!d.capture:!!d,e):eb(a,b,c,!1,d,e)}\nfunction eb(a,b,c,d,e,f){if(!b)throw Error(\"Invalid event type\");var h=r(e)?!!e.capture:!!e;if(h&&!Pa)return null;var l=fb(a);l||(a[Za]=l=new Wa(a));c=l.add(b,c,d,h,f);if(c.proxy)return c;d=gb();c.proxy=d;d.src=a;d.listener=c;if(a.addEventListener)Ra||(e=h),void 0===e&&(e=!1),a.addEventListener(b.toString(),d,e);else if(a.attachEvent)a.attachEvent(hb(b.toString()),d);else if(a.addListener&&a.removeListener)a.addListener(d);else throw Error(\"addEventListener and attachEvent are unavailable.\");return c}function gb(){var a=ib,b=Pa?function(c){return a.call(b.src,b.listener,c)}:function(c){c=a.call(b.src,b.listener,c);if(!c)return c};return b}function cb(a,b,c,d,e){if(q(b)){for(var f=0;f<b.length;f++)cb(a,b[f],c,d,e);return null}c=db(c);return a&&a[F]?a.Aa(b,c,r(d)?!!d.capture:!!d,e):eb(a,b,c,!0,d,e)}\nfunction jb(a,b,c,d,e){if(q(b))for(var f=0;f<b.length;f++)jb(a,b[f],c,d,e);else (d=r(d)?!!d.capture:!!d,c=db(c),a&&a[F])?(a=a.c,b=String(b).toString(),b in a.a&&(f=a.a[b],c=Xa(f,c,d,e),-1<c&&(Va(f[c]),Array.prototype.splice.call(f,c,1),0==f.length&&(delete a.a[b],a.b--)))):a&&(a=fb(a))&&(b=a.a[b.toString()],a=-1,b&&(a=Xa(b,c,d,e)),(c=-1<a?b[a]:null)&&kb(c));}\nfunction kb(a){if(!aa(a)&&a&&!a.X){var b=a.src;if(b&&b[F])Ya(b.c,a);else {var c=a.type,d=a.proxy;b.removeEventListener?b.removeEventListener(c,d,a.capture):b.detachEvent?b.detachEvent(hb(c),d):b.addListener&&b.removeListener&&b.removeListener(d);(c=fb(b))?(Ya(c,a),0==c.b&&(c.src=null,b[Za]=null)):Va(a);}}}function hb(a){return a in $a?$a[a]:$a[a]=\"on\"+a}function lb(a,b){var c=a.listener,d=a.da||a.src;a.Z&&kb(a);return c.call(d,b)}\nfunction ib(a,b){return a.X?!0:Pa?lb(a,new D(b,this)):(b=new D(b||n(\"window.event\"),this),lb(a,b))}function fb(a){a=a[Za];return a instanceof Wa?a:null}var mb=\"__closure_events_fn_\"+(1E9*Math.random()>>>0);function db(a){if(\"function\"==p(a))return a;a[mb]||(a[mb]=function(b){return a.handleEvent(b)});return a[mb]}function G(){y.call(this);this.c=new Wa(this);this.J=this;this.B=null;}x(G,y);G.prototype[F]=!0;g=G.prototype;g.addEventListener=function(a,b,c,d){bb(this,a,b,c,d);};g.removeEventListener=function(a,b,c,d){jb(this,a,b,c,d);};\ng.dispatchEvent=function(a){var b,c=this.B;if(c)for(b=[];c;c=c.B)b.push(c);c=this.J;var d=a.type||a;if(m(a))a=new C(a,c);else if(a instanceof C)a.target=a.target||c;else {var e=a;a=new C(d,c);ya(a,e);}e=!0;if(b)for(var f=b.length-1;0<=f;f--){var h=a.a=b[f];e=nb(h,d,!0,a)&&e;}h=a.a=c;e=nb(h,d,!0,a)&&e;e=nb(h,d,!1,a)&&e;if(b)for(f=0;f<b.length;f++)h=a.a=b[f],e=nb(h,d,!1,a)&&e;return e};\ng.G=function(){G.N.G.call(this);if(this.c){var a=this.c,c;for(c in a.a){for(var d=a.a[c],e=0;e<d.length;e++)Va(d[e]);delete a.a[c];a.b--;}}this.B=null;};g.za=function(a,b,c,d){return this.c.add(String(a),b,!1,c,d)};g.Aa=function(a,b,c,d){return this.c.add(String(a),b,!0,c,d)};\nfunction nb(a,b,c,d){b=a.c.a[String(b)];if(!b)return !0;b=b.concat();for(var e=!0,f=0;f<b.length;++f){var h=b[f];if(h&&!h.X&&h.capture==c){var l=h.listener,E=h.da||h.src;h.Z&&Ya(a.c,h);e=!1!==l.call(E,d)&&e;}}return e&&0!=d.Ia}var ob=k.JSON.stringify;function pb(a,b){this.c=a;this.f=b;this.b=0;this.a=null;}pb.prototype.get=function(){if(0<this.b){this.b--;var a=this.a;this.a=a.next;a.next=null;}else a=this.c();return a};function qb(){this.b=this.a=null;}var sb=new pb(function(){return new rb},function(a){a.reset();});qb.prototype.add=function(a,b){var c=sb.get();c.set(a,b);this.b?this.b.next=c:this.a=c;this.b=c;};function tb(){var a=ub,b=null;a.a&&(b=a.a,a.a=a.a.next,a.a||(a.b=null),b.next=null);return b}function rb(){this.next=this.b=this.a=null;}rb.prototype.set=function(a,b){this.a=a;this.b=b;this.next=null;};rb.prototype.reset=function(){this.next=this.b=this.a=null;};function vb(a){k.setTimeout(function(){throw a;},0);}function wb(a,b){xb||yb();zb||(xb(),zb=!0);ub.add(a,b);}var xb;function yb(){var a=k.Promise.resolve(void 0);xb=function(){a.then(Ab);};}var zb=!1,ub=new qb;function Ab(){for(var a;a=tb();){try{a.a.call(a.b);}catch(c){vb(c);}var b=sb;b.f(a);100>b.b&&(b.b++,a.next=b.a,b.a=a);}zb=!1;}function Cb(a,b){G.call(this);this.b=a||1;this.a=b||k;this.f=u(this.gb,this);this.g=w();}x(Cb,G);g=Cb.prototype;g.ba=!1;g.L=null;g.gb=function(){if(this.ba){var a=w()-this.g;0<a&&a<.8*this.b?this.L=this.a.setTimeout(this.f,this.b-a):(this.L&&(this.a.clearTimeout(this.L),this.L=null),this.dispatchEvent(\"tick\"),this.ba&&(Db(this),this.start()));}};g.start=function(){this.ba=!0;this.L||(this.L=this.a.setTimeout(this.f,this.b),this.g=w());};function Db(a){a.ba=!1;a.L&&(a.a.clearTimeout(a.L),a.L=null);}\ng.G=function(){Cb.N.G.call(this);Db(this);delete this.a;};function Eb(a,b,c){if(\"function\"==p(a))c&&(a=u(a,c));else if(a&&\"function\"==typeof a.handleEvent)a=u(a.handleEvent,a);else throw Error(\"Invalid listener argument\");return 2147483647<Number(b)?-1:k.setTimeout(a,b||0)}function Fb(a,b,c){y.call(this);this.f=null!=c?u(a,c):a;this.c=b;this.b=u(this.$a,this);this.a=[];}x(Fb,y);g=Fb.prototype;g.ea=!1;g.U=null;g.Ta=function(a){this.a=arguments;this.U?this.ea=!0:Gb(this);};g.G=function(){Fb.N.G.call(this);this.U&&(k.clearTimeout(this.U),this.U=null,this.ea=!1,this.a=[]);};g.$a=function(){this.U=null;this.ea&&(this.ea=!1,Gb(this));};function Gb(a){a.U=Eb(a.b,a.c);a.f.apply(null,a.a);}function H(a){y.call(this);this.b=a;this.a={};}x(H,y);var Hb=[];function Ib(a,b,c,d){q(c)||(c&&(Hb[0]=c.toString()),c=Hb);for(var e=0;e<c.length;e++){var f=bb(b,c[e],d||a.handleEvent,!1,a.b||a);if(!f)break;a.a[f.key]=f;}}function Jb(a){va(a.a,function(b,c){this.a.hasOwnProperty(c)&&kb(b);},a);a.a={};}H.prototype.G=function(){H.N.G.call(this);Jb(this);};H.prototype.handleEvent=function(){throw Error(\"EventHandler.handleEvent not implemented\");};function Kb(){}var I=new G;function Lb(a){C.call(this,\"serverreachability\",a);}x(Lb,C);function J(a){I.dispatchEvent(new Lb(I,a));}function Mb(a){C.call(this,\"statevent\",a);}x(Mb,C);function K(a){I.dispatchEvent(new Mb(I,a));}function Nb(a){C.call(this,\"timingevent\",a);}x(Nb,C);function Ob(a,b){if(\"function\"!=p(a))throw Error(\"Fn must not be null and must be a function\");return k.setTimeout(function(){a();},b)}var Pb={NO_ERROR:0,hb:1,ob:2,nb:3,kb:4,mb:5,pb:6,La:7,TIMEOUT:8,sb:9};var Qb={jb:\"complete\",wb:\"success\",Ma:\"error\",La:\"abort\",ub:\"ready\",vb:\"readystatechange\",TIMEOUT:\"timeout\",qb:\"incrementaldata\",tb:\"progress\",lb:\"downloadprogress\",xb:\"uploadprogress\"};function Rb(){}Rb.prototype.a=null;function Sb(a){var b;(b=a.a)||(b=a.a={});return b}function Tb(){}var L={OPEN:\"a\",ib:\"b\",Ma:\"c\",rb:\"d\"};function Ub(){C.call(this,\"d\");}x(Ub,C);function Vb(){C.call(this,\"c\");}x(Vb,C);var Wb;function Xb(){}x(Xb,Rb);Wb=new Xb;function M(a,b,c){this.g=a;this.W=b;this.V=c||1;this.I=new H(this);this.O=Yb;a=Ea?125:void 0;this.P=new Cb(a);this.h=null;this.b=!1;this.l=this.D=this.f=this.F=this.v=this.R=this.i=null;this.j=[];this.a=null;this.A=0;this.c=this.w=null;this.o=-1;this.m=!1;this.J=0;this.B=null;this.s=this.S=this.H=!1;}var Yb=45E3,Zb={},$b={};g=M.prototype;g.setTimeout=function(a){this.O=a;};function ac(a,b,c){a.F=1;a.f=bc(N(b));a.l=c;a.H=!0;cc(a,null);}function dc(a,b,c,d){a.F=1;a.f=bc(N(b));a.l=null;a.H=c;cc(a,d);}\nfunction cc(a,b){a.v=w();ec(a);a.D=N(a.f);fc(a.D,\"t\",a.V);a.A=0;a.a=a.g.$(a.g.Y()?b:null);0<a.J&&(a.B=new Fb(u(a.Ja,a,a.a),a.J));Ib(a.I,a.a,\"readystatechange\",a.cb);b=a.h?wa(a.h):{};a.l?(a.w||(a.w=\"POST\"),b[\"Content-Type\"]=\"application/x-www-form-urlencoded\",a.a.ca(a.D,a.w,a.l,b)):(a.w=\"GET\",a.a.ca(a.D,a.w,null,b));J(1);}g.cb=function(a){a=a.target;var b=this.B;b&&3==O(a)?b.Ta():this.Ja(a);};\ng.Ja=function(a){try{if(a==this.a)a:{var b=O(this.a),c=this.a.ya(),d=this.a.T();if(!(3>b||3==b&&!Ea&&!this.a.aa())){this.m||4!=b||7==c||(8==c||0>=d?J(3):J(2));gc(this);var e=this.a.T();this.o=e;var f=this.a.aa();if(this.b=200==e){if(this.S&&!this.s){b:{if(this.a){var h=hc(this.a,\"X-HTTP-Initial-Response\");if(h&&!qa(h)){var l=h;break b}}l=null;}if(l)this.s=!0,ic(this,l);else {this.b=!1;this.c=3;K(12);P(this);jc(this);break a}}this.H?(kc(this,b,f),Ea&&this.b&&3==b&&(Ib(this.I,this.P,\"tick\",this.bb),this.P.start())):\nic(this,f);4==b&&P(this);this.b&&!this.m&&(4==b?this.g.na(this):(this.b=!1,ec(this)));}else 400==e&&0<f.indexOf(\"Unknown SID\")?(this.c=3,K(12)):(this.c=0,K(13)),P(this),jc(this);}}}catch(E){}finally{}};function kc(a,b,c){for(var d=!0;!a.m&&a.A<c.length;){var e=lc(a,c);if(e==$b){4==b&&(a.c=4,K(14),d=!1);break}else if(e==Zb){a.c=4;K(15);d=!1;break}else ic(a,e);}4==b&&0==c.length&&(a.c=1,K(16),d=!1);a.b=a.b&&d;d||(P(a),jc(a));}\ng.bb=function(){if(this.a){var a=O(this.a),b=this.a.aa();this.A<b.length&&(gc(this),kc(this,a,b),this.b&&4!=a&&ec(this));}};function lc(a,b){var c=a.A,d=b.indexOf(\"\\n\",c);if(-1==d)return $b;c=Number(b.substring(c,d));if(isNaN(c))return Zb;d+=1;if(d+c>b.length)return $b;b=b.substr(d,c);a.A=d+c;return b}g.cancel=function(){this.m=!0;P(this);};function ec(a){a.R=w()+a.O;mc(a,a.O);}function mc(a,b){if(null!=a.i)throw Error(\"WatchDog timer not null\");a.i=Ob(u(a.ab,a),b);}\nfunction gc(a){a.i&&(k.clearTimeout(a.i),a.i=null);}g.ab=function(){this.i=null;var a=w();0<=a-this.R?(2!=this.F&&(J(3),K(17)),P(this),this.c=2,jc(this)):mc(this,this.R-a);};function jc(a){a.g.Ca()||a.m||a.g.na(a);}function P(a){gc(a);var b=a.B;b&&\"function\"==typeof b.la&&b.la();a.B=null;Db(a.P);Jb(a.I);a.a&&(b=a.a,a.a=null,b.abort(),b.la());}function ic(a,b){try{a.g.Fa(a,b),J(4);}catch(c){}}function nc(a){if(a.C&&\"function\"==typeof a.C)return a.C();if(m(a))return a.split(\"\");if(ca(a)){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}b=[];c=0;for(d in a)b[c++]=a[d];return b}\nfunction oc(a,b){if(a.forEach&&\"function\"==typeof a.forEach)a.forEach(b,void 0);else if(ca(a)||m(a))la(a,b,void 0);else {if(a.K&&\"function\"==typeof a.K)var c=a.K();else if(a.C&&\"function\"==typeof a.C)c=void 0;else if(ca(a)||m(a)){c=[];for(var d=a.length,e=0;e<d;e++)c.push(e);}else for(e in c=[],d=0,a)c[d++]=e;d=nc(a);e=d.length;for(var f=0;f<e;f++)b.call(void 0,d[f],c&&c[f],a);}}function Q(a,b){this.b={};this.a=[];this.c=0;var c=arguments.length;if(1<c){if(c%2)throw Error(\"Uneven number of arguments\");for(var d=0;d<c;d+=2)this.set(arguments[d],arguments[d+1]);}else if(a)if(a instanceof Q)for(c=a.K(),d=0;d<c.length;d++)this.set(c[d],a.get(c[d]));else for(d in a)this.set(d,a[d]);}g=Q.prototype;g.C=function(){pc(this);for(var a=[],b=0;b<this.a.length;b++)a.push(this.b[this.a[b]]);return a};g.K=function(){pc(this);return this.a.concat()};\nfunction qc(a){a.b={};a.a.length=0;a.c=0;}function rc(a,b){R(a.b,b)&&(delete a.b[b],a.c--,a.a.length>2*a.c&&pc(a));}function pc(a){if(a.c!=a.a.length){for(var b=0,c=0;b<a.a.length;){var d=a.a[b];R(a.b,d)&&(a.a[c++]=d);b++;}a.a.length=c;}if(a.c!=a.a.length){var e={};for(c=b=0;b<a.a.length;)d=a.a[b],R(e,d)||(a.a[c++]=d,e[d]=1),b++;a.a.length=c;}}g.get=function(a,b){return R(this.b,a)?this.b[a]:b};g.set=function(a,b){R(this.b,a)||(this.c++,this.a.push(a));this.b[a]=b;};\ng.forEach=function(a,b){for(var c=this.K(),d=0;d<c.length;d++){var e=c[d],f=this.get(e);a.call(b,f,e,this);}};function R(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var sc=/^(?:([^:/?#.]+):)?(?:\\/\\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\\?([^#]*))?(?:#([\\s\\S]*))?$/;function tc(a,b){if(a){a=a.split(\"&\");for(var c=0;c<a.length;c++){var d=a[c].indexOf(\"=\"),e=null;if(0<=d){var f=a[c].substring(0,d);e=a[c].substring(d+1);}else f=a[c];b(f,e?decodeURIComponent(e.replace(/\\+/g,\" \")):\"\");}}}function S(a,b){this.b=this.j=this.f=\"\";this.i=null;this.g=this.a=\"\";this.h=!1;var c;a instanceof S?(this.h=void 0!==b?b:a.h,uc(this,a.f),this.j=a.j,vc(this,a.b),wc(this,a.i),this.a=a.a,xc(this,yc(a.c)),this.g=a.g):a&&(c=String(a).match(sc))?(this.h=!!b,uc(this,c[1]||\"\",!0),this.j=zc(c[2]||\"\"),vc(this,c[3]||\"\",!0),wc(this,c[4]),this.a=zc(c[5]||\"\",!0),xc(this,c[6]||\"\",!0),this.g=zc(c[7]||\"\")):(this.h=!!b,this.c=new Ac(null,this.h));}\nS.prototype.toString=function(){var a=[],b=this.f;b&&a.push(Bc(b,Cc,!0),\":\");var c=this.b;if(c||\"file\"==b)a.push(\"//\"),(b=this.j)&&a.push(Bc(b,Cc,!0),\"@\"),a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),c=this.i,null!=c&&a.push(\":\",String(c));if(c=this.a)this.b&&\"/\"!=c.charAt(0)&&a.push(\"/\"),a.push(Bc(c,\"/\"==c.charAt(0)?Dc:Ec,!0));(c=this.c.toString())&&a.push(\"?\",c);(c=this.g)&&a.push(\"#\",Bc(c,Fc));return a.join(\"\")};\nS.prototype.resolve=function(a){var b=N(this),c=!!a.f;c?uc(b,a.f):c=!!a.j;c?b.j=a.j:c=!!a.b;c?vc(b,a.b):c=null!=a.i;var d=a.a;if(c)wc(b,a.i);else if(c=!!a.a){if(\"/\"!=d.charAt(0))if(this.b&&!this.a)d=\"/\"+d;else {var e=b.a.lastIndexOf(\"/\");-1!=e&&(d=b.a.substr(0,e+1)+d);}e=d;if(\"..\"==e||\".\"==e)d=\"\";else if(z(e,\"./\")||z(e,\"/.\")){d=0==e.lastIndexOf(\"/\",0);e=e.split(\"/\");for(var f=[],h=0;h<e.length;){var l=e[h++];\".\"==l?d&&h==e.length&&f.push(\"\"):\"..\"==l?((1<f.length||1==f.length&&\"\"!=f[0])&&f.pop(),d&&\nh==e.length&&f.push(\"\")):(f.push(l),d=!0);}d=f.join(\"/\");}else d=e;}c?b.a=d:c=\"\"!==a.c.toString();c?xc(b,yc(a.c)):c=!!a.g;c&&(b.g=a.g);return b};function N(a){return new S(a)}function uc(a,b,c){a.f=c?zc(b,!0):b;a.f&&(a.f=a.f.replace(/:$/,\"\"));}function vc(a,b,c){a.b=c?zc(b,!0):b;}function wc(a,b){if(b){b=Number(b);if(isNaN(b)||0>b)throw Error(\"Bad port number \"+b);a.i=b;}else a.i=null;}function xc(a,b,c){b instanceof Ac?(a.c=b,Gc(a.c,a.h)):(c||(b=Bc(b,Hc)),a.c=new Ac(b,a.h));}\nfunction T(a,b,c){a.c.set(b,c);}function fc(a,b,c){q(c)||(c=[String(c)]);Ic(a.c,b,c);}function bc(a){T(a,\"zx\",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^w()).toString(36));return a}function Jc(a){return a instanceof S?N(a):new S(a,void 0)}function Kc(a,b,c,d){var e=new S(null,void 0);a&&uc(e,a);b&&vc(e,b);c&&wc(e,c);d&&(e.a=d);return e}function zc(a,b){return a?b?decodeURI(a.replace(/%25/g,\"%2525\")):decodeURIComponent(a):\"\"}\nfunction Bc(a,b,c){return m(a)?(a=encodeURI(a).replace(b,Lc),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),a):null}function Lc(a){a=a.charCodeAt(0);return \"%\"+(a>>4&15).toString(16)+(a&15).toString(16)}var Cc=/[#\\/\\?@]/g,Ec=/[#\\?:]/g,Dc=/[#\\?]/g,Hc=/[#\\?@]/g,Fc=/#/g;function Ac(a,b){this.b=this.a=null;this.c=a||null;this.f=!!b;}function U(a){a.a||(a.a=new Q,a.b=0,a.c&&tc(a.c,function(b,c){a.add(decodeURIComponent(b.replace(/\\+/g,\" \")),c);}));}g=Ac.prototype;\ng.add=function(a,b){U(this);this.c=null;a=V(this,a);var c=this.a.get(a);c||this.a.set(a,c=[]);c.push(b);this.b+=1;return this};function Mc(a,b){U(a);b=V(a,b);R(a.a.b,b)&&(a.c=null,a.b-=a.a.get(b).length,rc(a.a,b));}function Nc(a,b){U(a);b=V(a,b);return R(a.a.b,b)}g.forEach=function(a,b){U(this);this.a.forEach(function(c,d){la(c,function(e){a.call(b,e,d,this);},this);},this);};\ng.K=function(){U(this);for(var a=this.a.C(),b=this.a.K(),c=[],d=0;d<b.length;d++)for(var e=a[d],f=0;f<e.length;f++)c.push(b[d]);return c};g.C=function(a){U(this);var b=[];if(m(a))Nc(this,a)&&(b=oa(b,this.a.get(V(this,a))));else {a=this.a.C();for(var c=0;c<a.length;c++)b=oa(b,a[c]);}return b};g.set=function(a,b){U(this);this.c=null;a=V(this,a);Nc(this,a)&&(this.b-=this.a.get(a).length);this.a.set(a,[b]);this.b+=1;return this};\ng.get=function(a,b){if(!a)return b;a=this.C(a);return 0<a.length?String(a[0]):b};function Ic(a,b,c){Mc(a,b);0<c.length&&(a.c=null,a.a.set(V(a,b),pa(c)),a.b+=c.length);}g.toString=function(){if(this.c)return this.c;if(!this.a)return \"\";for(var a=[],b=this.a.K(),c=0;c<b.length;c++){var d=b[c],e=encodeURIComponent(String(d));d=this.C(d);for(var f=0;f<d.length;f++){var h=e;\"\"!==d[f]&&(h+=\"=\"+encodeURIComponent(String(d[f])));a.push(h);}}return this.c=a.join(\"&\")};\nfunction yc(a){var b=new Ac;b.c=a.c;a.a&&(b.a=new Q(a.a),b.b=a.b);return b}function V(a,b){b=String(b);a.f&&(b=b.toLowerCase());return b}function Gc(a,b){b&&!a.f&&(U(a),a.c=null,a.a.forEach(function(c,d){var e=d.toLowerCase();d!=e&&(Mc(this,d),Ic(this,e,c));},a));a.f=b;}function Qc(){}function Rc(){}x(Rc,Qc);function Sc(a){this.a=a;this.b=this.h=null;this.g=!1;this.i=null;this.c=-1;this.l=this.f=null;}g=Sc.prototype;g.M=null;function Uc(a){var b=a.a.F.a;if(null!=b)K(4),b?(K(10),Vc(a.a,a,!1)):(K(11),Vc(a.a,a,!0));else {a.b=new M(a,void 0,void 0);a.b.h=a.h;b=a.a;b=Wc(b,b.Y()?a.f:null,a.i);K(4);fc(b,\"TYPE\",\"xmlhttp\");var c=a.a.j,d=a.a.I;c&&d&&T(b,c,d);dc(a.b,b,!1,a.f);}}g.$=function(a){return this.a.$(a)};g.abort=function(){this.b&&(this.b.cancel(),this.b=null);this.c=-1;};g.Ca=function(){return !1};\ng.Fa=function(a,b){this.c=a.o;if(0==this.M){if(!this.a.o&&(a=a.a)){var c=hc(a,\"X-Client-Wire-Protocol\");this.l=c?c:null;this.a.j&&(a=hc(a,\"X-HTTP-Session-Id\"))&&(this.a.I=a);}if(b){try{var d=this.a.ja.a.parse(b);}catch(e){b=this.a;b.m=this.c;W(b,2);return}this.f=d[0];}else b=this.a,b.m=this.c,W(b,2);}else if(1==this.M)if(this.g)K(6);else if(\"11111\"==b){if(K(5),this.g=!0,!B||10<=Number(Na))this.c=200,this.b.cancel(),K(11),Vc(this.a,this,!0);}else K(7),this.g=!1;};\ng.na=function(){this.c=this.b.o;if(this.b.b)0==this.M?(this.M=1,Uc(this)):1==this.M&&(this.g?(K(11),Vc(this.a,this,!0)):(K(10),Vc(this.a,this,!1)));else {0==this.M?K(8):1==this.M&&K(9);var a=this.a;a.m=this.c;W(a,2);}};g.Y=function(){return this.a.Y()};g.ma=function(){return this.a.ma()};function Xc(){this.a=this.b=null;}function Yc(){this.a=new Q;}function Zc(a){var b=typeof a;return \"object\"==b&&a||\"function\"==b?\"o\"+(a[t]||(a[t]=++da)):b.charAt(0)+a}Yc.prototype.add=function(a){this.a.set(Zc(a),a);};Yc.prototype.C=function(){return this.a.C()};function $c(a,b){this.b=a;this.a=b;}function ad(a){this.g=a||bd;k.PerformanceNavigationTiming?(a=k.performance.getEntriesByType(\"navigation\"),a=0<a.length&&(\"hq\"==a[0].nextHopProtocol||\"h2\"==a[0].nextHopProtocol)):a=!!(k.ka&&k.ka.Da&&k.ka.Da()&&k.ka.Da().zb);this.f=a?this.g:1;this.a=null;1<this.f&&(this.a=new Yc);this.b=null;this.c=[];}var bd=10;function cd(a,b){!a.a&&(z(b,\"spdy\")||z(b,\"quic\")||z(b,\"h2\"))&&(a.f=a.g,a.a=new Yc,a.b&&(dd(a,a.b),a.b=null));}function ed(a){return a.b?!0:a.a?a.a.a.c>=a.f:!1}\nfunction fd(a){return a.b?1:a.a?a.a.a.c:0}function gd(a,b){a.b?a=a.b==b:a.a?(b=Zc(b),a=R(a.a.a.b,b)):a=!1;return a}function dd(a,b){a.a?a.a.add(b):a.b=b;}function hd(a,b){if(a.b&&a.b==b)a.b=null;else {var c;if(c=a.a)c=Zc(b),c=R(a.a.a.b,c);c&&rc(a.a.a,Zc(b));}}ad.prototype.cancel=function(){this.c=id(this);this.b?(this.b.cancel(),this.b=null):this.a&&0!=this.a.a.c&&(la(this.a.C(),function(a){a.cancel();}),qc(this.a.a));};\nfunction id(a){if(null!=a.b)return a.c.concat(a.b.j);if(null!=a.a&&0!=a.a.a.c){var b=a.c;la(a.a.C(),function(c){b=b.concat(c.j);});return b}return pa(a.c)}function jd(){}jd.prototype.stringify=function(a){return k.JSON.stringify(a,void 0)};jd.prototype.parse=function(a){return k.JSON.parse(a,void 0)};function kd(){this.a=new jd;}function ld(a,b,c){var d=c||\"\";try{oc(a,function(e,f){var h=e;r(e)&&(h=ob(e));b.push(d+f+\"=\"+encodeURIComponent(h));});}catch(e){throw b.push(d+\"type=\"+encodeURIComponent(\"_badmap\")),e;}}function md(a,b){var c=new Kb;if(k.Image){var d=new Image;d.onload=v(nd,c,d,\"TestLoadImage: loaded\",!0,b);d.onerror=v(nd,c,d,\"TestLoadImage: error\",!1,b);d.onabort=v(nd,c,d,\"TestLoadImage: abort\",!1,b);d.ontimeout=v(nd,c,d,\"TestLoadImage: timeout\",!1,b);k.setTimeout(function(){if(d.ontimeout)d.ontimeout();},1E4);d.src=a;}else b(!1);}function nd(a,b,c,d,e){try{b.onload=null,b.onerror=null,b.onabort=null,b.ontimeout=null,e(d);}catch(f){}}var od=k.JSON.parse;function X(a){G.call(this);this.headers=new Q;this.H=a||null;this.b=!1;this.s=this.a=null;this.A=\"\";this.h=0;this.f=\"\";this.g=this.w=this.l=this.v=!1;this.o=0;this.m=null;this.I=pd;this.D=this.F=!1;}x(X,G);var pd=\"\",qd=/^https?$/i,rd=[\"POST\",\"PUT\"];g=X.prototype;\ng.ca=function(a,b,c,d){if(this.a)throw Error(\"[goog.net.XhrIo] Object is active with another request=\"+this.A+\"; newUri=\"+a);b=b?b.toUpperCase():\"GET\";this.A=a;this.f=\"\";this.h=0;this.v=!1;this.b=!0;this.a=new XMLHttpRequest;this.s=this.H?Sb(this.H):Sb(Wb);this.a.onreadystatechange=u(this.Ea,this);try{this.w=!0,this.a.open(b,String(a),!0),this.w=!1;}catch(f){sd(this,f);return}a=c||\"\";var e=new Q(this.headers);d&&oc(d,function(f,h){e.set(h,f);});d=ma(e.K());c=k.FormData&&a instanceof k.FormData;!(0<=\nja(rd,b))||d||c||e.set(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\");e.forEach(function(f,h){this.a.setRequestHeader(h,f);},this);this.I&&(this.a.responseType=this.I);\"withCredentials\"in this.a&&this.a.withCredentials!==this.F&&(this.a.withCredentials=this.F);try{td(this),0<this.o&&((this.D=ud(this.a))?(this.a.timeout=this.o,this.a.ontimeout=u(this.Ba,this)):this.m=Eb(this.Ba,this.o,this)),this.l=!0,this.a.send(a),this.l=!1;}catch(f){sd(this,f);}};\nfunction ud(a){return B&&Ma(9)&&aa(a.timeout)&&void 0!==a.ontimeout}function na(a){return \"content-type\"==a.toLowerCase()}g.Ba=function(){\"undefined\"!=typeof goog&&this.a&&(this.f=\"Timed out after \"+this.o+\"ms, aborting\",this.h=8,this.dispatchEvent(\"timeout\"),this.abort(8));};function sd(a,b){a.b=!1;a.a&&(a.g=!0,a.a.abort(),a.g=!1);a.f=b;a.h=5;vd(a);wd(a);}function vd(a){a.v||(a.v=!0,a.dispatchEvent(\"complete\"),a.dispatchEvent(\"error\"));}\ng.abort=function(a){this.a&&this.b&&(this.b=!1,this.g=!0,this.a.abort(),this.g=!1,this.h=a||7,this.dispatchEvent(\"complete\"),this.dispatchEvent(\"abort\"),wd(this));};g.G=function(){this.a&&(this.b&&(this.b=!1,this.g=!0,this.a.abort(),this.g=!1),wd(this,!0));X.N.G.call(this);};g.Ea=function(){this.j||(this.w||this.l||this.g?xd(this):this.Za());};g.Za=function(){xd(this);};\nfunction xd(a){if(a.b&&\"undefined\"!=typeof goog&&(!a.s[1]||4!=O(a)||2!=a.T()))if(a.l&&4==O(a))Eb(a.Ea,0,a);else if(a.dispatchEvent(\"readystatechange\"),4==O(a)){a.b=!1;try{var b=a.T();a:switch(b){case 200:case 201:case 202:case 204:case 206:case 304:case 1223:var c=!0;break a;default:c=!1;}var d;if(!(d=c)){var e;if(e=0===b){var f=String(a.A).match(sc)[1]||null;if(!f&&k.self&&k.self.location){var h=k.self.location.protocol;f=h.substr(0,h.length-1);}e=!qd.test(f?f.toLowerCase():\"\");}d=e;}if(d)a.dispatchEvent(\"complete\"),\na.dispatchEvent(\"success\");else {a.h=6;try{var l=2<O(a)?a.a.statusText:\"\";}catch(E){l=\"\";}a.f=l+\" [\"+a.T()+\"]\";vd(a);}}finally{wd(a);}}}function wd(a,b){if(a.a){td(a);var c=a.a,d=a.s[0]?ba:null;a.a=null;a.s=null;b||a.dispatchEvent(\"ready\");try{c.onreadystatechange=d;}catch(e){}}}function td(a){a.a&&a.D&&(a.a.ontimeout=null);a.m&&(k.clearTimeout(a.m),a.m=null);}function O(a){return a.a?a.a.readyState:0}g.T=function(){try{return 2<O(this)?this.a.status:-1}catch(a){return -1}};\ng.aa=function(){try{return this.a?this.a.responseText:\"\"}catch(a){return \"\"}};g.Ua=function(a){if(this.a){var b=this.a.responseText;a&&0==b.indexOf(a)&&(b=b.substring(a.length));return od(b)}};function hc(a,b){return a.a?a.a.getResponseHeader(b):null}g.ya=function(){return this.h};g.Xa=function(){return m(this.f)?this.f:String(this.f)};function yd(a){var b=\"\";va(a,function(c,d){b+=d;b+=\":\";b+=c;b+=\"\\r\\n\";});return b}function zd(a,b,c){a:{for(d in c){var d=!1;break a}d=!0;}if(d)return a;c=yd(c);if(m(a)){b=encodeURIComponent(String(b));c=null!=c?\"=\"+encodeURIComponent(String(c)):\"\";if(b+=c){c=a.indexOf(\"#\");0>c&&(c=a.length);d=a.indexOf(\"?\");if(0>d||d>c){d=c;var e=\"\";}else e=a.substring(d+1,c);a=[a.substr(0,d),e,a.substr(c)];c=a[1];a[1]=b?c?c+\"&\"+b:b:c;a=a[0]+(a[1]?\"?\"+a[1]:\"\")+a[2];}return a}T(a,b,c);return a}function Ad(a){this.f=[];this.F=new Xc;this.ga=this.pa=this.B=this.ha=this.a=this.I=this.j=this.V=this.g=this.J=this.i=null;this.Qa=this.P=0;this.Oa=!!n(\"internalChannelParams.failFast\",a);this.ia=this.w=this.s=this.l=this.h=this.c=null;this.oa=!0;this.m=this.ra=this.O=-1;this.S=this.v=this.A=0;this.Na=n(\"internalChannelParams.baseRetryDelayMs\",a)||5E3;this.Ra=n(\"internalChannelParams.retryDelaySeedMs\",a)||1E4;this.Pa=n(\"internalChannelParams.forwardChannelMaxRetries\",a)||2;this.qa=n(\"internalChannelParams.forwardChannelRequestTimeoutMs\",\na)||2E4;this.Ka=a&&a.Ab||void 0;this.D=void 0;this.R=a&&a.supportsCrossDomainXhr||!1;this.H=\"\";this.b=new ad(a&&a.concurrentRequestLimit);this.ja=new kd;this.o=a&&void 0!==a.backgroundChannelTest?a.backgroundChannelTest:!0;(this.W=a&&a.fastHandshake||!1)&&!this.o&&(this.o=!0);a&&a.forceLongPolling&&(this.oa=!1);this.fa=void 0;}g=Ad.prototype;g.wa=8;g.u=1;\nfunction Bd(a){Cd(a);if(3==a.u){var b=a.P++,c=N(a.B);T(c,\"SID\",a.H);T(c,\"RID\",b);T(c,\"TYPE\",\"terminate\");Dd(a,c);b=new M(a,b,void 0);b.F=2;b.f=bc(N(c));c=!1;k.navigator&&k.navigator.sendBeacon&&(c=k.navigator.sendBeacon(b.f.toString(),\"\"));!c&&k.Image&&((new Image).src=b.f,c=!0);c||(b.a=b.g.$(null),b.a.ca(b.f));b.v=w();ec(b);}Ed(a);}\nfunction Cd(a){a.w&&(a.w.abort(),a.w=null);a.a&&(a.a.cancel(),a.a=null);a.l&&(k.clearTimeout(a.l),a.l=null);Fd(a);a.b.cancel();a.h&&(aa(a.h)&&k.clearTimeout(a.h),a.h=null);}function Gd(a,b){a.f.push(new $c(a.Qa++,b));3==a.u&&Hd(a);}g.Ca=function(){return 0==this.u};function Hd(a){ed(a.b)||a.h||(a.h=!0,wb(a.Ha,a),a.A=0);}\nfunction Id(a,b){if(fd(a.b)>=a.b.f-(a.h?1:0))return !1;if(a.h)return a.f=b.j.concat(a.f),!0;if(1==a.u||2==a.u||a.A>=(a.Oa?0:a.Pa))return !1;a.h=Ob(u(a.Ha,a,b),Jd(a,a.A));a.A++;return !0}\ng.Ha=function(a){if(this.h)if(this.h=null,1==this.u){if(!a){this.P=Math.floor(1E5*Math.random());a=this.P++;var b=new M(this,a,void 0),c=this.i;this.J&&(c?(c=wa(c),ya(c,this.J)):c=this.J);null===this.g&&(b.h=c);var d;if(this.W)a:{for(var e=d=0;e<this.f.length;e++){b:{var f=this.f[e];if(\"__data__\"in f.a&&(f=f.a.__data__,m(f))){f=f.length;break b}f=void 0;}if(void 0===f)break;d+=f;if(4096<d){d=e;break a}if(4096===d||e===this.f.length-1){d=e+1;break a}}d=1E3;}else d=1E3;d=Kd(this,b,d);e=N(this.B);T(e,\n\"RID\",a);T(e,\"CVER\",22);this.o&&this.j&&T(e,\"X-HTTP-Session-Id\",this.j);Dd(this,e);this.g&&c&&zd(e,this.g,c);dd(this.b,b);this.W?(T(e,\"$req\",d),T(e,\"SID\",\"null\"),b.S=!0,ac(b,e,null)):ac(b,e,d);this.u=2;}}else 3==this.u&&(a?Ld(this,a):0==this.f.length||ed(this.b)||Ld(this));};\nfunction Ld(a,b){var c;b?c=b.W:c=a.P++;var d=N(a.B);T(d,\"SID\",a.H);T(d,\"RID\",c);T(d,\"AID\",a.O);Dd(a,d);a.g&&a.i&&zd(d,a.g,a.i);c=new M(a,c,a.A+1);null===a.g&&(c.h=a.i);b&&(a.f=b.j.concat(a.f));b=Kd(a,c,1E3);c.setTimeout(Math.round(.5*a.qa)+Math.round(.5*a.qa*Math.random()));dd(a.b,c);ac(c,d,b);}function Dd(a,b){a.c&&oc({},function(c,d){T(b,d,c);});}\nfunction Kd(a,b,c){c=Math.min(a.f.length,c);var d=a.c?u(a.c.Sa,a.c,a):null;a:for(var e=a.f,f=-1;;){var h=[\"count=\"+c];-1==f?0<c?(f=e[0].b,h.push(\"ofs=\"+f)):f=0:h.push(\"ofs=\"+f);for(var l=!0,E=0;E<c;E++){var Bb=e[E].b,Tc=e[E].a;Bb-=f;if(0>Bb)f=Math.max(0,e[E].b-100),l=!1;else try{ld(Tc,h,\"req\"+Bb+\"_\");}catch(Ud){d&&d(Tc);}}if(l){d=h.join(\"&\");break a}}a=a.f.splice(0,c);b.j=a;return d}function Md(a){a.a||a.l||(a.S=1,wb(a.Ga,a),a.v=0);}\nfunction Nd(a){if(a.a||a.l||3<=a.v)return !1;a.S++;a.l=Ob(u(a.Ga,a),Jd(a,a.v));a.v++;return !0}g.Ga=function(){this.l=null;this.a=new M(this,\"rpc\",this.S);null===this.g&&(this.a.h=this.i);this.a.J=0;var a=N(this.pa);T(a,\"RID\",\"rpc\");T(a,\"SID\",this.H);T(a,\"CI\",this.ia?\"0\":\"1\");T(a,\"AID\",this.O);Dd(this,a);T(a,\"TYPE\",\"xmlhttp\");this.g&&this.i&&zd(a,this.g,this.i);this.D&&this.a.setTimeout(this.D);dc(this.a,a,!0,this.ga);};\nfunction Vc(a,b,c){var d=b.l;d&&cd(a.b,d);a.ia=a.oa&&c;a.m=b.c;a.B=Wc(a,null,a.ha);Hd(a);}\ng.Fa=function(a,b){if(0!=this.u&&(this.a==a||gd(this.b,a)))if(this.m=a.o,!a.s&&gd(this.b,a)&&3==this.u){try{var c=this.ja.a.parse(b);}catch(f){c=null;}if(q(c)&&3==c.length){b=c;if(0==b[0])a:{if(!this.l){if(this.a)if(this.a.v+3E3<a.v)Fd(this),this.a.cancel(),this.a=null;else break a;Nd(this);K(18);}}else this.ra=b[1],0<this.ra-this.O&&37500>b[2]&&this.ia&&0==this.v&&!this.s&&(this.s=Ob(u(this.Ya,this),6E3));if(1>=fd(this.b)&&this.fa){try{this.fa();}catch(f){}this.fa=void 0;}}else W(this,11);}else if((a.s||\nthis.a==a)&&Fd(this),!qa(b))for(b=c=this.ja.a.parse(b),c=0;c<b.length;c++){var d=b[c];this.O=d[0];d=d[1];if(2==this.u)if(\"c\"==d[0]){this.H=d[1];this.ga=d[2];var e=d[3];null!=e&&(this.wa=e);d=d[5];null!=d&&aa(d)&&0<d&&(this.D=1.5*d);this.o&&(d=a.a)&&((e=hc(d,\"X-Client-Wire-Protocol\"))&&cd(this.b,e),this.j&&(d=hc(d,\"X-HTTP-Session-Id\")))&&(this.I=d,T(this.B,this.j,d));this.u=3;this.c&&this.c.va();d=a;this.pa=Wc(this,this.Y()?this.ga:null,this.ha);d.s?(hd(this.b,d),(e=this.D)&&d.setTimeout(e),d.i&&(gc(d),\nec(d)),this.a=d):Md(this);0<this.f.length&&Hd(this);}else \"stop\"!=d[0]&&\"close\"!=d[0]||W(this,7);else 3==this.u&&(\"stop\"==d[0]||\"close\"==d[0]?\"stop\"==d[0]?W(this,7):Bd(this):\"noop\"!=d[0]&&this.c&&this.c.ua(d),this.v=0);}};g.Ya=function(){null!=this.s&&(this.s=null,this.a.cancel(),this.a=null,Nd(this),K(19));};function Fd(a){null!=a.s&&(k.clearTimeout(a.s),a.s=null);}\ng.na=function(a){var b=null;if(this.a==a){Fd(this);this.a=null;var c=2;}else if(gd(this.b,a))b=a.j,hd(this.b,a),c=1;else return;this.m=a.o;if(0!=this.u)if(a.b)1==c?(b=w()-a.v,I.dispatchEvent(new Nb(I,a.l?a.l.length:0,b,this.A)),Hd(this)):Md(this);else {var d=a.c;if(3==d||0==d&&0<this.m||!(1==c&&Id(this,a)||2==c&&Nd(this)))switch(b&&0<b.length&&(a=this.b,a.c=a.c.concat(b)),d){case 1:W(this,5);break;case 4:W(this,10);break;case 3:W(this,6);break;default:W(this,2);}}};\nfunction Jd(a,b){var c=a.Na+Math.floor(Math.random()*a.Ra);a.ma()||(c*=2);return c*b}function W(a,b){if(2==b){var c=null;a.c&&(c=null);var d=u(a.eb,a);c||(c=new S(\"//www.google.com/images/cleardot.gif\"),k.location&&\"http\"==k.location.protocol||uc(c,\"https\"),bc(c));md(c.toString(),d);}else K(2);a.u=0;a.c&&a.c.ta(b);Ed(a);Cd(a);}g.eb=function(a){a?K(2):K(1);};function Ed(a){a.u=0;a.m=-1;if(a.c){if(0!=id(a.b).length||0!=a.f.length)a.b.c.length=0,pa(a.f),a.f.length=0;a.c.sa();}}\nfunction Wc(a,b,c){var d=Jc(c);if(\"\"!=d.b)b&&vc(d,b+\".\"+d.b),wc(d,d.i);else {var e=k.location,f;b?f=b+\".\"+e.hostname:f=e.hostname;d=Kc(e.protocol,f,+e.port,c);}a.V&&va(a.V,function(h,l){T(d,l,h);});b=a.j;c=a.I;b&&c&&T(d,b,c);T(d,\"VER\",a.wa);Dd(a,d);return d}g.$=function(a){if(a&&!this.R)throw Error(\"Can't create secondary domain capable XhrIo object.\");a=new X(this.Ka);a.F=this.R;return a};g.ma=function(){return !!this.c&&!0};g.Y=function(){return this.R};function Od(){}g=Od.prototype;g.va=function(){};\ng.ua=function(){};g.ta=function(){};g.sa=function(){};g.Sa=function(){};function Pd(a){for(var b=arguments[0],c=1;c<arguments.length;c++){var d=arguments[c];if(0==d.lastIndexOf(\"/\",0))b=d;else {var e;(e=\"\"==b)||(e=b.length-1,e=0<=e&&b.indexOf(\"/\",e)==e);e?b+=d:b+=\"/\"+d;}}return b}function Qd(){if(B&&!(10<=Number(Na)))throw Error(\"Environmental error: no available transport.\");}Qd.prototype.a=function(a,b){return new Y(a,b)};\nfunction Y(a,b){G.call(this);this.a=new Ad(b);this.g=a;this.m=b&&b.fb?b.fb:Pd(this.g,\"test\");this.b=b&&b.messageUrlParams||null;a=b&&b.messageHeaders||null;b&&b.clientProtocolHeaderRequired&&(a?a[\"X-Client-Protocol\"]=\"webchannel\":a={\"X-Client-Protocol\":\"webchannel\"});this.a.i=a;a=b&&b.initMessageHeaders||null;b&&b.messageContentType&&(a?a[\"X-WebChannel-Content-Type\"]=b.messageContentType:a={\"X-WebChannel-Content-Type\":b.messageContentType});b&&b.xa&&(a?a[\"X-WebChannel-Client-Profile\"]=b.xa:a={\"X-WebChannel-Client-Profile\":b.xa});\nthis.a.J=a;(a=b&&b.httpHeadersOverwriteParam)&&!qa(a)&&(this.a.g=a);this.l=b&&b.supportsCrossDomainXhr||!1;this.h=b&&b.sendRawJson||!1;(b=b&&b.httpSessionIdParam)&&!qa(b)&&(this.a.j=b,a=this.b,null!==a&&b in a&&(a=this.b,b in a&&delete a[b]));this.f=new Z(this);}x(Y,G);g=Y.prototype;g.addEventListener=function(a,b,c,d){Y.N.addEventListener.call(this,a,b,c,d);};g.removeEventListener=function(a,b,c,d){Y.N.removeEventListener.call(this,a,b,c,d);};\ng.Va=function(){this.a.c=this.f;this.l&&(this.a.R=!0);var a=this.a,b=this.m,c=this.g,d=this.b||void 0;K(0);a.ha=c;a.V=d||{};a.o&&(a.F.b=[],a.F.a=!1);a.w=new Sc(a);null===a.g&&(a.w.h=a.i);c=b;a.g&&a.i&&(c=zd(b,a.g,a.i));a=a.w;a.i=c;b=Wc(a.a,null,a.i);K(3);c=a.a.F.b;null!=c?(a.f=c[0],a.M=1,Uc(a)):(fc(b,\"MODE\",\"init\"),!a.a.o&&a.a.j&&fc(b,\"X-HTTP-Session-Id\",a.a.j),a.b=new M(a,void 0,void 0),a.b.h=a.h,dc(a.b,b,!1,null),a.M=0);};g.close=function(){Bd(this.a);};\ng.Wa=function(a){if(m(a)){var b={};b.__data__=a;Gd(this.a,b);}else this.h?(b={},b.__data__=ob(a),Gd(this.a,b)):Gd(this.a,a);};g.G=function(){this.a.c=null;delete this.f;Bd(this.a);delete this.a;Y.N.G.call(this);};function Rd(a){Ub.call(this);var b=a.__sm__;if(b){a:{for(var c in b){a=c;break a}a=void 0;}(this.c=a)?(a=this.c,this.data=null!==b&&a in b?b[a]:void 0):this.data=b;}else this.data=a;}x(Rd,Ub);function Sd(){Vb.call(this);this.status=1;}x(Sd,Vb);function Z(a){this.a=a;}x(Z,Od);Z.prototype.va=function(){this.a.dispatchEvent(\"a\");};\nZ.prototype.ua=function(a){this.a.dispatchEvent(new Rd(a));};Z.prototype.ta=function(a){this.a.dispatchEvent(new Sd(a));};Z.prototype.sa=function(){this.a.dispatchEvent(\"b\");};var Td=v(function(a,b){function c(){}c.prototype=a.prototype;var d=new c;a.apply(d,Array.prototype.slice.call(arguments,1));return d},Qd);/*\n\n Copyright 2017 Google Inc.\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*/\nQd.prototype.createWebChannel=Qd.prototype.a;Y.prototype.send=Y.prototype.Wa;Y.prototype.open=Y.prototype.Va;Y.prototype.close=Y.prototype.close;Pb.NO_ERROR=0;Pb.TIMEOUT=8;Pb.HTTP_ERROR=6;Qb.COMPLETE=\"complete\";Tb.EventType=L;L.OPEN=\"a\";L.CLOSE=\"b\";L.ERROR=\"c\";L.MESSAGE=\"d\";G.prototype.listen=G.prototype.za;X.prototype.listenOnce=X.prototype.Aa;X.prototype.getLastError=X.prototype.Xa;X.prototype.getLastErrorCode=X.prototype.ya;X.prototype.getStatus=X.prototype.T;X.prototype.getResponseJson=X.prototype.Ua;\nX.prototype.getResponseText=X.prototype.aa;X.prototype.send=X.prototype.ca;var tmp={createWebChannelTransport:Td,ErrorCode:Pb,EventType:Qb,WebChannel:Tb,XhrIo:X};\nvar tmp_1 = tmp.createWebChannelTransport;\nvar tmp_2 = tmp.ErrorCode;\nvar tmp_3 = tmp.EventType;\nvar tmp_4 = tmp.WebChannel;\nvar tmp_5 = tmp.XhrIo;\n\nexport default tmp;\nexport { tmp_2 as ErrorCode, tmp_3 as EventType, tmp_4 as WebChannel, tmp_5 as XhrIo, tmp_1 as createWebChannelTransport };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\nvar tslib = require('tslib');\nvar component = require('@firebase/component');\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 tslib.__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 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 (!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 e_1 = _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 tslib.__awaiter(this, void 0, void 0, function () {\r\n return tslib.__generator(this, function (_a) {\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 try {\r\n return [2 /*return*/, this.messaging.getToken()];\r\n }\r\n catch (e) {\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 }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n ContextProvider.prototype.getContext = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var authToken, instanceIdToken;\r\n return tslib.__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 Inc.\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 (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 Inc.\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 return new Promise(function (_, reject) {\r\n setTimeout(function () {\r\n reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));\r\n }, millis);\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.\r\n * @param app_ The FirebaseApp to use.\r\n * @param region_ The region to call functions in.\r\n */\r\n function Service(app_, authProvider, messagingProvider, region_) {\r\n var _this = this;\r\n if (region_ === void 0) { region_ = 'us-central1'; }\r\n this.app_ = app_;\r\n this.region_ = region_;\r\n this.serializer = new Serializer();\r\n this.emulatorOrigin = null;\r\n this.INTERNAL = {\r\n delete: function () {\r\n return _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 }\r\n Object.defineProperty(Service.prototype, \"app\", {\r\n get: function () {\r\n return this.app_;\r\n },\r\n enumerable: true,\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 var region = this.region_;\r\n if (this.emulatorOrigin !== null) {\r\n var origin_1 = this.emulatorOrigin;\r\n return origin_1 + \"/\" + projectId + \"/\" + region + \"/\" + name;\r\n }\r\n return \"https://\" + region + \"-\" + projectId + \".cloudfunctions.net/\" + name;\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 * @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 tslib.__awaiter(this, void 0, void 0, function () {\r\n var response, e_1, json, e_2;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n headers.append('Content-Type', 'application/json');\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers: headers\r\n })];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _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 4:\r\n json = null;\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, response.json()];\r\n case 6:\r\n json = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 7:\r\n e_2 = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 8: return [2 /*return*/, {\r\n status: response.status,\r\n json: json\r\n }];\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 tslib.__awaiter(this, void 0, void 0, function () {\r\n var url, body, headers, context, timeout, response, error, responseData, decodedData;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.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 = new Headers();\r\n return [4 /*yield*/, this.contextProvider.getContext()];\r\n case 1:\r\n context = _a.sent();\r\n if (context.authToken) {\r\n headers.append('Authorization', 'Bearer ' + context.authToken);\r\n }\r\n if (context.instanceIdToken) {\r\n headers.append('Firebase-Instance-ID-Token', context.instanceIdToken);\r\n }\r\n timeout = options.timeout || 70000;\r\n return [4 /*yield*/, Promise.race([\r\n this.postJSON(url, body, headers),\r\n failAfter(timeout),\r\n this.cancelAllRequests\r\n ])];\r\n case 2:\r\n response = _a.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}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 factory(container, region) {\r\n // Dependencies\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-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, region);\r\n}\r\nfunction registerFunctions(instance) {\r\n var namespaceExports = {\r\n // no-inline\r\n Functions: Service\r\n };\r\n instance.INTERNAL.registerComponent(new component.Component(FUNCTIONS_TYPE, factory, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(namespaceExports)\r\n .setMultipleInstances(true));\r\n}\n\nvar name = \"@firebase/functions\";\nvar version = \"0.4.42\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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);\r\nfirebase.registerVersion(name, version);\n//# sourceMappingURL=index.cjs.js.map\n","import firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { __values, __spread, __awaiter, __generator, __assign } from 'tslib';\nimport { ErrorFactory } from '@firebase/util';\nimport { deleteDb, openDb } from 'idb';\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 occured 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 occured while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n _a[\"token-update-failed\" /* TOKEN_UPDATE_FAILED */] = 'A problem occured 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 Inc.\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 Inc.\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, __spread(uint8Array)));\r\n return base64String\r\n .replace(/=/g, '')\r\n .replace(/\\+/g, '-')\r\n .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 Inc.\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,\r\n * so that the upgrade 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 Inc.\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\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/** 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 Inc.\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 CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\n/** Set to '1' if Analytics is enabled for the campaign */\r\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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\r\n * FCM, and unregisters 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({ token: updatedToken, createTime: Date.now() }, tokenDetails);\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 2017 Google Inc.\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 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 2019 Google Inc.\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\r\n // Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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: true,\r\n configurable: true\r\n });\r\n WindowController.prototype.getToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var swRegistration;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.vapidKey) {\r\n this.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n return [4 /*yield*/, this.getServiceWorkerRegistration()];\r\n case 1:\r\n swRegistration = _a.sent();\r\n if (!(Notification.permission === 'default')) return [3 /*break*/, 3];\r\n // The user hasn't allowed or denied notifications yet. Ask them.\r\n return [4 /*yield*/, Notification.requestPermission()];\r\n case 2:\r\n // The user hasn't allowed or denied notifications yet. Ask them.\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n return [2 /*return*/, getToken(this.firebaseDependencies, swRegistration, this.vapidKey)];\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 var swRegistration;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getServiceWorkerRegistration()];\r\n case 1:\r\n swRegistration = _a.sent();\r\n return [2 /*return*/, deleteToken(this.firebaseDependencies, 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 // TODO: Deprecate this and make VAPID key a parameter in getToken.\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 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\r\n * message.\r\n * @return The unsubscribe function for the observer.\r\n */\r\n // TODO: Simplify this to only accept a function and not an Observer.\r\n WindowController.prototype.onMessage = function (nextOrObserver) {\r\n var _this = this;\r\n this.onMessageCallback =\r\n typeof nextOrObserver === 'function'\r\n ? nextOrObserver\r\n : nextOrObserver.next;\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 // Unimplemented\r\n WindowController.prototype.onTokenRefresh = function () {\r\n return function () { };\r\n };\r\n /**\r\n * Creates or updates the default service worker registration.\r\n * @return The service worker registration to be used for the push service.\r\n */\r\n WindowController.prototype.getServiceWorkerRegistration = 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 if (!!this.swRegistration) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\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 2:\r\n _a.swRegistration = _b.sent();\r\n // The timing when browser updates sw when sw has an update is unreliable by my experiment.\r\n // It leads to version conflict when the SDK upgrades to a newer version in the main page, but\r\n // sw is stuck with the old version. For example, https://github.com/firebase/firebase-js-sdk/issues/2590\r\n // The following line reliably updates 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*/, 4];\r\n case 3:\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 4: return [2 /*return*/, this.swRegistration];\r\n }\r\n });\r\n });\r\n };\r\n WindowController.prototype.messageEventListener = function (event) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, type, payload, data;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n if (!((_a = event.data) === null || _a === void 0 ? void 0 : _a.firebaseMessaging)) {\r\n // Not a message from FCM\r\n return [2 /*return*/];\r\n }\r\n _b = event.data.firebaseMessaging, type = _b.type, payload = _b.payload;\r\n if (this.onMessageCallback && type === MessageType.PUSH_RECEIVED) {\r\n this.onMessageCallback(payload);\r\n }\r\n data = payload.data;\r\n if (!(isConsoleMessage(data) &&\r\n data[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3 /*break*/, 2];\r\n // Analytics is enabled on this message, so we should log it.\r\n return [4 /*yield*/, this.logEvent(type, data)];\r\n case 1:\r\n // Analytics is enabled on this message, so we should log it.\r\n _c.sent();\r\n _c.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\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}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 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: true,\r\n configurable: true\r\n });\r\n /**\r\n * Calling setBackgroundMessageHandler will opt in to some specific\r\n * behaviours.\r\n * 1.) If a notification doesn't need to be shown due to a window already\r\n * being visible, then push messages will be sent to the page.\r\n * 2.) If a notification needs to be shown, and the message contains no\r\n * notification data this method will be called\r\n * and the promise it returns will be passed to event.waitUntil.\r\n * If you do not set this callback then all push messages will let and the\r\n * 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\r\n * and a notification must be shown. The callback will be given the data from\r\n * the push message.\r\n */\r\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\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 // TODO: Remove getToken from SW Controller.\r\n // Calling this from an old SW can cause all kinds of 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 = (_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.\r\n // Calling this from an old SW can cause all kinds of 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: Deprecate this and make VAPID key a parameter in getToken.\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\r\n * the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The\r\n * value of the `notification` property will be used as the NotificationOptions\r\n * object passed to showNotification. Additionally, the `title` property of the\r\n * notification object will be used as the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be\r\n * shown.\r\n */\r\n SwController.prototype.onPush = function (event) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var payload, clientList, notificationDetails;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n payload = getMessagePayload(event);\r\n if (!payload) {\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 // App in foreground. Send to page.\r\n return [2 /*return*/, sendMessageToWindowClients(clientList, payload)];\r\n }\r\n notificationDetails = getNotificationData(payload);\r\n if (!notificationDetails) return [3 /*break*/, 3];\r\n return [4 /*yield*/, showNotification(notificationDetails)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 5];\r\n case 3:\r\n if (!this.bgMessageHandler) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.bgMessageHandler(payload)];\r\n case 4:\r\n _a.sent();\r\n _a.label = 5;\r\n case 5: 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 payload, link, client, message;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n payload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\r\n if (!payload) {\r\n // Not an FCM notification, do nothing.\r\n return [2 /*return*/];\r\n }\r\n else if (event.action) {\r\n // User clicked on an action button.\r\n // This will allow devs to act on action button clicks by using a custom\r\n // 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(payload);\r\n if (!link) {\r\n return [2 /*return*/];\r\n }\r\n return [4 /*yield*/, getWindowClient(link)];\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 // Unable to find window client so need to open one.\r\n // This also focuses the opened client.\r\n client = _c.sent();\r\n // Wait three seconds for the client to initialize and set up the message\r\n // handler so that it can receive the message.\r\n return [4 /*yield*/, sleep(3000)];\r\n case 3:\r\n // Wait three seconds for the client to initialize and set up the message\r\n // handler so that it 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 message = createNewMessage(MessageType.NOTIFICATION_CLICKED, payload);\r\n return [2 /*return*/, client.postMessage(message)];\r\n }\r\n });\r\n });\r\n };\r\n return SwController;\r\n}());\r\nfunction getMessagePayload(_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\nfunction getNotificationData(payload) {\r\n var _a;\r\n if (!payload || typeof payload.notification !== 'object') {\r\n return;\r\n }\r\n var notificationInformation = __assign({}, payload.notification);\r\n // Put the message payload under FCM_MSG name so we can identify the\r\n // notification as being an FCM notification vs a notification from\r\n // somewhere else (i.e. normal web push or developer generated\r\n // notification).\r\n notificationInformation.data = __assign(__assign({}, payload.notification.data), (_a = {}, _a[FCM_MSG] = payload, _a));\r\n return notificationInformation;\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 parsedURL, clientList, clientList_1, clientList_1_1, client, parsedClientUrl;\r\n var e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n parsedURL = new URL(url, self.location.href);\r\n 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 parsedClientUrl = new URL(client.url, self.location.href);\r\n if (parsedClientUrl.host === parsedURL.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\r\n * resolve to true, 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\r\n // of extensions, which are always considered visible for some reason.\r\n !client.url.startsWith('chrome-extension://');\r\n });\r\n}\r\n/**\r\n * @param payload The data from the push event that should be sent to all\r\n * available pages.\r\n * @returns Returns a promise that resolves once the message has been sent to\r\n * all WindowClients.\r\n */\r\nfunction sendMessageToWindowClients(clientList, payload) {\r\n var e_2, _a;\r\n var message = createNewMessage(MessageType.PUSH_RECEIVED, payload);\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(message);\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 createNewMessage(type, payload) {\r\n return {\r\n firebaseMessaging: { type: type, payload: payload }\r\n };\r\n}\r\nfunction showNotification(details) {\r\n var _a;\r\n var title = (_a = details.title) !== null && _a !== void 0 ? _a : '';\r\n var actions = details.actions;\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 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(title, details);\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 Inc.\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 { __awaiter, __generator, __spreadArrays } from 'tslib';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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;\r\n/**\r\n * This is the value of Number.MIN_SAFE_INTEGER, which is not well supported\r\n * enough for us to use it directly.\r\n */\r\nvar MIN_SAFE_INTEGER = -9007199254740991;\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 FirebaseStorageError = /** @class */ (function () {\r\n function FirebaseStorageError(code, message) {\r\n this.code_ = prependCode(code);\r\n this.message_ = 'Firebase Storage: ' + message;\r\n this.serverResponse_ = null;\r\n this.name_ = 'FirebaseError';\r\n }\r\n FirebaseStorageError.prototype.codeProp = function () {\r\n return this.code;\r\n };\r\n FirebaseStorageError.prototype.codeEquals = function (code) {\r\n return prependCode(code) === this.codeProp();\r\n };\r\n FirebaseStorageError.prototype.serverResponseProp = function () {\r\n return this.serverResponse_;\r\n };\r\n FirebaseStorageError.prototype.setServerResponseProp = function (serverResponse) {\r\n this.serverResponse_ = serverResponse;\r\n };\r\n Object.defineProperty(FirebaseStorageError.prototype, \"name\", {\r\n get: function () {\r\n return this.name_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageError.prototype, \"code\", {\r\n get: function () {\r\n return this.code_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageError.prototype, \"message\", {\r\n get: function () {\r\n return this.message_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FirebaseStorageError.prototype, \"serverResponse\", {\r\n get: function () {\r\n return this.serverResponse_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FirebaseStorageError;\r\n}());\r\nvar Code = {\r\n // Shared between all platforms\r\n UNKNOWN: 'unknown',\r\n OBJECT_NOT_FOUND: 'object-not-found',\r\n BUCKET_NOT_FOUND: 'bucket-not-found',\r\n PROJECT_NOT_FOUND: 'project-not-found',\r\n QUOTA_EXCEEDED: 'quota-exceeded',\r\n UNAUTHENTICATED: 'unauthenticated',\r\n UNAUTHORIZED: 'unauthorized',\r\n RETRY_LIMIT_EXCEEDED: 'retry-limit-exceeded',\r\n INVALID_CHECKSUM: 'invalid-checksum',\r\n CANCELED: 'canceled',\r\n // JS specific\r\n INVALID_EVENT_NAME: 'invalid-event-name',\r\n INVALID_URL: 'invalid-url',\r\n INVALID_DEFAULT_BUCKET: 'invalid-default-bucket',\r\n NO_DEFAULT_BUCKET: 'no-default-bucket',\r\n CANNOT_SLICE_BLOB: 'cannot-slice-blob',\r\n SERVER_FILE_WRONG_SIZE: 'server-file-wrong-size',\r\n NO_DOWNLOAD_URL: 'no-download-url',\r\n INVALID_ARGUMENT: 'invalid-argument',\r\n INVALID_ARGUMENT_COUNT: 'invalid-argument-count',\r\n APP_DELETED: 'app-deleted',\r\n INVALID_ROOT_OPERATION: 'invalid-root-operation',\r\n INVALID_FORMAT: 'invalid-format',\r\n INTERNAL_ERROR: 'internal-error'\r\n};\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(Code.UNKNOWN, message);\r\n}\r\nfunction objectNotFound(path) {\r\n return new FirebaseStorageError(Code.OBJECT_NOT_FOUND, \"Object '\" + path + \"' does not exist.\");\r\n}\r\nfunction quotaExceeded(bucket) {\r\n return new FirebaseStorageError(Code.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(Code.UNAUTHENTICATED, message);\r\n}\r\nfunction unauthorized(path) {\r\n return new FirebaseStorageError(Code.UNAUTHORIZED, \"User does not have permission to access '\" + path + \"'.\");\r\n}\r\nfunction retryLimitExceeded() {\r\n return new FirebaseStorageError(Code.RETRY_LIMIT_EXCEEDED, 'Max retry time for operation exceeded, please try again.');\r\n}\r\nfunction canceled() {\r\n return new FirebaseStorageError(Code.CANCELED, 'User canceled the upload/download.');\r\n}\r\nfunction invalidUrl(url) {\r\n return new FirebaseStorageError(Code.INVALID_URL, \"Invalid URL '\" + url + \"'.\");\r\n}\r\nfunction invalidDefaultBucket(bucket) {\r\n return new FirebaseStorageError(Code.INVALID_DEFAULT_BUCKET, \"Invalid default bucket '\" + bucket + \"'.\");\r\n}\r\nfunction cannotSliceBlob() {\r\n return new FirebaseStorageError(Code.CANNOT_SLICE_BLOB, 'Cannot slice blob for upload. Please retry the upload.');\r\n}\r\nfunction serverFileWrongSize() {\r\n return new FirebaseStorageError(Code.SERVER_FILE_WRONG_SIZE, 'Server recorded incorrect upload file size, please retry the upload.');\r\n}\r\nfunction noDownloadURL() {\r\n return new FirebaseStorageError(Code.NO_DOWNLOAD_URL, 'The given file does not have any download URLs.');\r\n}\r\nfunction invalidArgument(index, fnName, message) {\r\n return new FirebaseStorageError(Code.INVALID_ARGUMENT, 'Invalid argument in `' + fnName + '` at index ' + index + ': ' + message);\r\n}\r\nfunction invalidArgumentCount(argMin, argMax, fnName, real) {\r\n var countPart;\r\n var plural;\r\n if (argMin === argMax) {\r\n countPart = argMin;\r\n plural = argMin === 1 ? 'argument' : 'arguments';\r\n }\r\n else {\r\n countPart = 'between ' + argMin + ' and ' + argMax;\r\n plural = 'arguments';\r\n }\r\n return new FirebaseStorageError(Code.INVALID_ARGUMENT_COUNT, 'Invalid argument count in `' +\r\n fnName +\r\n '`: Expected ' +\r\n countPart +\r\n ' ' +\r\n plural +\r\n ', received ' +\r\n real +\r\n '.');\r\n}\r\nfunction appDeleted() {\r\n return new FirebaseStorageError(Code.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(Code.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(Code.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(Code.INTERNAL_ERROR, 'Internal error: ' + message);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 StringFormat = {\r\n RAW: 'raw',\r\n BASE64: 'base64',\r\n BASE64URL: 'base64url',\r\n DATA_URL: 'data_url'\r\n};\r\nfunction formatValidator(stringFormat) {\r\n switch (stringFormat) {\r\n case StringFormat.RAW:\r\n case StringFormat.BASE64:\r\n case StringFormat.BASE64URL:\r\n case StringFormat.DATA_URL:\r\n return;\r\n default:\r\n throw 'Expected one of the event types: [' +\r\n StringFormat.RAW +\r\n ', ' +\r\n StringFormat.BASE64 +\r\n ', ' +\r\n StringFormat.BASE64URL +\r\n ', ' +\r\n StringFormat.DATA_URL +\r\n '].';\r\n }\r\n}\r\n/**\r\n * @struct\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 = atob(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\n/**\r\n * @struct\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:[<mediatype>][;base64],<data>\");\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 Inc.\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 TaskEvent = {\r\n /** Triggered whenever the task changes or progress is updated. */\r\n STATE_CHANGED: 'state_changed'\r\n};\r\nvar InternalTaskState = {\r\n RUNNING: 'running',\r\n PAUSING: 'pausing',\r\n PAUSED: 'paused',\r\n SUCCESS: 'success',\r\n CANCELING: 'canceling',\r\n CANCELED: 'canceled',\r\n ERROR: 'error'\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 InternalTaskState.RUNNING:\r\n case InternalTaskState.PAUSING:\r\n case InternalTaskState.CANCELING:\r\n return TaskState.RUNNING;\r\n case InternalTaskState.PAUSED:\r\n return TaskState.PAUSED;\r\n case InternalTaskState.SUCCESS:\r\n return TaskState.SUCCESS;\r\n case InternalTaskState.CANCELED:\r\n return TaskState.CANCELED;\r\n case InternalTaskState.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 Inc.\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 * @return False if the object is undefined or null, true otherwise.\r\n */\r\nfunction isDef(p) {\r\n return p != null;\r\n}\r\nfunction isJustDef(p) {\r\n return p !== void 0;\r\n}\r\nfunction isFunction(p) {\r\n return typeof p === 'function';\r\n}\r\nfunction isObject(p) {\r\n return typeof p === 'object';\r\n}\r\nfunction isNonNullObject(p) {\r\n return isObject(p) && p !== null;\r\n}\r\nfunction isNonArrayObject(p) {\r\n return isObject(p) && !Array.isArray(p);\r\n}\r\nfunction isString(p) {\r\n return typeof p === 'string' || p instanceof String;\r\n}\r\nfunction isInteger(p) {\r\n return isNumber(p) && Number.isInteger(p);\r\n}\r\nfunction isNumber(p) {\r\n return typeof p === 'number' || p instanceof Number;\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}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 * @enum{number}\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 Inc.\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 * We use this instead of goog.net.XhrIo because goog.net.XhrIo is hyuuuuge and\r\n * doesn't work in React Native on Android.\r\n */\r\nvar NetworkXhrIo = /** @class */ (function () {\r\n function NetworkXhrIo() {\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(_this);\r\n });\r\n _this.xhr_.addEventListener('error', function () {\r\n _this.errorCode_ = ErrorCode.NETWORK_ERROR;\r\n resolve(_this);\r\n });\r\n _this.xhr_.addEventListener('load', function () {\r\n resolve(_this);\r\n });\r\n });\r\n }\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.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 (isDef(headers)) {\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 (isDef(body)) {\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 NetworkXhrIo.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 NetworkXhrIo.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 NetworkXhrIo.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 NetworkXhrIo.prototype.abort = function () {\r\n this.xhr_.abort();\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.getResponseHeader = function (header) {\r\n return this.xhr_.getResponseHeader(header);\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.addUploadProgressListener = function (listener) {\r\n if (isDef(this.xhr_.upload)) {\r\n this.xhr_.upload.addEventListener('progress', listener);\r\n }\r\n };\r\n /**\r\n * @override\r\n */\r\n NetworkXhrIo.prototype.removeUploadProgressListener = function (listener) {\r\n if (isDef(this.xhr_.upload)) {\r\n this.xhr_.upload.removeEventListener('progress', listener);\r\n }\r\n };\r\n return NetworkXhrIo;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 XhrIoPool = /** @class */ (function () {\r\n function XhrIoPool() {\r\n }\r\n XhrIoPool.prototype.createXhrIo = function () {\r\n return new NetworkXhrIo();\r\n };\r\n return XhrIoPool;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Error(\"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 Inc.\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\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 * @struct\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: true,\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: true,\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) {\r\n var bucketLocation;\r\n try {\r\n bucketLocation = Location.makeFromUrl(bucketString);\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) {\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 = DEFAULT_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 = '(?:storage.googleapis.com|storage.cloud.google.com)';\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 * @license\r\n * Copyright 2017 Google Inc.\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 Inc.\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 Inc.\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) {\r\n return \"https://\" + DEFAULT_HOST + \"/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 // @ts-ignore TODO: remove once typescript is upgraded to 3.5.x\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 Inc.\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\n/**\r\n * @struct\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 (isDef(size)) {\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, authWrapper) {\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 authWrapper.makeStorageReference(loc);\r\n }\r\n Object.defineProperty(metadata, 'ref', { get: generateRef });\r\n}\r\nfunction fromResource(authWrapper, 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, authWrapper);\r\n return metadata;\r\n}\r\nfunction fromResourceString(authWrapper, 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(authWrapper, resource, mappings);\r\n}\r\nfunction downloadUrlFromResourceString(metadata, resourceString) {\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);\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}\r\nfunction metadataValidator(p) {\r\n if (!isObject(p) || !p) {\r\n throw 'Expected Metadata object.';\r\n }\r\n for (var key in p) {\r\n if (p.hasOwnProperty(key)) {\r\n var val = p[key];\r\n if (key === 'customMetadata') {\r\n if (!isObject(val)) {\r\n throw 'Expected object for \\'customMetadata\\' mapping.';\r\n }\r\n }\r\n else {\r\n if (isNonNullObject(val)) {\r\n throw \"Mapping for '\" + key + \"' cannot be an object.\";\r\n }\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 MAX_RESULTS_KEY = 'maxResults';\r\nvar MAX_MAX_RESULTS = 1000;\r\nvar PAGE_TOKEN_KEY = 'pageToken';\r\nvar PREFIXES_KEY = 'prefixes';\r\nvar ITEMS_KEY = 'items';\r\nfunction fromBackendResponse(authWrapper, 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 = authWrapper.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 = authWrapper.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(authWrapper, 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(authWrapper, bucket, resource);\r\n}\r\nfunction listOptionsValidator(p) {\r\n if (!isObject(p) || !p) {\r\n throw 'Expected ListOptions object.';\r\n }\r\n for (var key in p) {\r\n if (key === MAX_RESULTS_KEY) {\r\n if (!isInteger(p[MAX_RESULTS_KEY]) ||\r\n p[MAX_RESULTS_KEY] <= 0) {\r\n throw 'Expected maxResults to be a positive number.';\r\n }\r\n if (p[MAX_RESULTS_KEY] > 1000) {\r\n throw \"Expected maxResults to be less than or equal to \" + MAX_MAX_RESULTS + \".\";\r\n }\r\n }\r\n else if (key === PAGE_TOKEN_KEY) {\r\n if (p[PAGE_TOKEN_KEY] && !isString(p[PAGE_TOKEN_KEY])) {\r\n throw 'Expected pageToken to be string.';\r\n }\r\n }\r\n else {\r\n throw 'Unknown option: ' + key;\r\n }\r\n }\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(authWrapper, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(authWrapper, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return metadata;\r\n }\r\n return handler;\r\n}\r\nfunction listHandler(authWrapper, bucket) {\r\n function handler(xhr, text) {\r\n var listResult = fromResponseString(authWrapper, bucket, text);\r\n handlerCheck(listResult !== null);\r\n return listResult;\r\n }\r\n return handler;\r\n}\r\nfunction downloadUrlHandler(authWrapper, mappings) {\r\n function handler(xhr, text) {\r\n var metadata = fromResourceString(authWrapper, text, mappings);\r\n handlerCheck(metadata !== null);\r\n return downloadUrlFromResourceString(metadata, text);\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 newErr = unauthenticated();\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.setServerResponseProp(err.serverResponseProp());\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.setServerResponseProp(err.serverResponseProp());\r\n return newErr;\r\n }\r\n return errorHandler;\r\n}\r\nfunction getMetadata(authWrapper, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'GET';\r\n var timeout = authWrapper.maxOperationRetryTime();\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction list(authWrapper, 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);\r\n var method = 'GET';\r\n var timeout = authWrapper.maxOperationRetryTime();\r\n var requestInfo = new RequestInfo(url, method, listHandler(authWrapper, location.bucket), timeout);\r\n requestInfo.urlParams = urlParams;\r\n requestInfo.errorHandler = sharedErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction getDownloadUrl(authWrapper, location, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'GET';\r\n var timeout = authWrapper.maxOperationRetryTime();\r\n var requestInfo = new RequestInfo(url, method, downloadUrlHandler(authWrapper, mappings), timeout);\r\n requestInfo.errorHandler = objectErrorHandler(location);\r\n return requestInfo;\r\n}\r\nfunction updateMetadata(authWrapper, location, metadata, mappings) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\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 = authWrapper.maxOperationRetryTime();\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, 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(authWrapper, location) {\r\n var urlPart = location.fullServerUrl();\r\n var url = makeUrl(urlPart);\r\n var method = 'DELETE';\r\n var timeout = authWrapper.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\nfunction multipartUpload(authWrapper, 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 =\r\n str +\r\n Math.random()\r\n .toString()\r\n .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);\r\n var method = 'POST';\r\n var timeout = authWrapper.maxUploadRetryTime();\r\n var requestInfo = new RequestInfo(url, method, metadataHandler(authWrapper, 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 * @struct\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(authWrapper, 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);\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 = authWrapper.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(authWrapper, 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 = authWrapper.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 resumableUploadChunkSize = 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, authWrapper, 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(authWrapper, 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 = authWrapper.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 Inc.\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 * @struct\r\n */\r\nvar Observer = /** @class */ (function () {\r\n function Observer(nextOrObserver, error, complete) {\r\n var asFunctions = isFunction(nextOrObserver) ||\r\n isDef(error) ||\r\n isDef(complete);\r\n if (asFunctions) {\r\n this.next = nextOrObserver;\r\n this.error = error || null;\r\n this.complete = complete || null;\r\n }\r\n else {\r\n var observer = nextOrObserver;\r\n this.next = observer.next || null;\r\n this.error = observer.error || null;\r\n this.complete = observer.complete || null;\r\n }\r\n }\r\n return Observer;\r\n}());\n\nvar UploadTaskSnapshot = /** @class */ (function () {\r\n function UploadTaskSnapshot(bytesTransferred, totalBytes, state, metadata, task, ref) {\r\n this.bytesTransferred = bytesTransferred;\r\n this.totalBytes = totalBytes;\r\n this.state = state;\r\n this.metadata = metadata;\r\n this.task = task;\r\n this.ref = ref;\r\n }\r\n return UploadTaskSnapshot;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 name Name of the function.\r\n * @param specs Argument specs.\r\n * @param passed The actual arguments passed to the function.\r\n * @throws {fbs.Error} If the arguments are invalid.\r\n */\r\nfunction validate(name, specs, passed) {\r\n var minArgs = specs.length;\r\n var maxArgs = specs.length;\r\n for (var i = 0; i < specs.length; i++) {\r\n if (specs[i].optional) {\r\n minArgs = i;\r\n break;\r\n }\r\n }\r\n var validLength = minArgs <= passed.length && passed.length <= maxArgs;\r\n if (!validLength) {\r\n throw invalidArgumentCount(minArgs, maxArgs, name, passed.length);\r\n }\r\n for (var i = 0; i < passed.length; i++) {\r\n try {\r\n specs[i].validator(passed[i]);\r\n }\r\n catch (e) {\r\n if (e instanceof Error) {\r\n throw invalidArgument(i, name, e.message);\r\n }\r\n else {\r\n throw invalidArgument(i, name, e);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @struct\r\n */\r\nvar ArgSpec = /** @class */ (function () {\r\n function ArgSpec(validator, optional) {\r\n var self = this;\r\n this.validator = function (p) {\r\n if (self.optional && !isJustDef(p)) {\r\n return;\r\n }\r\n validator(p);\r\n };\r\n this.optional = !!optional;\r\n }\r\n return ArgSpec;\r\n}());\r\nfunction and_(v1, v2) {\r\n return function (p) {\r\n v1(p);\r\n v2(p);\r\n };\r\n}\r\nfunction stringSpec(validator, optional) {\r\n function stringValidator(p) {\r\n if (!isString(p)) {\r\n throw 'Expected string.';\r\n }\r\n }\r\n var chainedValidator;\r\n if (validator) {\r\n chainedValidator = and_(stringValidator, validator);\r\n }\r\n else {\r\n chainedValidator = stringValidator;\r\n }\r\n return new ArgSpec(chainedValidator, optional);\r\n}\r\nfunction uploadDataSpec() {\r\n function validator(p) {\r\n var valid = p instanceof Uint8Array ||\r\n p instanceof ArrayBuffer ||\r\n (isNativeBlobDefined() && p instanceof Blob);\r\n if (!valid) {\r\n throw 'Expected Blob or File.';\r\n }\r\n }\r\n return new ArgSpec(validator);\r\n}\r\nfunction metadataSpec(optional) {\r\n return new ArgSpec(metadataValidator, optional);\r\n}\r\nfunction listOptionSpec(optional) {\r\n return new ArgSpec(listOptionsValidator, optional);\r\n}\r\nfunction nonNegativeNumberSpec() {\r\n function validator(p) {\r\n var valid = isNumber(p) && p >= 0;\r\n if (!valid) {\r\n throw 'Expected a number 0 or greater.';\r\n }\r\n }\r\n return new ArgSpec(validator);\r\n}\r\nfunction looseObjectSpec(validator, optional) {\r\n function isLooseObjectValidator(p) {\r\n var isLooseObject = p === null || (isDef(p) && p instanceof Object);\r\n if (!isLooseObject) {\r\n throw 'Expected an Object.';\r\n }\r\n if (validator !== undefined && validator !== null) {\r\n validator(p);\r\n }\r\n }\r\n return new ArgSpec(isLooseObjectValidator, optional);\r\n}\r\nfunction nullFunctionSpec(optional) {\r\n function validator(p) {\r\n var valid = p === null || isFunction(p);\r\n if (!valid) {\r\n throw 'Expected a Function.';\r\n }\r\n }\r\n return new ArgSpec(validator, optional);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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\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 Inc.\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 */\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, authWrapper, location, mappings, blob, metadata) {\r\n var _this = this;\r\n if (metadata === void 0) { metadata = null; }\r\n this.transferred_ = 0;\r\n this.needToFetchStatus_ = false;\r\n this.needToFetchMetadata_ = false;\r\n this.observers_ = [];\r\n this.error_ = null;\r\n this.uploadUrl_ = null;\r\n this.request_ = null;\r\n this.chunkMultiplier_ = 1;\r\n this.resolve_ = null;\r\n this.reject_ = null;\r\n this.ref_ = ref;\r\n this.authWrapper_ = authWrapper;\r\n this.location_ = location;\r\n this.blob_ = blob;\r\n this.metadata_ = metadata;\r\n this.mappings_ = mappings;\r\n this.resumable_ = this.shouldDoResumable_(this.blob_);\r\n this.state_ = InternalTaskState.RUNNING;\r\n this.errorHandler_ = function (error) {\r\n _this.request_ = null;\r\n _this.chunkMultiplier_ = 1;\r\n if (error.codeEquals(Code.CANCELED)) {\r\n _this.needToFetchStatus_ = true;\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this.error_ = error;\r\n _this.transition_(InternalTaskState.ERROR);\r\n }\r\n };\r\n this.metadataErrorHandler_ = function (error) {\r\n _this.request_ = null;\r\n if (error.codeEquals(Code.CANCELED)) {\r\n _this.completeTransitions_();\r\n }\r\n else {\r\n _this.error_ = error;\r\n _this.transition_(InternalTaskState.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_ !== InternalTaskState.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_ !== null) {\r\n return;\r\n }\r\n if (this.resumable_) {\r\n if (this.uploadUrl_ === null) {\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 this.authWrapper_.getAuthToken().then(function (authToken) {\r\n switch (_this.state_) {\r\n case InternalTaskState.RUNNING:\r\n callback(authToken);\r\n break;\r\n case InternalTaskState.CANCELING:\r\n _this.transition_(InternalTaskState.CANCELED);\r\n break;\r\n case InternalTaskState.PAUSING:\r\n _this.transition_(InternalTaskState.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) {\r\n var requestInfo = createResumableUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\r\n var createRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\r\n _this.request_ = createRequest;\r\n createRequest.getPromise().then(function (url) {\r\n _this.request_ = null;\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) {\r\n var requestInfo = getResumableUploadStatus(_this.authWrapper_, _this.location_, url, _this.blob_);\r\n var statusRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\r\n _this.request_ = statusRequest;\r\n statusRequest.getPromise().then(function (status) {\r\n status = status;\r\n _this.request_ = null;\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 = resumableUploadChunkSize * 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) {\r\n var requestInfo;\r\n try {\r\n requestInfo = continueResumableUpload(_this.location_, _this.authWrapper_, url, _this.blob_, chunkSize, _this.mappings_, status, _this.makeProgressCallback_());\r\n }\r\n catch (e) {\r\n _this.error_ = e;\r\n _this.transition_(InternalTaskState.ERROR);\r\n return;\r\n }\r\n var uploadRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\r\n _this.request_ = uploadRequest;\r\n uploadRequest\r\n .getPromise()\r\n .then(function (newStatus) {\r\n _this.increaseMultiplier_();\r\n _this.request_ = null;\r\n _this.updateProgress_(newStatus.current);\r\n if (newStatus.finalized) {\r\n _this.metadata_ = newStatus.metadata;\r\n _this.transition_(InternalTaskState.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 = resumableUploadChunkSize * 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) {\r\n var requestInfo = getMetadata(_this.authWrapper_, _this.location_, _this.mappings_);\r\n var metadataRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\r\n _this.request_ = metadataRequest;\r\n metadataRequest.getPromise().then(function (metadata) {\r\n _this.request_ = null;\r\n _this.metadata_ = metadata;\r\n _this.transition_(InternalTaskState.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) {\r\n var requestInfo = multipartUpload(_this.authWrapper_, _this.location_, _this.mappings_, _this.blob_, _this.metadata_);\r\n var multipartRequest = _this.authWrapper_.makeRequest(requestInfo, authToken);\r\n _this.request_ = multipartRequest;\r\n multipartRequest.getPromise().then(function (metadata) {\r\n _this.request_ = null;\r\n _this.metadata_ = metadata;\r\n _this.updateProgress_(_this.blob_.size());\r\n _this.transition_(InternalTaskState.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 InternalTaskState.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_ !== null) {\r\n this.request_.cancel();\r\n }\r\n break;\r\n case InternalTaskState.PAUSING:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.RUNNING);\r\n this.state_ = state;\r\n if (this.request_ !== null) {\r\n this.request_.cancel();\r\n }\r\n break;\r\n case InternalTaskState.RUNNING:\r\n // TODO(andysoto):\r\n // assert(this.state_ === InternalTaskState.PAUSED ||\r\n // this.state_ === InternalTaskState.PAUSING);\r\n var wasPaused = this.state_ === InternalTaskState.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 InternalTaskState.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 InternalTaskState.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 InternalTaskState.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 InternalTaskState.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 InternalTaskState.PAUSING:\r\n this.transition_(InternalTaskState.PAUSED);\r\n break;\r\n case InternalTaskState.CANCELING:\r\n this.transition_(InternalTaskState.CANCELED);\r\n break;\r\n case InternalTaskState.RUNNING:\r\n this.start_();\r\n break;\r\n }\r\n };\r\n Object.defineProperty(UploadTask.prototype, \"snapshot\", {\r\n get: function () {\r\n var externalState = taskStateFromInternalTaskState(this.state_);\r\n return new UploadTaskSnapshot(this.transferred_, this.blob_.size(), externalState, this.metadata_, this, this.ref_);\r\n },\r\n enumerable: true,\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 */\r\n UploadTask.prototype.on = function (type, nextOrObserver, error, completed) {\r\n function typeValidator() {\r\n if (type !== TaskEvent.STATE_CHANGED) {\r\n throw \"Expected one of the event types: [\" + TaskEvent.STATE_CHANGED + \"].\";\r\n }\r\n }\r\n var nextOrObserverMessage = 'Expected a function or an Object with one of ' +\r\n '`next`, `error`, `complete` properties.';\r\n var nextValidator = nullFunctionSpec(true).validator;\r\n var observerValidator = looseObjectSpec(null, true).validator;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function nextOrObserverValidator(p) {\r\n try {\r\n nextValidator(p);\r\n return;\r\n }\r\n catch (e) { }\r\n try {\r\n observerValidator(p);\r\n var anyDefined = isJustDef(p['next']) ||\r\n isJustDef(p['error']) ||\r\n isJustDef(p['complete']);\r\n if (!anyDefined) {\r\n throw '';\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n throw nextOrObserverMessage;\r\n }\r\n }\r\n var specs = [\r\n stringSpec(typeValidator),\r\n looseObjectSpec(nextOrObserverValidator, true),\r\n nullFunctionSpec(true),\r\n nullFunctionSpec(true)\r\n ];\r\n validate('on', specs, arguments);\r\n var self = this;\r\n function makeBinder(specs) {\r\n function binder(nextOrObserver, error, complete) {\r\n if (specs !== null) {\r\n validate('on', specs, arguments);\r\n }\r\n var observer = new Observer(nextOrObserver, error, completed);\r\n self.addObserver_(observer);\r\n return function () {\r\n self.removeObserver_(observer);\r\n };\r\n }\r\n return binder;\r\n }\r\n function binderNextOrObserverValidator(p) {\r\n if (p === null) {\r\n throw nextOrObserverMessage;\r\n }\r\n nextOrObserverValidator(p);\r\n }\r\n var binderSpecs = [\r\n looseObjectSpec(binderNextOrObserverValidator),\r\n nullFunctionSpec(true),\r\n nullFunctionSpec(true)\r\n ];\r\n var typeOnly = !(isJustDef(nextOrObserver) ||\r\n isJustDef(error) ||\r\n isJustDef(completed));\r\n if (typeOnly) {\r\n return makeBinder(binderSpecs);\r\n }\r\n else {\r\n return makeBinder(null)(nextOrObserver, error, completed);\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_ !== null) {\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_ = null;\r\n this.reject_ = null;\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 * @return True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.resume = function () {\r\n validate('resume', [], arguments);\r\n var valid = this.state_ === InternalTaskState.PAUSED ||\r\n this.state_ === InternalTaskState.PAUSING;\r\n if (valid) {\r\n this.transition_(InternalTaskState.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 * @return True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.pause = function () {\r\n validate('pause', [], arguments);\r\n var valid = this.state_ === InternalTaskState.RUNNING;\r\n if (valid) {\r\n this.transition_(InternalTaskState.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 * @return True if the operation took effect, false if ignored.\r\n */\r\n UploadTask.prototype.cancel = function () {\r\n validate('cancel', [], arguments);\r\n var valid = this.state_ === InternalTaskState.RUNNING ||\r\n this.state_ === InternalTaskState.PAUSING;\r\n if (valid) {\r\n this.transition_(InternalTaskState.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 Inc.\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 * @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://<bucket>/<object-path>\r\n * http[s]://firebasestorage.googleapis.com/\r\n * <api-version>/b/<bucket>/o/<object-path>\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(authWrapper, location) {\r\n this.authWrapper = authWrapper;\r\n if (location instanceof Location) {\r\n this.location = location;\r\n }\r\n else {\r\n this.location = Location.makeFromUrl(location);\r\n }\r\n }\r\n /**\r\n * @return The URL for the bucket and path this object references,\r\n * in the form gs://<bucket>/<object-path>\r\n * @override\r\n */\r\n Reference.prototype.toString = function () {\r\n validate('toString', [], arguments);\r\n return 'gs://' + this.location.bucket + '/' + this.location.path;\r\n };\r\n Reference.prototype.newRef = function (authWrapper, location) {\r\n return new Reference(authWrapper, location);\r\n };\r\n Reference.prototype.mappings = function () {\r\n return getMappings();\r\n };\r\n /**\r\n * @return A reference to the object obtained by\r\n * appending childPath, removing any duplicate, beginning, or trailing\r\n * slashes.\r\n */\r\n Reference.prototype.child = function (childPath) {\r\n validate('child', [stringSpec()], arguments);\r\n var newPath = child(this.location.path, childPath);\r\n var location = new Location(this.location.bucket, newPath);\r\n return this.newRef(this.authWrapper, location);\r\n };\r\n Object.defineProperty(Reference.prototype, \"parent\", {\r\n /**\r\n * @return 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 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 this.newRef(this.authWrapper, location);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"root\", {\r\n /**\r\n * @return An reference to the root of this\r\n * object's bucket.\r\n */\r\n get: function () {\r\n var location = new Location(this.location.bucket, '');\r\n return this.newRef(this.authWrapper, location);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"bucket\", {\r\n get: function () {\r\n return this.location.bucket;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"fullPath\", {\r\n get: function () {\r\n return this.location.path;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"name\", {\r\n get: function () {\r\n return lastComponent(this.location.path);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Reference.prototype, \"storage\", {\r\n get: function () {\r\n return this.authWrapper.service();\r\n },\r\n enumerable: true,\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 * @return An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n Reference.prototype.put = function (data, metadata) {\r\n if (metadata === void 0) { metadata = null; }\r\n validate('put', [uploadDataSpec(), metadataSpec(true)], arguments);\r\n this.throwIfRoot_('put');\r\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data), metadata);\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 * @return An UploadTask that lets you control and\r\n * observe the upload.\r\n */\r\n Reference.prototype.putString = function (value, format, metadata) {\r\n if (format === void 0) { format = StringFormat.RAW; }\r\n validate('putString', [stringSpec(), stringSpec(formatValidator, true), metadataSpec(true)], arguments);\r\n this.throwIfRoot_('putString');\r\n var data = dataFromString(format, value);\r\n var metadataClone = Object.assign({}, metadata);\r\n if (!isDef(metadataClone['contentType']) &&\r\n isDef(data.contentType)) {\r\n metadataClone['contentType'] = data.contentType;\r\n }\r\n return new UploadTask(this, this.authWrapper, this.location, this.mappings(), new FbsBlob(data.data, true), metadataClone);\r\n };\r\n /**\r\n * Deletes the object at this location.\r\n * @return A promise that resolves if the deletion succeeds.\r\n */\r\n Reference.prototype.delete = function () {\r\n var _this = this;\r\n validate('delete', [], arguments);\r\n this.throwIfRoot_('delete');\r\n return this.authWrapper.getAuthToken().then(function (authToken) {\r\n var requestInfo = deleteObject(_this.authWrapper, _this.location);\r\n return _this.authWrapper.makeRequest(requestInfo, authToken).getPromise();\r\n });\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 * @return 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 Reference.prototype.listAll = function () {\r\n validate('listAll', [], arguments);\r\n var accumulator = {\r\n prefixes: [],\r\n items: []\r\n };\r\n return this.listAllHelper(accumulator).then(function () { return accumulator; });\r\n };\r\n Reference.prototype.listAllHelper = function (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*/, this.list(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*/, this.listAllHelper(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 *\r\n * @param options See ListOptions for details.\r\n * @return 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 Reference.prototype.list = function (options) {\r\n validate('list', [listOptionSpec(true)], arguments);\r\n var self = this;\r\n return this.authWrapper.getAuthToken().then(function (authToken) {\r\n var op = options || {};\r\n var requestInfo = list(self.authWrapper, self.location, \r\n /*delimiter= */ '/', op.pageToken, op.maxResults);\r\n return self.authWrapper.makeRequest(requestInfo, authToken).getPromise();\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 */\r\n Reference.prototype.getMetadata = function () {\r\n var _this = this;\r\n validate('getMetadata', [], arguments);\r\n this.throwIfRoot_('getMetadata');\r\n return this.authWrapper.getAuthToken().then(function (authToken) {\r\n var requestInfo = getMetadata(_this.authWrapper, _this.location, _this.mappings());\r\n return _this.authWrapper.makeRequest(requestInfo, authToken).getPromise();\r\n });\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 * @return A promise that resolves\r\n * with the new metadata for this object.\r\n * @see firebaseStorage.Reference.prototype.getMetadata\r\n */\r\n Reference.prototype.updateMetadata = function (metadata) {\r\n var _this = this;\r\n validate('updateMetadata', [metadataSpec()], arguments);\r\n this.throwIfRoot_('updateMetadata');\r\n return this.authWrapper.getAuthToken().then(function (authToken) {\r\n var requestInfo = updateMetadata(_this.authWrapper, _this.location, metadata, _this.mappings());\r\n return _this.authWrapper.makeRequest(requestInfo, authToken).getPromise();\r\n });\r\n };\r\n /**\r\n * @return A promise that resolves with the download\r\n * URL for this object.\r\n */\r\n Reference.prototype.getDownloadURL = function () {\r\n var _this = this;\r\n validate('getDownloadURL', [], arguments);\r\n this.throwIfRoot_('getDownloadURL');\r\n return this.authWrapper.getAuthToken().then(function (authToken) {\r\n var requestInfo = getDownloadUrl(_this.authWrapper, _this.location, _this.mappings());\r\n return _this.authWrapper\r\n .makeRequest(requestInfo, authToken)\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 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}());\n\n/**\r\n * A request whose promise always fails.\r\n * @struct\r\n * @template T\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\nvar RequestMap = /** @class */ (function () {\r\n function RequestMap() {\r\n this.map = new Map();\r\n this.id = MIN_SAFE_INTEGER;\r\n }\r\n /**\r\n * Registers the given request with this map.\r\n * The request is unregistered when it completes.\r\n *\r\n * @param request The request to register.\r\n */\r\n RequestMap.prototype.addRequest = function (request) {\r\n var _this = this;\r\n var id = this.id;\r\n this.id++;\r\n this.map.set(id, request);\r\n request.getPromise().then(function () { return _this.map.delete(id); }, function () { return _this.map.delete(id); });\r\n };\r\n /**\r\n * Cancels all registered requests.\r\n */\r\n RequestMap.prototype.clear = function () {\r\n this.map.forEach(function (v) {\r\n v && v.cancel(true);\r\n });\r\n this.map.clear();\r\n };\r\n return RequestMap;\r\n}());\n\n/**\r\n * @param app If null, getAuthToken always resolves with null.\r\n * @param service The storage service associated with this auth wrapper.\r\n * Untyped to avoid circular type dependencies.\r\n * @struct\r\n */\r\nvar AuthWrapper = /** @class */ (function () {\r\n function AuthWrapper(app, authProvider, maker, requestMaker, service, pool) {\r\n var _a;\r\n this.bucket_ = null;\r\n this.appId_ = null;\r\n this.deleted_ = false;\r\n this.app_ = app;\r\n if (this.app_ !== null) {\r\n var options = this.app_.options;\r\n if (isDef(options)) {\r\n this.bucket_ = AuthWrapper.extractBucket_(options);\r\n this.appId_ = (_a = options.appId) !== null && _a !== void 0 ? _a : null;\r\n }\r\n }\r\n this.authProvider_ = authProvider;\r\n this.storageRefMaker_ = maker;\r\n this.requestMaker_ = requestMaker;\r\n this.pool_ = pool;\r\n this.service_ = service;\r\n this.maxOperationRetryTime_ = DEFAULT_MAX_OPERATION_RETRY_TIME;\r\n this.maxUploadRetryTime_ = DEFAULT_MAX_UPLOAD_RETRY_TIME;\r\n this.requestMap_ = new RequestMap();\r\n }\r\n AuthWrapper.extractBucket_ = function (config) {\r\n var bucketString = config[CONFIG_STORAGE_BUCKET_KEY] || null;\r\n if (bucketString == null) {\r\n return null;\r\n }\r\n var loc = Location.makeFromBucketSpec(bucketString);\r\n return loc.bucket;\r\n };\r\n AuthWrapper.prototype.getAuthToken = function () {\r\n var auth = this.authProvider_.getImmediate({ optional: true });\r\n if (auth) {\r\n return auth.getToken().then(function (response) {\r\n if (response !== null) {\r\n return response.accessToken;\r\n }\r\n else {\r\n return null;\r\n }\r\n }, function () { return null; });\r\n }\r\n else {\r\n return Promise.resolve(null);\r\n }\r\n };\r\n AuthWrapper.prototype.bucket = function () {\r\n if (this.deleted_) {\r\n throw appDeleted();\r\n }\r\n else {\r\n return this.bucket_;\r\n }\r\n };\r\n /**\r\n * The service associated with this auth wrapper. Untyped to avoid circular\r\n * type dependencies.\r\n */\r\n AuthWrapper.prototype.service = function () {\r\n return this.service_;\r\n };\r\n /**\r\n * Returns a new firebaseStorage.Reference object referencing this AuthWrapper\r\n * at the given Location.\r\n * @param loc The Location.\r\n * @return Actually a firebaseStorage.Reference, typing not allowed\r\n * because of circular dependency problems.\r\n */\r\n AuthWrapper.prototype.makeStorageReference = function (loc) {\r\n return this.storageRefMaker_(this, loc);\r\n };\r\n AuthWrapper.prototype.makeRequest = function (requestInfo, authToken) {\r\n if (!this.deleted_) {\r\n var request = this.requestMaker_(requestInfo, this.appId_, authToken, this.pool_);\r\n this.requestMap_.addRequest(request);\r\n return request;\r\n }\r\n else {\r\n return new FailRequest(appDeleted());\r\n }\r\n };\r\n /**\r\n * Stop running requests and prevent more from being created.\r\n */\r\n AuthWrapper.prototype.deleteApp = function () {\r\n this.deleted_ = true;\r\n this.app_ = null;\r\n this.requestMap_.clear();\r\n };\r\n AuthWrapper.prototype.maxUploadRetryTime = function () {\r\n return this.maxUploadRetryTime_;\r\n };\r\n AuthWrapper.prototype.setMaxUploadRetryTime = function (time) {\r\n this.maxUploadRetryTime_ = time;\r\n };\r\n AuthWrapper.prototype.maxOperationRetryTime = function () {\r\n return this.maxOperationRetryTime_;\r\n };\r\n AuthWrapper.prototype.setMaxOperationRetryTime = function (time) {\r\n this.maxOperationRetryTime_ = time;\r\n };\r\n return AuthWrapper;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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, callback, 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 // TODO: This disable can be removed and the 'ignoreRestArgs' option added to\r\n // the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // TODO: This disable can be removed and the 'ignoreRestArgs' option added to\r\n // the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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, __spreadArrays([null, success], args));\r\n return;\r\n }\r\n var mustStop = canceled() || hitTimeout;\r\n if (mustStop) {\r\n triggerCallback.call.apply(triggerCallback, __spreadArrays([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 Inc.\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 * @struct\r\n * @template T\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.pendingXhr_ = null;\r\n this.backoffId_ = null;\r\n this.resolve_ = null;\r\n this.reject_ = 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 xhr = self.pool_.createXhrIo();\r\n self.pendingXhr_ = xhr;\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 xhr.addUploadProgressListener(progressListener);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n xhr\r\n .send(self.url_, self.method_, self.body_, self.headers_)\r\n .then(function (xhr) {\r\n if (self.progressCallback_ !== null) {\r\n xhr.removeUploadProgressListener(progressListener);\r\n }\r\n self.pendingXhr_ = null;\r\n xhr = xhr;\r\n var hitServer = xhr.getErrorCode() === ErrorCode.NO_ERROR;\r\n var status = xhr.getStatus();\r\n if (!hitServer || self.isRetryStatusCode_(status)) {\r\n var wasCanceled = xhr.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, xhr));\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 xhr = status.xhr;\r\n if (status.wasSuccessCode) {\r\n try {\r\n var result = self.callback_(xhr, xhr.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 (xhr !== null) {\r\n var err = unknown();\r\n err.setServerResponseProp(xhr.getResponseText());\r\n if (self.errorCallback_) {\r\n reject(self.errorCallback_(xhr, 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.pendingXhr_ !== null) {\r\n this.pendingXhr_.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 * @struct\r\n */\r\nvar RequestEndStatus = /** @class */ (function () {\r\n function RequestEndStatus(wasSuccessCode, xhr, canceled) {\r\n this.wasSuccessCode = wasSuccessCode;\r\n this.xhr = xhr;\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) {\r\n var version = typeof firebase !== 'undefined' ? firebase.SDK_VERSION : 'AppManager';\r\n headers['X-Firebase-Storage-Version'] = 'webjs/' + version;\r\n}\r\nfunction addGmpidHeader_(headers, appId) {\r\n if (appId) {\r\n headers['X-Firebase-GMPID'] = appId;\r\n }\r\n}\r\n/**\r\n * @template T\r\n */\r\nfunction makeRequest(requestInfo, appId, authToken, pool) {\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);\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 Inc.\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\n * @struct\r\n */\r\nvar Service = /** @class */ (function () {\r\n function Service(app, authProvider, pool, url) {\r\n this.bucket_ = null;\r\n function maker(authWrapper, loc) {\r\n return new Reference(authWrapper, loc);\r\n }\r\n this.authWrapper_ = new AuthWrapper(app, authProvider, maker, makeRequest, this, pool);\r\n this.app_ = app;\r\n if (url != null) {\r\n this.bucket_ = Location.makeFromBucketSpec(url);\r\n }\r\n else {\r\n var authWrapperBucket = this.authWrapper_.bucket();\r\n if (authWrapperBucket != null) {\r\n this.bucket_ = new Location(authWrapperBucket, '');\r\n }\r\n }\r\n this.internals_ = new ServiceInternals(this);\r\n }\r\n /**\r\n * Returns a firebaseStorage.Reference for the given path in the default\r\n * bucket.\r\n */\r\n Service.prototype.ref = function (path) {\r\n function validator(path) {\r\n if (typeof path !== 'string') {\r\n throw 'Path is not a string.';\r\n }\r\n if (/^[A-Za-z]+:\\/\\//.test(path)) {\r\n throw 'Expected child path but got a URL, use refFromURL instead.';\r\n }\r\n }\r\n validate('ref', [stringSpec(validator, true)], arguments);\r\n if (this.bucket_ == null) {\r\n throw new Error('No Storage Bucket defined in Firebase Options.');\r\n }\r\n var ref = new Reference(this.authWrapper_, this.bucket_);\r\n if (path != null) {\r\n return ref.child(path);\r\n }\r\n else {\r\n return ref;\r\n }\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 Service.prototype.refFromURL = function (url) {\r\n function validator(p) {\r\n if (typeof p !== 'string') {\r\n throw 'Path is not a string.';\r\n }\r\n if (!/^[A-Za-z]+:\\/\\//.test(p)) {\r\n throw 'Expected full URL but got a child path, use ref instead.';\r\n }\r\n try {\r\n Location.makeFromUrl(p);\r\n }\r\n catch (e) {\r\n throw 'Expected valid full URL but got an invalid one.';\r\n }\r\n }\r\n validate('refFromURL', [stringSpec(validator, false)], arguments);\r\n return new Reference(this.authWrapper_, url);\r\n };\r\n Object.defineProperty(Service.prototype, \"maxUploadRetryTime\", {\r\n get: function () {\r\n return this.authWrapper_.maxUploadRetryTime();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Service.prototype.setMaxUploadRetryTime = function (time) {\r\n validate('setMaxUploadRetryTime', [nonNegativeNumberSpec()], arguments);\r\n this.authWrapper_.setMaxUploadRetryTime(time);\r\n };\r\n Service.prototype.setMaxOperationRetryTime = function (time) {\r\n validate('setMaxOperationRetryTime', [nonNegativeNumberSpec()], arguments);\r\n this.authWrapper_.setMaxOperationRetryTime(time);\r\n };\r\n Object.defineProperty(Service.prototype, \"app\", {\r\n get: function () {\r\n return this.app_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Service.prototype, \"INTERNAL\", {\r\n get: function () {\r\n return this.internals_;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return Service;\r\n}());\r\n/**\r\n * @struct\r\n */\r\nvar ServiceInternals = /** @class */ (function () {\r\n function ServiceInternals(service) {\r\n this.service_ = service;\r\n }\r\n /**\r\n * Called when the associated app is deleted.\r\n * @see {!fbs.AuthWrapper.prototype.deleteApp}\r\n */\r\n ServiceInternals.prototype.delete = function () {\r\n this.service_.authWrapper_.deleteApp();\r\n return Promise.resolve();\r\n };\r\n return ServiceInternals;\r\n}());\n\nvar name = \"@firebase/storage\";\nvar version = \"0.3.32\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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, url) {\r\n // Dependencies\r\n var app = container.getProvider('app').getImmediate();\r\n var authProvider = container.getProvider('auth-internal');\r\n return new Service(app, authProvider, new XhrIoPool(), url);\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: Service,\r\n Reference: Reference\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.esm.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\nrequire('@firebase/installations');\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar logger$1 = require('@firebase/logger');\nvar component = require('@firebase/component');\n\nvar name = \"@firebase/performance\";\nvar version = \"0.3.2\";\n\n/**\r\n * @license\r\n * Copyright 2017 Google Inc.\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 Inc.\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[\"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 util.ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 && Promise && this.navigator && this.navigator.cookieEnabled) {\r\n return true;\r\n }\r\n return false;\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 Inc.\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 Inc.\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 this.shouldSendToFl = false;\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 Inc.\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 Inc.\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 Inc.\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$1.Logger(SERVICE_NAME);\r\nconsoleLogger.logLevel = logger$1.LogLevel.INFO;\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 shouldSendToFl: true\r\n};\r\n// These values will be used if the remote config object is successfully\r\n// retrieved, but the config object state shows unspecified or no template.\r\nvar NO_TEMPLATE_CONFIGS = {\r\n shouldSendToFl: false\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(iid, config);\r\n return Promise.resolve();\r\n }\r\n return getRemoteConfig(iid)\r\n .then(function (config) { return processConfig(iid, config); })\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(iid, 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 var state = config.state;\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 config object state indicates that no template has been set, that means it is new user of\r\n // Performance Monitoring and should use the old log endpoint, because it is guaranteed to work.\r\n if (state === undefined ||\r\n state === 'INSTANCE_STATE_UNSPECIFIED' ||\r\n state === 'NO_TEMPLATE') {\r\n {\r\n settingsServiceInstance.shouldSendToFl =\r\n NO_TEMPLATE_CONFIGS.shouldSendToFl;\r\n }\r\n }\r\n else if (entries.fpr_log_transport_web_percent) {\r\n // If config object state doesn't indicate no template, it can only be UPDATE for now.\r\n // - Performance Monitoring doesn't set etag in request, therefore state cannot be NO_CHANGE.\r\n // - Sampling rate flags and master flag are required, therefore state cannot be EMPTY_CONFIG.\r\n // If config object state is UPDATE and rollout flag is present, determine endpoint by iid.\r\n settingsServiceInstance.shouldSendToFl = isDestFl(iid, Number(entries.fpr_log_transport_web_percent));\r\n }\r\n else {\r\n // If config object state is UPDATE and rollout flag is not present, that means rollout is\r\n // complete and rollout flag is deprecated, therefore dispatch events to new transport endpoint.\r\n settingsServiceInstance.shouldSendToFl = DEFAULT_CONFIGS.shouldSendToFl;\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}\r\n/**\r\n * True if event should be sent to Fl transport endpoint rather than CC transport endpoint.\r\n * rolloutPercent is in range [0.0, 100.0].\r\n * @param iid Installation ID which identifies a web app installed on client.\r\n * @param rolloutPercent the possibility of this app sending events to Fl endpoint.\r\n * @return true if this installation should send events to Fl endpoint.\r\n */\r\nfunction isDestFl(iid, rolloutPercent) {\r\n if (iid.length === 0) {\r\n return false;\r\n }\r\n return getHashPercent(iid) < rolloutPercent;\r\n}\r\n/**\r\n * Generate integer value range in [0, 99]. Implementation from String.hashCode() in Java.\r\n * @param seed Same seed will generate consistent hash value using this algorithm.\r\n * @return Hash value in range [0, 99], generated from seed and hash algorithm.\r\n */\r\nfunction getHashPercent(seed) {\r\n var hash = 0;\r\n for (var i = 0; i < seed.length; i++) {\r\n hash = (hash << 3) + hash - seed.charCodeAt(i);\r\n }\r\n hash = Math.abs(hash % 100);\r\n return hash;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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 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 // Capture a snapshot of the queue and empty the \"official queue\".\r\n var staged = tslib.__spreadArrays(queue);\r\n queue = [];\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 postToEndpoint(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 = tslib.__spreadArrays(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 postToEndpoint(data, staged) {\r\n // Gradually rollout traffic from cc to transport using remote config.\r\n if (SettingsService.getInstance().shouldSendToFl) {\r\n return sendEventsToFl(data, staged);\r\n }\r\n else {\r\n return sendEventsToCc(data);\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 = tslib.__spreadArrays(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 sendEventsToCc(data) {\r\n return fetch(SettingsService.getInstance().logEndPointUrl, {\r\n method: 'POST',\r\n body: JSON.stringify(data)\r\n })\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 var wait = Number(res.next_request_wait_millis);\r\n // Find the next call wait time from the response.\r\n var requestOffset = isNaN(wait)\r\n ? DEFAULT_SEND_INTERVAL_MS\r\n : Math.max(DEFAULT_SEND_INTERVAL_MS, wait);\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 = tslib.__spreadArrays(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 Inc.\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 (!settingsService.loggingEnabled ||\r\n !settingsService.logTraceAfterSampling) {\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 setTimeout(function () { return sendLog(trace, 1 /* Trace */); }, 0);\r\n }\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 Inc.\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}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 this.durationUs = Math.floor(duration * 1000);\r\n this.startTimeUs = Math.floor(startTime * 1000);\r\n if (options && options.attributes) {\r\n this.customAttributes = tslib.__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.\r\n * @param counter Name of the custom metric\r\n * @param num Increment by value\r\n */\r\n Trace.prototype.incrementMetric = function (counter, num) {\r\n if (num === void 0) { num = 1; }\r\n if (this.counters[counter] === undefined) {\r\n this.putMetric(counter, 0);\r\n }\r\n this.counters[counter] += num;\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.\r\n * @param counter Name of the custom metric\r\n * @param num Set custom metric to this value\r\n */\r\n Trace.prototype.putMetric = function (counter, num) {\r\n if (isValidMetricName(counter, this.name)) {\r\n this.counters[counter] = num;\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 tslib.__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 Inc.\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 Inc.\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 Inc.\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 setupTransportService();\r\n getInitializationPromise().then(setupOobResources, setupOobResources);\r\n }\r\n else {\r\n consoleLogger.info('Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled.');\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: true,\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: true,\r\n configurable: true\r\n });\r\n return PerformanceController;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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.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\nexports.registerPerformance = registerPerformance;\n//# sourceMappingURL=index.cjs.js.map\n","import firebase from '@firebase/app';\nimport '@firebase/installations';\nimport { __assign, __awaiter, __generator } from 'tslib';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 ANALYTICS_ID_FIELD = 'measurementId';\r\n// Key to attach FID to in gtag params.\r\nvar GA_FID_KEY = 'firebase_id';\r\nvar ORIGIN_KEY = 'origin';\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\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 /** @deprecated */\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 Inc.\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, analyticsId, eventName, eventParams, options) {\r\n var params = eventParams || {};\r\n if (!options || !options.global) {\r\n params = __assign(__assign({}, eventParams), { 'send_to': analyticsId });\r\n }\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagFunction(GtagCommand.EVENT, eventName, params || {});\r\n}\r\n// TODO: Brad is going to add `screen_name` to GA Gold config parameter schema\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, analyticsId, screenName, options) {\r\n if (options && options.global) {\r\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\r\n }\r\n else {\r\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\r\n update: true,\r\n 'screen_name': screenName\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, analyticsId, id, options) {\r\n if (options && options.global) {\r\n gtagFunction(GtagCommand.SET, { 'user_id': id });\r\n }\r\n else {\r\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\r\n update: true,\r\n 'user_id': id\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, analyticsId, properties, options) {\r\n if (options && options.global) {\r\n var flatProperties = {};\r\n for (var _i = 0, _a = Object.keys(properties); _i < _a.length; _i++) {\r\n var 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 }\r\n else {\r\n gtagFunction(GtagCommand.CONFIG, analyticsId, {\r\n update: true,\r\n 'user_properties': properties\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(analyticsId, enabled) {\r\n window[\"ga-disable-\" + analyticsId] = !enabled;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Inc.\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 * 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 */\r\nfunction initializeGAId(app, installations, gtagCore) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var fid;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, installations.getId()];\r\n case 1:\r\n fid = _b.sent();\r\n // This command initializes gtag.js and only needs to be called once for the entire web app,\r\n // but since it is idempotent, we can call it multiple times.\r\n // We keep it together with other initialization logic for better code structure.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n gtagCore('js', new Date());\r\n // It should be the first config command called on this GA-ID\r\n // Initialize this GA-ID and set FID on it using the gtag config API.\r\n gtagCore(GtagCommand.CONFIG, app.options[ANALYTICS_ID_FIELD], (_a = {},\r\n _a[GA_FID_KEY] = fid,\r\n // guard against developers accidentally setting properties with prefix `firebase_`\r\n _a[ORIGIN_KEY] = 'firebase',\r\n _a.update = true,\r\n _a));\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\nfunction insertScriptTag(dataLayerName) {\r\n var script = document.createElement('script');\r\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\r\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\r\n script.src = GTAG_URL + \"?l=\" + dataLayerName;\r\n script.async = true;\r\n document.head.appendChild(script);\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 * 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 initializedIdPromisesMap Map of gaIds to their initialization promises\r\n */\r\nfunction wrapGtag(gtagCore, initializedIdPromisesMap) {\r\n return function (command, idOrNameOrParams, gtagParams) {\r\n // If event, check that relevant initialization promises have completed.\r\n if (command === GtagCommand.EVENT) {\r\n var initializationPromisesToWaitFor = [];\r\n // If there's a 'send_to' param, check if any ID specified matches\r\n // a FID we have begun a fetch on.\r\n if (gtagParams && gtagParams['send_to']) {\r\n var 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 for (var _i = 0, gaSendToList_1 = gaSendToList; _i < gaSendToList_1.length; _i++) {\r\n var sendToId = gaSendToList_1[_i];\r\n var initializationPromise = initializedIdPromisesMap[sendToId];\r\n // Groups will not be in the map.\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // There is an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array\r\n // and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n break;\r\n }\r\n }\r\n }\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 for (var _a = 0, _b = Object.values(initializedIdPromisesMap); _a < _b.length; _a++) {\r\n var idPromise = _b[_a];\r\n initializationPromisesToWaitFor.push(idPromise);\r\n }\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n Promise.all(initializationPromisesToWaitFor)\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n .then(function () {\r\n return gtagCore(GtagCommand.EVENT, idOrNameOrParams, gtagParams || {});\r\n })\r\n .catch(function (e) { return logger.error(e); });\r\n }\r\n else if (command === GtagCommand.CONFIG) {\r\n var initializationPromiseToWait = initializedIdPromisesMap[idOrNameOrParams] ||\r\n Promise.resolve();\r\n initializationPromiseToWait\r\n .then(function () {\r\n gtagCore(GtagCommand.CONFIG, idOrNameOrParams, gtagParams);\r\n })\r\n .catch(function (e) { return logger.error(e); });\r\n }\r\n else {\r\n // SET command.\r\n // Splitting calls for CONFIG and SET to make it clear which signature\r\n // Typescript is checking.\r\n gtagCore(GtagCommand.SET, idOrNameOrParams);\r\n }\r\n };\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 initializedIdPromisesMap Map of gaId to initialization promises.\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(initializedIdPromisesMap, 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, initializedIdPromisesMap);\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 Inc.\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[\"no-ga-id\" /* NO_GA_ID */] = \"\\\"\" + ANALYTICS_ID_FIELD + \"\\\" field is empty in \" +\r\n 'Firebase config. Firebase Analytics ' +\r\n 'requires this field to contain a valid measurement ID.',\r\n _a[\"already-exists\" /* ALREADY_EXISTS */] = 'A Firebase Analytics instance with the measurement ID ${id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each measurement ID.',\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',\r\n _a);\r\nvar ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Maps gaId to FID fetch promises.\r\n */\r\nvar initializedIdPromisesMap = {};\r\n/**\r\n * Name for window global data layer array used by GA: defaults to 'dataLayer'.\r\n */\r\nvar dataLayerName = 'dataLayer';\r\n/**\r\n * Name for window global gtag function used by GA: defaults to 'gtag'.\r\n */\r\nvar gtagName = 'gtag';\r\n/**\r\n * Reproduction of standard gtag function or reference to existing\r\n * gtag function on window object.\r\n */\r\nvar gtagCoreFunction;\r\n/**\r\n * Wrapper around gtag function that ensures FID is sent with all\r\n * relevant event and config calls.\r\n */\r\nvar wrappedGtagFunction;\r\n/**\r\n * Flag to ensure page initialization steps (creation or wrapping of\r\n * dataLayer and gtag script) are only run once per page load.\r\n */\r\nvar globalInitDone = false;\r\n/**\r\n * For testing\r\n */\r\nfunction resetGlobalVars(newGlobalInitDone, newGaInitializedPromise) {\r\n if (newGlobalInitDone === void 0) { newGlobalInitDone = false; }\r\n if (newGaInitializedPromise === void 0) { newGaInitializedPromise = {}; }\r\n globalInitDone = newGlobalInitDone;\r\n initializedIdPromisesMap = newGaInitializedPromise;\r\n dataLayerName = 'dataLayer';\r\n gtagName = 'gtag';\r\n}\r\n/**\r\n * For testing\r\n */\r\nfunction getGlobalVars() {\r\n return {\r\n initializedIdPromisesMap: initializedIdPromisesMap\r\n };\r\n}\r\n/**\r\n * This must be run before calling firebase.analytics() or it won't\r\n * have any effect.\r\n * @param options Custom gtag and dataLayer names.\r\n */\r\nfunction settings(options) {\r\n if (globalInitDone) {\r\n throw ERROR_FACTORY.create(\"already-initialized\" /* ALREADY_INITIALIZED */);\r\n }\r\n if (options.dataLayerName) {\r\n dataLayerName = options.dataLayerName;\r\n }\r\n if (options.gtagName) {\r\n gtagName = options.gtagName;\r\n }\r\n}\r\nfunction factory(app, installations) {\r\n var analyticsId = app.options[ANALYTICS_ID_FIELD];\r\n if (!analyticsId) {\r\n throw ERROR_FACTORY.create(\"no-ga-id\" /* NO_GA_ID */);\r\n }\r\n if (initializedIdPromisesMap[analyticsId] != null) {\r\n throw ERROR_FACTORY.create(\"already-exists\" /* ALREADY_EXISTS */, {\r\n id: analyticsId\r\n });\r\n }\r\n if (!globalInitDone) {\r\n // Steps here should only be done once per page: creation or wrapping\r\n // of dataLayer and global gtag function.\r\n // Detect if user has already put the gtag <script> tag on this page.\r\n if (!findGtagScriptOnPage()) {\r\n insertScriptTag(dataLayerName);\r\n }\r\n getOrCreateDataLayer(dataLayerName);\r\n var _a = wrapOrCreateGtag(initializedIdPromisesMap, dataLayerName, gtagName), wrappedGtag = _a.wrappedGtag, gtagCore = _a.gtagCore;\r\n wrappedGtagFunction = wrappedGtag;\r\n gtagCoreFunction = gtagCore;\r\n globalInitDone = true;\r\n }\r\n // Async but non-blocking.\r\n initializedIdPromisesMap[analyticsId] = initializeGAId(app, installations, gtagCoreFunction);\r\n var analyticsInstance = {\r\n app: app,\r\n logEvent: function (eventName, eventParams, options) {\r\n return logEvent(wrappedGtagFunction, analyticsId, eventName, eventParams, options);\r\n },\r\n setCurrentScreen: function (screenName, options) {\r\n return setCurrentScreen(wrappedGtagFunction, analyticsId, screenName, options);\r\n },\r\n setUserId: function (id, options) {\r\n return setUserId(wrappedGtagFunction, analyticsId, id, options);\r\n },\r\n setUserProperties: function (properties, options) {\r\n return setUserProperties(wrappedGtagFunction, analyticsId, properties, options);\r\n },\r\n setAnalyticsCollectionEnabled: function (enabled) {\r\n return setAnalyticsCollectionEnabled(analyticsId, enabled);\r\n }\r\n };\r\n return analyticsInstance;\r\n}\n\nvar name = \"@firebase/analytics\";\nvar version = \"0.3.3\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 Analytics.\r\n */\r\nvar ANALYTICS_TYPE = 'analytics';\r\nfunction registerAnalytics(instance) {\r\n instance.INTERNAL.registerComponent(new Component(ANALYTICS_TYPE, function (container) {\r\n // getImmediate for FirebaseApp will always succeed\r\n var app = container.getProvider('app').getImmediate();\r\n var installations = container\r\n .getProvider('installations')\r\n .getImmediate();\r\n return factory(app, installations);\r\n }, \"PUBLIC\" /* PUBLIC */).setServiceProps({\r\n settings: settings,\r\n EventName: EventName\r\n }));\r\n instance.INTERNAL.registerComponent(new Component('analytics-internal', internalFactory, \"PRIVATE\" /* PRIVATE */));\r\n instance.registerVersion(name, version);\r\n function internalFactory(container) {\r\n try {\r\n var analytics = container.getProvider(ANALYTICS_TYPE).getImmediate();\r\n return {\r\n logEvent: analytics.logEvent\r\n };\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"interop-component-reg-failed\" /* INTEROP_COMPONENT_REG_FAILED */, {\r\n reason: e\r\n });\r\n }\r\n }\r\n}\r\nregisterAnalytics(firebase);\n\nexport { factory, getGlobalVars, registerAnalytics, resetGlobalVars, settings };\n//# sourceMappingURL=index.esm.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar firebase = _interopDefault(require('@firebase/app'));\nrequire('@firebase/installations');\nvar tslib = require('tslib');\nvar util = require('@firebase/util');\nvar logger = require('@firebase/logger');\nvar component = require('@firebase/component');\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Implements the {@link RemoteConfigClient} abstraction with success response caching.\r\n *\r\n * <p>Comparable to the browser's Cache API for responses, but the Cache API requires a Service\r\n * Worker, which requires HTTPS, which would significantly complicate SDK installation. Also, the\r\n * Cache API doesn't support matching entries by time.\r\n */\r\nvar CachingClient = /** @class */ (function () {\r\n function CachingClient(client, storage, storageCache, logger) {\r\n this.client = client;\r\n this.storage = storage;\r\n this.storageCache = storageCache;\r\n this.logger = logger;\r\n }\r\n /**\r\n * Returns true if the age of the cached fetched configs is less than or equal to\r\n * {@link Settings#minimumFetchIntervalInSeconds}.\r\n *\r\n * <p>This is comparable to passing `headers = { 'Cache-Control': max-age <maxAge> }` to the\r\n * native Fetch API.\r\n *\r\n * <p>Visible for testing.\r\n */\r\n CachingClient.prototype.isCachedDataFresh = function (cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis) {\r\n // Cache can only be fresh if it's populated.\r\n if (!lastSuccessfulFetchTimestampMillis) {\r\n this.logger.debug('Config fetch cache check. Cache unpopulated.');\r\n return false;\r\n }\r\n // Calculates age of cache entry.\r\n var cacheAgeMillis = Date.now() - lastSuccessfulFetchTimestampMillis;\r\n var isCachedDataFresh = cacheAgeMillis <= cacheMaxAgeMillis;\r\n this.logger.debug('Config fetch cache check.' +\r\n (\" Cache age millis: \" + cacheAgeMillis + \".\") +\r\n (\" Cache max age millis (minimumFetchIntervalMillis setting): \" + cacheMaxAgeMillis + \".\") +\r\n (\" Is cache hit: \" + isCachedDataFresh + \".\"));\r\n return isCachedDataFresh;\r\n };\r\n CachingClient.prototype.fetch = function (request) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var _a, lastSuccessfulFetchTimestampMillis, lastSuccessfulFetchResponse, response, storageOperations;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n this.storage.getLastSuccessfulFetchTimestampMillis(),\r\n this.storage.getLastSuccessfulFetchResponse()\r\n ])];\r\n case 1:\r\n _a = _b.sent(), lastSuccessfulFetchTimestampMillis = _a[0], lastSuccessfulFetchResponse = _a[1];\r\n // Exits early on cache hit.\r\n if (lastSuccessfulFetchResponse &&\r\n this.isCachedDataFresh(request.cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis)) {\r\n return [2 /*return*/, lastSuccessfulFetchResponse];\r\n }\r\n // Deviates from pure decorator by not honoring a passed ETag since we don't have a public API\r\n // that allows the caller to pass an ETag.\r\n request.eTag =\r\n lastSuccessfulFetchResponse && lastSuccessfulFetchResponse.eTag;\r\n return [4 /*yield*/, this.client.fetch(request)];\r\n case 2:\r\n response = _b.sent();\r\n storageOperations = [\r\n // Uses write-through cache for consistency with synchronous public API.\r\n this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())\r\n ];\r\n if (response.status === 200) {\r\n // Caches response only if it has changed, ie non-304 responses.\r\n storageOperations.push(this.storage.setLastSuccessfulFetchResponse(response));\r\n }\r\n return [4 /*yield*/, Promise.all(storageOperations)];\r\n case 3:\r\n _b.sent();\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return CachingClient;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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[\"registration-window\" /* REGISTRATION_WINDOW */] = 'Undefined window object. This SDK only supports usage in a browser environment.',\r\n _a[\"registration-project-id\" /* REGISTRATION_PROJECT_ID */] = 'Undefined project identifier. Check Firebase app initialization.',\r\n _a[\"registration-api-key\" /* REGISTRATION_API_KEY */] = 'Undefined API key. Check Firebase app initialization.',\r\n _a[\"registration-app-id\" /* REGISTRATION_APP_ID */] = 'Undefined app identifier. Check Firebase app initialization.',\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_SET */] = 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n _a[\"storage-delete\" /* STORAGE_DELETE */] = 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-client-network\" /* FETCH_NETWORK */] = 'Fetch client failed to connect to a network. Check Internet connection.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-timeout\" /* FETCH_TIMEOUT */] = 'The config fetch request timed out. ' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.',\r\n _a[\"fetch-throttle\" /* FETCH_THROTTLE */] = 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n _a[\"fetch-client-parse\" /* FETCH_PARSE */] = 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n _a[\"fetch-status\" /* FETCH_STATUS */] = 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n _a);\r\nvar ERROR_FACTORY = new util.ErrorFactory('remoteconfig' /* service */, 'Remote Config' /* service name */, ERROR_DESCRIPTION_MAP);\r\n// Note how this is like typeof/instanceof, but for ErrorCode.\r\nfunction hasErrorCode(e, errorCode) {\r\n return e instanceof util.FirebaseError && e.code.indexOf(errorCode) !== -1;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Attempts to get the most accurate browser language setting.\r\n *\r\n * <p>Adapted from getUserLanguage in packages/auth/src/utils.js for TypeScript.\r\n *\r\n * <p>Defers default language specification to server logic for consistency.\r\n *\r\n * @param navigatorLanguage Enables tests to override read-only {@link NavigatorLanguage}.\r\n */\r\nfunction getUserLanguage(navigatorLanguage) {\r\n if (navigatorLanguage === void 0) { navigatorLanguage = navigator; }\r\n return (\r\n // Most reliable, but only supported in Chrome/Firefox.\r\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\r\n // Supported in most browsers, but returns the language of the browser\r\n // UI, not the language set in browser settings.\r\n navigatorLanguage.language\r\n // Polyfill otherwise.\r\n );\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Implements the Client abstraction for the Remote Config REST API.\r\n */\r\nvar RestClient = /** @class */ (function () {\r\n function RestClient(firebaseInstallations, sdkVersion, namespace, projectId, apiKey, appId) {\r\n this.firebaseInstallations = firebaseInstallations;\r\n this.sdkVersion = sdkVersion;\r\n this.namespace = namespace;\r\n this.projectId = projectId;\r\n this.apiKey = apiKey;\r\n this.appId = appId;\r\n }\r\n /**\r\n * Fetches from the Remote Config REST API.\r\n *\r\n * @throws a {@link ErrorCode.FETCH_NETWORK} error if {@link GlobalFetch#fetch} can't\r\n * connect to the network.\r\n * @throws a {@link ErrorCode.FETCH_PARSE} error if {@link Response#json} can't parse the\r\n * fetch response.\r\n * @throws a {@link ErrorCode.FETCH_STATUS} error if the service returns an HTTP error status.\r\n */\r\n RestClient.prototype.fetch = function (request) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var _a, installationId, installationToken, urlBase, url, headers, requestBody, options, fetchPromise, timeoutPromise, response, originalError_1, errorCode, status, responseEtag, config, state, responseBody, originalError_2;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n this.firebaseInstallations.getId(),\r\n this.firebaseInstallations.getToken()\r\n ])];\r\n case 1:\r\n _a = _b.sent(), installationId = _a[0], installationToken = _a[1];\r\n urlBase = window.FIREBASE_REMOTE_CONFIG_URL_BASE ||\r\n 'https://firebaseremoteconfig.googleapis.com';\r\n url = urlBase + \"/v1/projects/\" + this.projectId + \"/namespaces/\" + this.namespace + \":fetch?key=\" + this.apiKey;\r\n headers = {\r\n 'Content-Type': 'application/json',\r\n 'Content-Encoding': 'gzip',\r\n // Deviates from pure decorator by not passing max-age header since we don't currently have\r\n // service behavior using that header.\r\n 'If-None-Match': request.eTag || '*'\r\n };\r\n requestBody = {\r\n /* eslint-disable camelcase */\r\n sdk_version: this.sdkVersion,\r\n app_instance_id: installationId,\r\n app_instance_id_token: installationToken,\r\n app_id: this.appId,\r\n language_code: getUserLanguage()\r\n /* eslint-enable camelcase */\r\n };\r\n options = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(requestBody)\r\n };\r\n fetchPromise = fetch(url, options);\r\n timeoutPromise = new Promise(function (_resolve, reject) {\r\n // Maps async event listener to Promise API.\r\n request.signal.addEventListener(function () {\r\n // Emulates https://heycam.github.io/webidl/#aborterror\r\n var error = new Error('The operation was aborted.');\r\n error.name = 'AbortError';\r\n reject(error);\r\n });\r\n });\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, Promise.race([fetchPromise, timeoutPromise])];\r\n case 3:\r\n _b.sent();\r\n return [4 /*yield*/, fetchPromise];\r\n case 4:\r\n response = _b.sent();\r\n return [3 /*break*/, 6];\r\n case 5:\r\n originalError_1 = _b.sent();\r\n errorCode = \"fetch-client-network\" /* FETCH_NETWORK */;\r\n if (originalError_1.name === 'AbortError') {\r\n errorCode = \"fetch-timeout\" /* FETCH_TIMEOUT */;\r\n }\r\n throw ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError_1.message\r\n });\r\n case 6:\r\n status = response.status;\r\n responseEtag = response.headers.get('ETag') || undefined;\r\n if (!(response.status === 200)) return [3 /*break*/, 11];\r\n responseBody = void 0;\r\n _b.label = 7;\r\n case 7:\r\n _b.trys.push([7, 9, , 10]);\r\n return [4 /*yield*/, response.json()];\r\n case 8:\r\n responseBody = _b.sent();\r\n return [3 /*break*/, 10];\r\n case 9:\r\n originalError_2 = _b.sent();\r\n throw ERROR_FACTORY.create(\"fetch-client-parse\" /* FETCH_PARSE */, {\r\n originalErrorMessage: originalError_2.message\r\n });\r\n case 10:\r\n config = responseBody['entries'];\r\n state = responseBody['state'];\r\n _b.label = 11;\r\n case 11:\r\n // Normalizes based on legacy state.\r\n if (state === 'INSTANCE_STATE_UNSPECIFIED') {\r\n status = 500;\r\n }\r\n else if (state === 'NO_CHANGE') {\r\n status = 304;\r\n }\r\n else if (state === 'NO_TEMPLATE' || state === 'EMPTY_CONFIG') {\r\n // These cases can be fixed remotely, so normalize to safe value.\r\n config = {};\r\n }\r\n // Normalize to exception-based control flow for non-success cases.\r\n // Encapsulates HTTP specifics in this class as much as possible. Status is still the best for\r\n // differentiating success states (200 from 304; the state body param is undefined in a\r\n // standard 304).\r\n if (status !== 304 && status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status\" /* FETCH_STATUS */, {\r\n httpStatus: status\r\n });\r\n }\r\n return [2 /*return*/, { status: status, eTag: responseEtag, config: config }];\r\n }\r\n });\r\n });\r\n };\r\n return RestClient;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Shims a minimal AbortSignal.\r\n *\r\n * <p>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 RemoteConfigAbortSignal = /** @class */ (function () {\r\n function RemoteConfigAbortSignal() {\r\n this.listeners = [];\r\n }\r\n RemoteConfigAbortSignal.prototype.addEventListener = function (listener) {\r\n this.listeners.push(listener);\r\n };\r\n RemoteConfigAbortSignal.prototype.abort = function () {\r\n this.listeners.forEach(function (listener) { return listener(); });\r\n };\r\n return RemoteConfigAbortSignal;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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_VALUE_FOR_BOOLEAN = false;\r\nvar DEFAULT_VALUE_FOR_STRING = '';\r\nvar DEFAULT_VALUE_FOR_NUMBER = 0;\r\nvar BOOLEAN_TRUTHY_VALUES = ['1', 'true', 't', 'yes', 'y', 'on'];\r\nvar Value = /** @class */ (function () {\r\n function Value(_source, _value) {\r\n if (_value === void 0) { _value = DEFAULT_VALUE_FOR_STRING; }\r\n this._source = _source;\r\n this._value = _value;\r\n }\r\n Value.prototype.asString = function () {\r\n return this._value;\r\n };\r\n Value.prototype.asBoolean = function () {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_BOOLEAN;\r\n }\r\n return BOOLEAN_TRUTHY_VALUES.indexOf(this._value.toLowerCase()) >= 0;\r\n };\r\n Value.prototype.asNumber = function () {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n var num = Number(this._value);\r\n if (isNaN(num)) {\r\n num = DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n return num;\r\n };\r\n Value.prototype.getSource = function () {\r\n return this._source;\r\n };\r\n return Value;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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_FETCH_TIMEOUT_MILLIS = 60 * 1000; // One minute\r\nvar DEFAULT_CACHE_MAX_AGE_MILLIS = 12 * 60 * 60 * 1000; // Twelve hours.\r\n/**\r\n * Encapsulates business logic mapping network and storage dependencies to the public SDK API.\r\n *\r\n * See {@link https://github.com/FirebasePrivate/firebase-js-sdk/blob/master/packages/firebase/index.d.ts|interface documentation} for method descriptions.\r\n */\r\nvar RemoteConfig = /** @class */ (function () {\r\n function RemoteConfig(\r\n // Required by FirebaseServiceFactory interface.\r\n app, \r\n // JS doesn't support private yet\r\n // (https://github.com/tc39/proposal-class-fields#private-fields), so we hint using an\r\n // underscore prefix.\r\n _client, _storageCache, _storage, _logger) {\r\n this.app = app;\r\n this._client = _client;\r\n this._storageCache = _storageCache;\r\n this._storage = _storage;\r\n this._logger = _logger;\r\n // Tracks completion of initialization promise.\r\n this._isInitializationComplete = false;\r\n this.settings = {\r\n fetchTimeoutMillis: DEFAULT_FETCH_TIMEOUT_MILLIS,\r\n minimumFetchIntervalMillis: DEFAULT_CACHE_MAX_AGE_MILLIS\r\n };\r\n this.defaultConfig = {};\r\n }\r\n // Based on packages/firestore/src/util/log.ts but not static because we need per-instance levels\r\n // to differentiate 2p and 3p use-cases.\r\n RemoteConfig.prototype.setLogLevel = function (logLevel) {\r\n switch (logLevel) {\r\n case 'debug':\r\n this._logger.logLevel = logger.LogLevel.DEBUG;\r\n break;\r\n case 'silent':\r\n this._logger.logLevel = logger.LogLevel.SILENT;\r\n break;\r\n default:\r\n this._logger.logLevel = logger.LogLevel.ERROR;\r\n }\r\n };\r\n Object.defineProperty(RemoteConfig.prototype, \"fetchTimeMillis\", {\r\n get: function () {\r\n return this._storageCache.getLastSuccessfulFetchTimestampMillis() || -1;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(RemoteConfig.prototype, \"lastFetchStatus\", {\r\n get: function () {\r\n return this._storageCache.getLastFetchStatus() || 'no-fetch-yet';\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n RemoteConfig.prototype.activate = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var _a, lastSuccessfulFetchResponse, activeConfigEtag;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n this._storage.getLastSuccessfulFetchResponse(),\r\n this._storage.getActiveConfigEtag()\r\n ])];\r\n case 1:\r\n _a = _b.sent(), lastSuccessfulFetchResponse = _a[0], activeConfigEtag = _a[1];\r\n if (!lastSuccessfulFetchResponse ||\r\n !lastSuccessfulFetchResponse.config ||\r\n !lastSuccessfulFetchResponse.eTag ||\r\n lastSuccessfulFetchResponse.eTag === activeConfigEtag) {\r\n // Either there is no successful fetched config, or is the same as current active\r\n // config.\r\n return [2 /*return*/, false];\r\n }\r\n return [4 /*yield*/, Promise.all([\r\n this._storageCache.setActiveConfig(lastSuccessfulFetchResponse.config),\r\n this._storage.setActiveConfigEtag(lastSuccessfulFetchResponse.eTag)\r\n ])];\r\n case 2:\r\n _b.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n RemoteConfig.prototype.ensureInitialized = function () {\r\n var _this = this;\r\n if (!this._initializePromise) {\r\n this._initializePromise = this._storageCache\r\n .loadFromStorage()\r\n .then(function () {\r\n _this._isInitializationComplete = true;\r\n });\r\n }\r\n return this._initializePromise;\r\n };\r\n /**\r\n * @throws a {@link ErrorCode.FETCH_CLIENT_TIMEOUT} if the request takes longer than\r\n * {@link Settings.fetchTimeoutInSeconds} or\r\n * {@link DEFAULT_FETCH_TIMEOUT_SECONDS}.\r\n */\r\n RemoteConfig.prototype.fetch = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var abortSignal, e_1, lastFetchStatus;\r\n var _this = this;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n abortSignal = new RemoteConfigAbortSignal();\r\n setTimeout(function () { return tslib.__awaiter(_this, void 0, void 0, function () {\r\n return tslib.__generator(this, function (_a) {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n abortSignal.abort();\r\n return [2 /*return*/];\r\n });\r\n }); }, this.settings.fetchTimeoutMillis);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 6]);\r\n return [4 /*yield*/, this._client.fetch({\r\n cacheMaxAgeMillis: this.settings.minimumFetchIntervalMillis,\r\n signal: abortSignal\r\n })];\r\n case 2:\r\n _a.sent();\r\n return [4 /*yield*/, this._storageCache.setLastFetchStatus('success')];\r\n case 3:\r\n _a.sent();\r\n return [3 /*break*/, 6];\r\n case 4:\r\n e_1 = _a.sent();\r\n lastFetchStatus = hasErrorCode(e_1, \"fetch-throttle\" /* FETCH_THROTTLE */)\r\n ? 'throttle'\r\n : 'failure';\r\n return [4 /*yield*/, this._storageCache.setLastFetchStatus(lastFetchStatus)];\r\n case 5:\r\n _a.sent();\r\n throw e_1;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n RemoteConfig.prototype.fetchAndActivate = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.fetch()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, this.activate()];\r\n }\r\n });\r\n });\r\n };\r\n RemoteConfig.prototype.getAll = function () {\r\n var _this = this;\r\n return getAllKeys(this._storageCache.getActiveConfig(), this.defaultConfig).reduce(function (allConfigs, key) {\r\n allConfigs[key] = _this.getValue(key);\r\n return allConfigs;\r\n }, {});\r\n };\r\n RemoteConfig.prototype.getBoolean = function (key) {\r\n return this.getValue(key).asBoolean();\r\n };\r\n RemoteConfig.prototype.getNumber = function (key) {\r\n return this.getValue(key).asNumber();\r\n };\r\n RemoteConfig.prototype.getString = function (key) {\r\n return this.getValue(key).asString();\r\n };\r\n RemoteConfig.prototype.getValue = function (key) {\r\n if (!this._isInitializationComplete) {\r\n this._logger.debug(\"A value was requested for key \\\"\" + key + \"\\\" before SDK initialization completed.\" +\r\n ' Await on ensureInitialized if the intent was to get a previously activated value.');\r\n }\r\n var activeConfig = this._storageCache.getActiveConfig();\r\n if (activeConfig && activeConfig[key] !== undefined) {\r\n return new Value('remote', activeConfig[key]);\r\n }\r\n else if (this.defaultConfig && this.defaultConfig[key] !== undefined) {\r\n return new Value('default', String(this.defaultConfig[key]));\r\n }\r\n this._logger.debug(\"Returning static value for key \\\"\" + key + \"\\\".\" +\r\n ' Define a default or remote value if this is unintentional.');\r\n return new Value('static');\r\n };\r\n return RemoteConfig;\r\n}());\r\n/**\r\n * Dedupes and returns an array of all the keys of the received objects.\r\n */\r\nfunction getAllKeys(obj1, obj2) {\r\n if (obj1 === void 0) { obj1 = {}; }\r\n if (obj2 === void 0) { obj2 = {}; }\r\n return Object.keys(tslib.__assign(tslib.__assign({}, obj1), obj2));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Converts an error event associated with a {@link IDBRequest} to a {@link FirebaseError}.\r\n */\r\nfunction toFirebaseError(event, errorCode) {\r\n var originalError = event.target.error || undefined;\r\n return ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError && originalError.message\r\n });\r\n}\r\n/**\r\n * A general-purpose store keyed by app + namespace + {@link\r\n * ProjectNamespaceKeyFieldValue}.\r\n *\r\n * <p>The Remote Config SDK can be used with multiple app installations, and each app can interact\r\n * with multiple namespaces, so this store uses app (ID + name) and namespace as common parent keys\r\n * for a set of key-value pairs. See {@link Storage#createCompositeKey}.\r\n *\r\n * <p>Visible for testing.\r\n */\r\nvar APP_NAMESPACE_STORE = 'app_namespace_store';\r\nvar DB_NAME = 'firebase_remote_config';\r\nvar DB_VERSION = 1;\r\n// Visible for testing.\r\nfunction openDatabase() {\r\n return new Promise(function (resolve, reject) {\r\n var request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onerror = function (event) {\r\n reject(toFirebaseError(event, \"storage-open\" /* STORAGE_OPEN */));\r\n };\r\n request.onsuccess = function (event) {\r\n resolve(event.target.result);\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(APP_NAMESPACE_STORE, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n });\r\n}\r\n/**\r\n * Abstracts data persistence.\r\n */\r\nvar Storage = /** @class */ (function () {\r\n /**\r\n * @param appId enables storage segmentation by app (ID + name).\r\n * @param appName enables storage segmentation by app (ID + name).\r\n * @param namespace enables storage segmentation by namespace.\r\n */\r\n function Storage(appId, appName, namespace, openDbPromise) {\r\n if (openDbPromise === void 0) { openDbPromise = openDatabase(); }\r\n this.appId = appId;\r\n this.appName = appName;\r\n this.namespace = namespace;\r\n this.openDbPromise = openDbPromise;\r\n }\r\n Storage.prototype.getLastFetchStatus = function () {\r\n return this.get('last_fetch_status');\r\n };\r\n Storage.prototype.setLastFetchStatus = function (status) {\r\n return this.set('last_fetch_status', status);\r\n };\r\n // This is comparable to a cache entry timestamp. If we need to expire other data, we could\r\n // consider adding timestamp to all storage records and an optional max age arg to getters.\r\n Storage.prototype.getLastSuccessfulFetchTimestampMillis = function () {\r\n return this.get('last_successful_fetch_timestamp_millis');\r\n };\r\n Storage.prototype.setLastSuccessfulFetchTimestampMillis = function (timestamp) {\r\n return this.set('last_successful_fetch_timestamp_millis', timestamp);\r\n };\r\n Storage.prototype.getLastSuccessfulFetchResponse = function () {\r\n return this.get('last_successful_fetch_response');\r\n };\r\n Storage.prototype.setLastSuccessfulFetchResponse = function (response) {\r\n return this.set('last_successful_fetch_response', response);\r\n };\r\n Storage.prototype.getActiveConfig = function () {\r\n return this.get('active_config');\r\n };\r\n Storage.prototype.setActiveConfig = function (config) {\r\n return this.set('active_config', config);\r\n };\r\n Storage.prototype.getActiveConfigEtag = function () {\r\n return this.get('active_config_etag');\r\n };\r\n Storage.prototype.setActiveConfigEtag = function (etag) {\r\n return this.set('active_config_etag', etag);\r\n };\r\n Storage.prototype.getThrottleMetadata = function () {\r\n return this.get('throttle_metadata');\r\n };\r\n Storage.prototype.setThrottleMetadata = function (metadata) {\r\n return this.set('throttle_metadata', metadata);\r\n };\r\n Storage.prototype.deleteThrottleMetadata = function () {\r\n return this.delete('throttle_metadata');\r\n };\r\n Storage.prototype.get = function (key) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db;\r\n var _this = this;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.openDbPromise];\r\n case 1:\r\n db = _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var transaction = db.transaction([APP_NAMESPACE_STORE], 'readonly');\r\n var objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n var compositeKey = _this.createCompositeKey(key);\r\n try {\r\n var request = objectStore.get(compositeKey);\r\n request.onerror = function (event) {\r\n reject(toFirebaseError(event, \"storage-get\" /* STORAGE_GET */));\r\n };\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 }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Storage.prototype.set = function (key, value) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db;\r\n var _this = this;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.openDbPromise];\r\n case 1:\r\n db = _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n var objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n var compositeKey = _this.createCompositeKey(key);\r\n try {\r\n var request = objectStore.put({\r\n compositeKey: compositeKey,\r\n value: value\r\n });\r\n request.onerror = function (event) {\r\n reject(toFirebaseError(event, \"storage-set\" /* STORAGE_SET */));\r\n };\r\n request.onsuccess = function () {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* STORAGE_SET */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Storage.prototype.delete = function (key) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var db;\r\n var _this = this;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.openDbPromise];\r\n case 1:\r\n db = _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n var objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n var compositeKey = _this.createCompositeKey(key);\r\n try {\r\n var request = objectStore.delete(compositeKey);\r\n request.onerror = function (event) {\r\n reject(toFirebaseError(event, \"storage-delete\" /* STORAGE_DELETE */));\r\n };\r\n request.onsuccess = function () {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-delete\" /* STORAGE_DELETE */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n // Facilitates composite key functionality (which is unsupported in IE).\r\n Storage.prototype.createCompositeKey = function (key) {\r\n return [this.appId, this.appName, this.namespace, key].join();\r\n };\r\n return Storage;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 memory cache layer over storage to support the SDK's synchronous read requirements.\r\n */\r\nvar StorageCache = /** @class */ (function () {\r\n function StorageCache(storage) {\r\n this.storage = storage;\r\n }\r\n /**\r\n * Memory-only getters\r\n */\r\n StorageCache.prototype.getLastFetchStatus = function () {\r\n return this.lastFetchStatus;\r\n };\r\n StorageCache.prototype.getLastSuccessfulFetchTimestampMillis = function () {\r\n return this.lastSuccessfulFetchTimestampMillis;\r\n };\r\n StorageCache.prototype.getActiveConfig = function () {\r\n return this.activeConfig;\r\n };\r\n /**\r\n * Read-ahead getter\r\n */\r\n StorageCache.prototype.loadFromStorage = function () {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var lastFetchStatusPromise, lastSuccessfulFetchTimestampMillisPromise, activeConfigPromise, lastFetchStatus, lastSuccessfulFetchTimestampMillis, activeConfig;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n lastFetchStatusPromise = this.storage.getLastFetchStatus();\r\n lastSuccessfulFetchTimestampMillisPromise = this.storage.getLastSuccessfulFetchTimestampMillis();\r\n activeConfigPromise = this.storage.getActiveConfig();\r\n return [4 /*yield*/, lastFetchStatusPromise];\r\n case 1:\r\n lastFetchStatus = _a.sent();\r\n if (lastFetchStatus) {\r\n this.lastFetchStatus = lastFetchStatus;\r\n }\r\n return [4 /*yield*/, lastSuccessfulFetchTimestampMillisPromise];\r\n case 2:\r\n lastSuccessfulFetchTimestampMillis = _a.sent();\r\n if (lastSuccessfulFetchTimestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis = lastSuccessfulFetchTimestampMillis;\r\n }\r\n return [4 /*yield*/, activeConfigPromise];\r\n case 3:\r\n activeConfig = _a.sent();\r\n if (activeConfig) {\r\n this.activeConfig = activeConfig;\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Write-through setters\r\n */\r\n StorageCache.prototype.setLastFetchStatus = function (status) {\r\n this.lastFetchStatus = status;\r\n return this.storage.setLastFetchStatus(status);\r\n };\r\n StorageCache.prototype.setLastSuccessfulFetchTimestampMillis = function (timestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis = timestampMillis;\r\n return this.storage.setLastSuccessfulFetchTimestampMillis(timestampMillis);\r\n };\r\n StorageCache.prototype.setActiveConfig = function (activeConfig) {\r\n this.activeConfig = activeConfig;\r\n return this.storage.setActiveConfig(activeConfig);\r\n };\r\n return StorageCache;\r\n}());\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 amount of milliseconds to exponentially increase.\r\n */\r\nvar INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nvar BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n * <p>Visible for testing\r\n */\r\nvar MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n * <p>Visible for testing\r\n */\r\nvar RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n var currBaseValue = INTERVAL_MILLIS * Math.pow(BACKOFF_FACTOR, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n var randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 * Supports waiting on a backoff by:\r\n *\r\n * <ul>\r\n * <li>Promisifying setTimeout, so we can set a timeout in our Promise chain</li>\r\n * <li>Listening on a signal bus for abort events, just like the Fetch API</li>\r\n * <li>Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.</li>\r\n * </ul>\r\n *\r\n * <p>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 util.FirebaseError)) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n var httpStatus = Number(e['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Decorates a Client with retry logic.\r\n *\r\n * <p>Comparable to CachingClient, but uses backoff logic instead of cache max age and doesn't cache\r\n * responses (because the SDK has no use for error responses).\r\n */\r\nvar RetryingClient = /** @class */ (function () {\r\n function RetryingClient(client, storage) {\r\n this.client = client;\r\n this.storage = storage;\r\n }\r\n RetryingClient.prototype.fetch = function (request) {\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var throttleMetadata;\r\n return tslib.__generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.storage.getThrottleMetadata()];\r\n case 1:\r\n throttleMetadata = (_a.sent()) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n return [2 /*return*/, this.attemptFetch(request, throttleMetadata)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * A recursive helper for attempting a fetch request repeatedly.\r\n *\r\n * @throws any non-retriable errors.\r\n */\r\n RetryingClient.prototype.attemptFetch = function (request, _a) {\r\n var throttleEndTimeMillis = _a.throttleEndTimeMillis, backoffCount = _a.backoffCount;\r\n return tslib.__awaiter(this, void 0, void 0, function () {\r\n var response, e_1, throttleMetadata;\r\n return tslib.__generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: \r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n return [4 /*yield*/, setAbortableTimeout(request.signal, throttleEndTimeMillis)];\r\n case 1:\r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 5, , 7]);\r\n return [4 /*yield*/, this.client.fetch(request)];\r\n case 3:\r\n response = _b.sent();\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n return [4 /*yield*/, this.storage.deleteThrottleMetadata()];\r\n case 4:\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n _b.sent();\r\n return [2 /*return*/, response];\r\n case 5:\r\n e_1 = _b.sent();\r\n if (!isRetriableError(e_1)) {\r\n throw e_1;\r\n }\r\n throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + calculateBackoffMillis(backoffCount),\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n return [4 /*yield*/, this.storage.setThrottleMetadata(throttleMetadata)];\r\n case 6:\r\n // Persists state.\r\n _b.sent();\r\n return [2 /*return*/, this.attemptFetch(request, throttleMetadata)];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return RetryingClient;\r\n}());\n\nvar name = \"@firebase/remote-config\";\nvar version = \"0.1.19\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google Inc.\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 registerRemoteConfig(firebaseInstance) {\r\n firebaseInstance.INTERNAL.registerComponent(new component.Component('remoteConfig', remoteConfigFactory, \"PUBLIC\" /* PUBLIC */).setMultipleInstances(true));\r\n firebaseInstance.registerVersion(name, version);\r\n function remoteConfigFactory(container, namespace) {\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 rc has `import '@firebase/installations'`\r\n var installations = container.getProvider('installations').getImmediate();\r\n // Guards against the SDK being used in non-browser environments.\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"registration-window\" /* REGISTRATION_WINDOW */);\r\n }\r\n // Normalizes optional inputs.\r\n var _a = app.options, projectId = _a.projectId, apiKey = _a.apiKey, appId = _a.appId;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"registration-project-id\" /* REGISTRATION_PROJECT_ID */);\r\n }\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"registration-api-key\" /* REGISTRATION_API_KEY */);\r\n }\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"registration-app-id\" /* REGISTRATION_APP_ID */);\r\n }\r\n namespace = namespace || 'firebase';\r\n var storage = new Storage(appId, app.name, namespace);\r\n var storageCache = new StorageCache(storage);\r\n var logger$1 = new logger.Logger(name);\r\n // Sets ERROR as the default log level.\r\n // See RemoteConfig#setLogLevel for corresponding normalization to ERROR log level.\r\n logger$1.logLevel = logger.LogLevel.ERROR;\r\n var restClient = new RestClient(installations, \r\n // Uses the JS SDK version, by which the RC package version can be deduced, if necessary.\r\n firebaseInstance.SDK_VERSION, namespace, projectId, apiKey, appId);\r\n var retryingClient = new RetryingClient(restClient, storage);\r\n var cachingClient = new CachingClient(retryingClient, storage, storageCache, logger$1);\r\n var remoteConfigInstance = new RemoteConfig(app, cachingClient, storageCache, storage, logger$1);\r\n // Starts warming cache.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n remoteConfigInstance.ensureInitialized();\r\n return remoteConfigInstance;\r\n }\r\n}\r\nregisterRemoteConfig(firebase);\n\nexports.registerRemoteConfig = registerRemoteConfig;\n//# sourceMappingURL=index.cjs.js.map\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin.vue?vue&type=style&index=0&id=4582ce21&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin.vue?vue&type=style&index=0&id=4582ce21&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./firstpage.vue?vue&type=style&index=0&id=06e930f5&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./firstpage.vue?vue&type=style&index=0&id=06e930f5&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signup.vue?vue&type=style&index=0&id=f9e59cb6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signup.vue?vue&type=style&index=0&id=f9e59cb6&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofile.vue?vue&type=style&index=0&id=fbed3cf8&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofile.vue?vue&type=style&index=0&id=fbed3cf8&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofilepicture.vue?vue&type=style&index=0&id=33f83056&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofilepicture.vue?vue&type=style&index=0&id=33f83056&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./phoneverify.vue?vue&type=style&index=0&id=504141de&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./phoneverify.vue?vue&type=style&index=0&id=504141de&scoped=true&lang=css&\"","export default __webpack_public_path__ + \"images/googleimage.png\";","export default __webpack_public_path__ + \"images/appleimage.png\";","var map = {\n\t\"./af\": 69,\n\t\"./af.js\": 69,\n\t\"./ar\": 70,\n\t\"./ar-dz\": 71,\n\t\"./ar-dz.js\": 71,\n\t\"./ar-kw\": 72,\n\t\"./ar-kw.js\": 72,\n\t\"./ar-ly\": 73,\n\t\"./ar-ly.js\": 73,\n\t\"./ar-ma\": 74,\n\t\"./ar-ma.js\": 74,\n\t\"./ar-sa\": 75,\n\t\"./ar-sa.js\": 75,\n\t\"./ar-tn\": 76,\n\t\"./ar-tn.js\": 76,\n\t\"./ar.js\": 70,\n\t\"./az\": 77,\n\t\"./az.js\": 77,\n\t\"./be\": 78,\n\t\"./be.js\": 78,\n\t\"./bg\": 79,\n\t\"./bg.js\": 79,\n\t\"./bm\": 80,\n\t\"./bm.js\": 80,\n\t\"./bn\": 81,\n\t\"./bn.js\": 81,\n\t\"./bo\": 82,\n\t\"./bo.js\": 82,\n\t\"./br\": 83,\n\t\"./br.js\": 83,\n\t\"./bs\": 84,\n\t\"./bs.js\": 84,\n\t\"./ca\": 85,\n\t\"./ca.js\": 85,\n\t\"./cs\": 86,\n\t\"./cs.js\": 86,\n\t\"./cv\": 87,\n\t\"./cv.js\": 87,\n\t\"./cy\": 88,\n\t\"./cy.js\": 88,\n\t\"./da\": 89,\n\t\"./da.js\": 89,\n\t\"./de\": 90,\n\t\"./de-at\": 91,\n\t\"./de-at.js\": 91,\n\t\"./de-ch\": 92,\n\t\"./de-ch.js\": 92,\n\t\"./de.js\": 90,\n\t\"./dv\": 93,\n\t\"./dv.js\": 93,\n\t\"./el\": 94,\n\t\"./el.js\": 94,\n\t\"./en-SG\": 95,\n\t\"./en-SG.js\": 95,\n\t\"./en-au\": 96,\n\t\"./en-au.js\": 96,\n\t\"./en-ca\": 97,\n\t\"./en-ca.js\": 97,\n\t\"./en-gb\": 98,\n\t\"./en-gb.js\": 98,\n\t\"./en-ie\": 99,\n\t\"./en-ie.js\": 99,\n\t\"./en-il\": 100,\n\t\"./en-il.js\": 100,\n\t\"./en-nz\": 101,\n\t\"./en-nz.js\": 101,\n\t\"./eo\": 102,\n\t\"./eo.js\": 102,\n\t\"./es\": 103,\n\t\"./es-do\": 104,\n\t\"./es-do.js\": 104,\n\t\"./es-us\": 105,\n\t\"./es-us.js\": 105,\n\t\"./es.js\": 103,\n\t\"./et\": 106,\n\t\"./et.js\": 106,\n\t\"./eu\": 107,\n\t\"./eu.js\": 107,\n\t\"./fa\": 108,\n\t\"./fa.js\": 108,\n\t\"./fi\": 109,\n\t\"./fi.js\": 109,\n\t\"./fo\": 110,\n\t\"./fo.js\": 110,\n\t\"./fr\": 111,\n\t\"./fr-ca\": 112,\n\t\"./fr-ca.js\": 112,\n\t\"./fr-ch\": 113,\n\t\"./fr-ch.js\": 113,\n\t\"./fr.js\": 111,\n\t\"./fy\": 114,\n\t\"./fy.js\": 114,\n\t\"./ga\": 115,\n\t\"./ga.js\": 115,\n\t\"./gd\": 116,\n\t\"./gd.js\": 116,\n\t\"./gl\": 117,\n\t\"./gl.js\": 117,\n\t\"./gom-latn\": 118,\n\t\"./gom-latn.js\": 118,\n\t\"./gu\": 119,\n\t\"./gu.js\": 119,\n\t\"./he\": 120,\n\t\"./he.js\": 120,\n\t\"./hi\": 121,\n\t\"./hi.js\": 121,\n\t\"./hr\": 122,\n\t\"./hr.js\": 122,\n\t\"./hu\": 123,\n\t\"./hu.js\": 123,\n\t\"./hy-am\": 124,\n\t\"./hy-am.js\": 124,\n\t\"./id\": 125,\n\t\"./id.js\": 125,\n\t\"./is\": 126,\n\t\"./is.js\": 126,\n\t\"./it\": 127,\n\t\"./it-ch\": 128,\n\t\"./it-ch.js\": 128,\n\t\"./it.js\": 127,\n\t\"./ja\": 129,\n\t\"./ja.js\": 129,\n\t\"./jv\": 130,\n\t\"./jv.js\": 130,\n\t\"./ka\": 131,\n\t\"./ka.js\": 131,\n\t\"./kk\": 132,\n\t\"./kk.js\": 132,\n\t\"./km\": 133,\n\t\"./km.js\": 133,\n\t\"./kn\": 134,\n\t\"./kn.js\": 134,\n\t\"./ko\": 135,\n\t\"./ko.js\": 135,\n\t\"./ku\": 136,\n\t\"./ku.js\": 136,\n\t\"./ky\": 137,\n\t\"./ky.js\": 137,\n\t\"./lb\": 138,\n\t\"./lb.js\": 138,\n\t\"./lo\": 139,\n\t\"./lo.js\": 139,\n\t\"./lt\": 140,\n\t\"./lt.js\": 140,\n\t\"./lv\": 141,\n\t\"./lv.js\": 141,\n\t\"./me\": 142,\n\t\"./me.js\": 142,\n\t\"./mi\": 143,\n\t\"./mi.js\": 143,\n\t\"./mk\": 144,\n\t\"./mk.js\": 144,\n\t\"./ml\": 145,\n\t\"./ml.js\": 145,\n\t\"./mn\": 146,\n\t\"./mn.js\": 146,\n\t\"./mr\": 147,\n\t\"./mr.js\": 147,\n\t\"./ms\": 148,\n\t\"./ms-my\": 149,\n\t\"./ms-my.js\": 149,\n\t\"./ms.js\": 148,\n\t\"./mt\": 150,\n\t\"./mt.js\": 150,\n\t\"./my\": 151,\n\t\"./my.js\": 151,\n\t\"./nb\": 152,\n\t\"./nb.js\": 152,\n\t\"./ne\": 153,\n\t\"./ne.js\": 153,\n\t\"./nl\": 154,\n\t\"./nl-be\": 155,\n\t\"./nl-be.js\": 155,\n\t\"./nl.js\": 154,\n\t\"./nn\": 156,\n\t\"./nn.js\": 156,\n\t\"./pa-in\": 157,\n\t\"./pa-in.js\": 157,\n\t\"./pl\": 158,\n\t\"./pl.js\": 158,\n\t\"./pt\": 159,\n\t\"./pt-br\": 160,\n\t\"./pt-br.js\": 160,\n\t\"./pt.js\": 159,\n\t\"./ro\": 161,\n\t\"./ro.js\": 161,\n\t\"./ru\": 162,\n\t\"./ru.js\": 162,\n\t\"./sd\": 163,\n\t\"./sd.js\": 163,\n\t\"./se\": 164,\n\t\"./se.js\": 164,\n\t\"./si\": 165,\n\t\"./si.js\": 165,\n\t\"./sk\": 166,\n\t\"./sk.js\": 166,\n\t\"./sl\": 167,\n\t\"./sl.js\": 167,\n\t\"./sq\": 168,\n\t\"./sq.js\": 168,\n\t\"./sr\": 169,\n\t\"./sr-cyrl\": 170,\n\t\"./sr-cyrl.js\": 170,\n\t\"./sr.js\": 169,\n\t\"./ss\": 171,\n\t\"./ss.js\": 171,\n\t\"./sv\": 172,\n\t\"./sv.js\": 172,\n\t\"./sw\": 173,\n\t\"./sw.js\": 173,\n\t\"./ta\": 174,\n\t\"./ta.js\": 174,\n\t\"./te\": 175,\n\t\"./te.js\": 175,\n\t\"./tet\": 176,\n\t\"./tet.js\": 176,\n\t\"./tg\": 177,\n\t\"./tg.js\": 177,\n\t\"./th\": 178,\n\t\"./th.js\": 178,\n\t\"./tl-ph\": 179,\n\t\"./tl-ph.js\": 179,\n\t\"./tlh\": 180,\n\t\"./tlh.js\": 180,\n\t\"./tr\": 181,\n\t\"./tr.js\": 181,\n\t\"./tzl\": 182,\n\t\"./tzl.js\": 182,\n\t\"./tzm\": 183,\n\t\"./tzm-latn\": 184,\n\t\"./tzm-latn.js\": 184,\n\t\"./tzm.js\": 183,\n\t\"./ug-cn\": 185,\n\t\"./ug-cn.js\": 185,\n\t\"./uk\": 186,\n\t\"./uk.js\": 186,\n\t\"./ur\": 187,\n\t\"./ur.js\": 187,\n\t\"./uz\": 188,\n\t\"./uz-latn\": 189,\n\t\"./uz-latn.js\": 189,\n\t\"./uz.js\": 188,\n\t\"./vi\": 190,\n\t\"./vi.js\": 190,\n\t\"./x-pseudo\": 191,\n\t\"./x-pseudo.js\": 191,\n\t\"./yo\": 192,\n\t\"./yo.js\": 192,\n\t\"./zh-cn\": 193,\n\t\"./zh-cn.js\": 193,\n\t\"./zh-hk\": 194,\n\t\"./zh-hk.js\": 194,\n\t\"./zh-tw\": 195,\n\t\"./zh-tw.js\": 195\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 246;","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contacts.vue?vue&type=style&index=0&id=38b09e4b&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contacts.vue?vue&type=style&index=0&id=38b09e4b&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pay4me.vue?vue&type=style&index=0&id=71c04af6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pay4me.vue?vue&type=style&index=0&id=71c04af6&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./members.vue?vue&type=style&index=0&id=4a4d072e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./members.vue?vue&type=style&index=0&id=4a4d072e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=style&index=0&id=0813e8af&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=style&index=0&id=0813e8af&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./livescores.vue?vue&type=style&index=0&id=408c7167&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./livescores.vue?vue&type=style&index=0&id=408c7167&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./standings.vue?vue&type=style&index=0&id=3d494058&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./standings.vue?vue&type=style&index=0&id=3d494058&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./requests.vue?vue&type=style&index=0&id=626b71e2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./requests.vue?vue&type=style&index=0&id=626b71e2&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=style&index=0&id=1af21f18&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=style&index=0&id=1af21f18&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./usernotifications.vue?vue&type=style&index=0&id=6745f5b0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./usernotifications.vue?vue&type=style&index=0&id=6745f5b0&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./beamoderator.vue?vue&type=style&index=0&id=45d5b5de&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./beamoderator.vue?vue&type=style&index=0&id=45d5b5de&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sportsupdate.vue?vue&type=style&index=0&id=40e422ce&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sportsupdate.vue?vue&type=style&index=0&id=40e422ce&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chatgroups.vue?vue&type=style&index=0&id=f622d15c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chatgroups.vue?vue&type=style&index=0&id=f622d15c&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chatgroup.vue?vue&type=style&index=0&id=86dc0086&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chatgroup.vue?vue&type=style&index=0&id=86dc0086&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./newgroup.vue?vue&type=style&index=0&id=6ac28f14&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./newgroup.vue?vue&type=style&index=0&id=6ac28f14&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addmembers.vue?vue&type=style&index=0&id=45580f0e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addmembers.vue?vue&type=style&index=0&id=45580f0e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./groupinfo.vue?vue&type=style&index=0&id=045a652f&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./groupinfo.vue?vue&type=style&index=0&id=045a652f&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./groupmembers.vue?vue&type=style&index=0&id=12041dd4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./groupmembers.vue?vue&type=style&index=0&id=12041dd4&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=style&index=0&id=2fa2b8b0&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--2-0!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=style&index=0&id=2fa2b8b0&scoped=true&lang=css&\"","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\nvar toArrayBuffer = require('to-arraybuffer')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else if (capability.vbArray && preferBinary) {\n\t\treturn 'text:vbarray'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + new Buffer(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n\t\tif (capability.arraybuffer) {\n\t\t\tbody = toArrayBuffer(Buffer.concat(self._body))\n\t\t} else if (capability.blobConstructor) {\n\t\t\tbody = new global.Blob(self._body.map(function (buffer) {\n\t\t\t\treturn toArrayBuffer(buffer)\n\t\t\t}), {\n\t\t\t\ttype: (headersObj['content-type'] || {}).value || ''\n\t\t\t})\n\t\t} else {\n\t\t\t// get utf8 string\n\t\t\tbody = Buffer.concat(self._body).toString()\n\t\t}\n\t}\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tvar fetchTimer = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tglobal.clearTimeout(self._fetchTimer)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode.split(':')[0]\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress()\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._fetchTimer)\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function () {\n\tvar self = this\n\tself._destroyed = true\n\tglobal.clearTimeout(self._fetchTimer)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setTimeout = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var Buffer = require('buffer').Buffer\n\nmodule.exports = function (buf) {\n\t// If the buffer is backed by a Uint8Array, a faster version will work\n\tif (buf instanceof Uint8Array) {\n\t\t// If the buffer isn't a subarray, return the underlying ArrayBuffer\n\t\tif (buf.byteOffset === 0 && buf.byteLength === buf.buffer.byteLength) {\n\t\t\treturn buf.buffer\n\t\t} else if (typeof buf.buffer.slice === 'function') {\n\t\t\t// Otherwise we need to get a proper copy\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n\t\t}\n\t}\n\n\tif (Buffer.isBuffer(buf)) {\n\t\t// This is the slow version that will work with any Buffer\n\t\t// implementation (even in old browsers)\n\t\tvar arrayCopy = new Uint8Array(buf.length)\n\t\tvar len = buf.length\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tarrayCopy[i] = buf[i]\n\t\t}\n\t\treturn arrayCopy.buffer\n\t} else {\n\t\tthrow new Error('Argument must be a Buffer')\n\t}\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","/**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n for (i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nvar Methods = /*#__PURE__*/Object.freeze({\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n prop: prop,\n data: data,\n removeData: removeData,\n dataset: dataset,\n val: val,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n transitionEnd: transitionEnd,\n animationEnd: animationEnd,\n width: width,\n outerWidth: outerWidth,\n height: height,\n outerHeight: outerHeight,\n offset: offset,\n hide: hide,\n show: show,\n styles: styles,\n css: css,\n toArray: toArray,\n each: each,\n forEach: forEach,\n filter: filter,\n map: map,\n html: html,\n text: text,\n is: is,\n indexOf: indexOf,\n index: index,\n eq: eq,\n append: append,\n appendTo: appendTo,\n prepend: prepend,\n prependTo: prependTo,\n insertBefore: insertBefore,\n insertAfter: insertAfter,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n siblings: siblings,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n remove: remove,\n detach: detach,\n add: add,\n empty: empty\n});\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nvar Scroll = /*#__PURE__*/Object.freeze({\n scrollTo: scrollTo,\n scrollTop: scrollTop,\n scrollLeft: scrollLeft\n});\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nvar Animate = /*#__PURE__*/Object.freeze({\n animate: animate,\n stop: stop\n});\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nvar eventShortcuts = /*#__PURE__*/Object.freeze({\n click: click,\n blur: blur,\n focus: focus,\n focusin: focusin,\n focusout: focusout,\n keyup: keyup,\n keydown: keydown,\n keypress: keypress,\n submit: submit,\n change: change,\n mousedown: mousedown,\n mousemove: mousemove,\n mouseup: mouseup,\n mouseenter: mouseenter,\n mouseleave: mouseleave,\n mouseout: mouseout,\n mouseover: mouseover,\n touchstart: touchstart,\n touchend: touchend,\n touchmove: touchmove,\n resize: resize,\n scroll: scroll\n});\n\n[Methods, Scroll, Animate, eventShortcuts].forEach((group) => {\n Object.keys(group).forEach((methodName) => {\n $.fn[methodName] = group[methodName];\n });\n});\n\nexport default $;\n","/* eslint no-control-regex: \"off\" */\nimport { window } from 'ssr-window';\n\n// Remove Diacritics\nconst defaultDiacriticsRemovalap = [\n { base: 'A', letters: '\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F' },\n { base: 'AA', letters: '\\uA732' },\n { base: 'AE', letters: '\\u00C6\\u01FC\\u01E2' },\n { base: 'AO', letters: '\\uA734' },\n { base: 'AU', letters: '\\uA736' },\n { base: 'AV', letters: '\\uA738\\uA73A' },\n { base: 'AY', letters: '\\uA73C' },\n { base: 'B', letters: '\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181' },\n { base: 'C', letters: '\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E' },\n { base: 'D', letters: '\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779' },\n { base: 'DZ', letters: '\\u01F1\\u01C4' },\n { base: 'Dz', letters: '\\u01F2\\u01C5' },\n { base: 'E', letters: '\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E' },\n { base: 'F', letters: '\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B' },\n { base: 'G', letters: '\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E' },\n { base: 'H', letters: '\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D' },\n { base: 'I', letters: '\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197' },\n { base: 'J', letters: '\\u004A\\u24BF\\uFF2A\\u0134\\u0248' },\n { base: 'K', letters: '\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2' },\n { base: 'L', letters: '\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780' },\n { base: 'LJ', letters: '\\u01C7' },\n { base: 'Lj', letters: '\\u01C8' },\n { base: 'M', letters: '\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C' },\n { base: 'N', letters: '\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4' },\n { base: 'NJ', letters: '\\u01CA' },\n { base: 'Nj', letters: '\\u01CB' },\n { base: 'O', letters: '\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C' },\n { base: 'OI', letters: '\\u01A2' },\n { base: 'OO', letters: '\\uA74E' },\n { base: 'OU', letters: '\\u0222' },\n { base: 'OE', letters: '\\u008C\\u0152' },\n { base: 'oe', letters: '\\u009C\\u0153' },\n { base: 'P', letters: '\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754' },\n { base: 'Q', letters: '\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A' },\n { base: 'R', letters: '\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782' },\n { base: 'S', letters: '\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784' },\n { base: 'T', letters: '\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786' },\n { base: 'TZ', letters: '\\uA728' },\n { base: 'U', letters: '\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244' },\n { base: 'V', letters: '\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245' },\n { base: 'VY', letters: '\\uA760' },\n { base: 'W', letters: '\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72' },\n { base: 'X', letters: '\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C' },\n { base: 'Y', letters: '\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE' },\n { base: 'Z', letters: '\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762' },\n { base: 'a', letters: '\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250' },\n { base: 'aa', letters: '\\uA733' },\n { base: 'ae', letters: '\\u00E6\\u01FD\\u01E3' },\n { base: 'ao', letters: '\\uA735' },\n { base: 'au', letters: '\\uA737' },\n { base: 'av', letters: '\\uA739\\uA73B' },\n { base: 'ay', letters: '\\uA73D' },\n { base: 'b', letters: '\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253' },\n { base: 'c', letters: '\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184' },\n { base: 'd', letters: '\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A' },\n { base: 'dz', letters: '\\u01F3\\u01C6' },\n { base: 'e', letters: '\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD' },\n { base: 'f', letters: '\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C' },\n { base: 'g', letters: '\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F' },\n { base: 'h', letters: '\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265' },\n { base: 'hv', letters: '\\u0195' },\n { base: 'i', letters: '\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131' },\n { base: 'j', letters: '\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249' },\n { base: 'k', letters: '\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3' },\n { base: 'l', letters: '\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747' },\n { base: 'lj', letters: '\\u01C9' },\n { base: 'm', letters: '\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F' },\n { base: 'n', letters: '\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5' },\n { base: 'nj', letters: '\\u01CC' },\n { base: 'o', letters: '\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275' },\n { base: 'oi', letters: '\\u01A3' },\n { base: 'ou', letters: '\\u0223' },\n { base: 'oo', letters: '\\uA74F' },\n { base: 'p', letters: '\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755' },\n { base: 'q', letters: '\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759' },\n { base: 'r', letters: '\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783' },\n { base: 's', letters: '\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B' },\n { base: 't', letters: '\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787' },\n { base: 'tz', letters: '\\uA729' },\n { base: 'u', letters: '\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289' },\n { base: 'v', letters: '\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C' },\n { base: 'vy', letters: '\\uA761' },\n { base: 'w', letters: '\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73' },\n { base: 'x', letters: '\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D' },\n { base: 'y', letters: '\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF' },\n { base: 'z', letters: '\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763' },\n];\n\nconst diacriticsMap = {};\nfor (let i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {\n const letters = defaultDiacriticsRemovalap[i].letters;\n for (let j = 0; j < letters.length; j += 1) {\n diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;\n }\n}\n\nlet uniqueNumber = 1;\n\nconst Utils = {\n uniqueNumber() {\n uniqueNumber += 1;\n return uniqueNumber;\n },\n id(mask = 'xxxxxxxxxx', map = '0123456789abcdef') {\n const length = map.length;\n return mask.replace(/x/g, () => map[Math.floor((Math.random() * length))]);\n },\n mdPreloaderContent: `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-gap\"></span>\n <span class=\"preloader-inner-left\">\n <span class=\"preloader-inner-half-circle\"></span>\n </span>\n <span class=\"preloader-inner-right\">\n <span class=\"preloader-inner-half-circle\"></span>\n </span>\n </span>\n `.trim(),\n iosPreloaderContent: `\n <span class=\"preloader-inner\">\n ${[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(() => '<span class=\"preloader-inner-line\"></span>').join('')}\n </span>\n `.trim(),\n auroraPreloaderContent: `\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n `,\n eventNameToColonCase(eventName) {\n let hasColon;\n return eventName.split('').map((char, index) => {\n if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {\n hasColon = true;\n return `:${char.toLowerCase()}`;\n }\n return char.toLowerCase();\n }).join('');\n },\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no setter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n nextFrame(callback) {\n return Utils.requestAnimationFrame(() => {\n Utils.requestAnimationFrame(callback);\n });\n },\n now() {\n return Date.now();\n },\n requestAnimationFrame(callback) {\n return window.requestAnimationFrame(callback);\n },\n cancelAnimationFrame(id) {\n return window.cancelAnimationFrame(id);\n },\n removeDiacritics(str) {\n return str.replace(/[^\\u0000-\\u007E]/g, a => diacriticsMap[a] || a);\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(paramsPart => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';\n }\n }\n return query;\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n serializeObject(obj, parents = []) {\n if (typeof obj === 'string') return obj;\n const resultArray = [];\n const separator = '&';\n let newParents;\n function varName(name) {\n if (parents.length > 0) {\n let parentParts = '';\n for (let j = 0; j < parents.length; j += 1) {\n if (j === 0) parentParts += parents[j];\n else parentParts += `[${encodeURIComponent(parents[j])}]`;\n }\n return `${parentParts}[${encodeURIComponent(name)}]`;\n }\n return encodeURIComponent(name);\n }\n function varValue(value) {\n return encodeURIComponent(value);\n }\n Object.keys(obj).forEach((prop) => {\n let toPush;\n if (Array.isArray(obj[prop])) {\n toPush = [];\n for (let i = 0; i < obj[prop].length; i += 1) {\n if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {\n newParents = parents.slice();\n newParents.push(prop);\n newParents.push(String(i));\n toPush.push(Utils.serializeObject(obj[prop][i], newParents));\n } else {\n toPush.push(`${varName(prop)}[]=${varValue(obj[prop][i])}`);\n }\n }\n if (toPush.length > 0) resultArray.push(toPush.join(separator));\n } else if (obj[prop] === null || obj[prop] === '') {\n resultArray.push(`${varName(prop)}=`);\n } else if (typeof obj[prop] === 'object') {\n // Object, convert to named array\n newParents = parents.slice();\n newParents.push(prop);\n toPush = Utils.serializeObject(obj[prop], newParents);\n if (toPush !== '') resultArray.push(toPush);\n } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {\n // Should be string or plain value\n resultArray.push(`${varName(prop)}=${varValue(obj[prop])}`);\n } else if (obj[prop] === '') resultArray.push(varName(prop));\n });\n return resultArray.join(separator);\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n merge(...args) {\n const to = args[0];\n args.splice(0, 1);\n const from = args;\n\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n deep = args[0];\n to = args[1];\n args.splice(0, 2);\n from = args;\n } else {\n to = args[0];\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n colorHexToRgb(hex) {\n const h = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (m, r, g, b) => r + r + g + g + b + b);\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(h);\n return result\n ? result.slice(1).map(n => parseInt(n, 16))\n : null;\n },\n colorRgbToHex(r, g, b) {\n const result = [r, g, b].map((n) => {\n const hex = n.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n }).join('');\n return `#${result}`;\n },\n colorRgbToHsl(r, g, b) {\n r /= 255; // eslint-disable-line\n g /= 255; // eslint-disable-line\n b /= 255; // eslint-disable-line\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n let h;\n if (d === 0) h = 0;\n else if (max === r) h = ((g - b) / d) % 6;\n else if (max === g) h = (b - r) / d + 2;\n else if (max === b) h = (r - g) / d + 4;\n const l = (min + max) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n if (h < 0) h = 360 / 60 + h;\n return [h * 60, s, l];\n },\n colorHslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const hp = h / 60;\n const x = c * (1 - Math.abs((hp % 2) - 1));\n let rgb1;\n if (Number.isNaN(h) || typeof h === 'undefined') {\n rgb1 = [0, 0, 0];\n } else if (hp <= 1) rgb1 = [c, x, 0];\n else if (hp <= 2) rgb1 = [x, c, 0];\n else if (hp <= 3) rgb1 = [0, c, x];\n else if (hp <= 4) rgb1 = [0, x, c];\n else if (hp <= 5) rgb1 = [x, 0, c];\n else if (hp <= 6) rgb1 = [c, 0, x];\n const m = l - (c / 2);\n return rgb1.map(n => Math.max(0, Math.min(255, Math.round(255 * (n + m)))));\n },\n colorHsbToHsl(h, s, b) {\n const HSL = {\n h,\n s: 0,\n l: 0,\n };\n const HSB = { h, s, b };\n\n HSL.l = (2 - HSB.s) * HSB.b / 2;\n HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;\n\n return [HSL.h, HSL.s, HSL.l];\n },\n colorHslToHsb(h, s, l) {\n const HSB = {\n h,\n s: 0,\n b: 0,\n };\n const HSL = { h, s, l };\n\n const t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);\n HSB.b = HSL.l + t;\n HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;\n\n return [HSB.h, HSB.s, HSB.b];\n },\n colorThemeCSSProperties(...args) {\n let hex;\n let rgb;\n if (args.length === 1) {\n hex = args[0];\n rgb = Utils.colorHexToRgb(hex);\n } else if (args.length === 3) {\n rgb = args;\n hex = Utils.colorRgbToHex(...rgb);\n }\n if (!rgb) return {};\n const hsl = Utils.colorRgbToHsl(...rgb);\n const hslShade = [hsl[0], hsl[1], Math.max(0, (hsl[2] - 0.08))];\n const hslTint = [hsl[0], hsl[1], Math.max(0, (hsl[2] + 0.08))];\n const shade = Utils.colorRgbToHex(...Utils.colorHslToRgb(...hslShade));\n const tint = Utils.colorRgbToHex(...Utils.colorHslToRgb(...hslTint));\n return {\n '--f7-theme-color': hex,\n '--f7-theme-color-rgb': rgb.join(', '),\n '--f7-theme-color-shade': shade,\n '--f7-theme-color-tint': tint,\n };\n },\n};\nexport default Utils;\n","class EventsClass {\n constructor(parents = []) {\n const self = this;\n self.eventsParents = parents;\n self.eventsListeners = {};\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n let eventsParents;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n eventsParents = self.eventsParents;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n const localEvents = eventsArray.map(eventName => eventName.replace('local::', ''));\n const parentEvents = eventsArray.filter(eventName => eventName.indexOf('local::') < 0);\n\n localEvents.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n if (eventsParents && eventsParents.length > 0) {\n eventsParents.forEach((eventsParent) => {\n eventsParent.emit(parentEvents, ...data);\n });\n }\n return self;\n }\n}\n\nexport default EventsClass;\n","import Utils from './utils';\nimport EventsClass from './events-class';\n\nclass Framework7Class extends EventsClass {\n constructor(params = {}, parents = []) {\n super(parents);\n const self = this;\n self.params = params;\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n // eslint-disable-next-line\n useModuleParams(module, instanceParams) {\n if (module.params) {\n const originalParams = {};\n Object.keys(module.params).forEach((paramKey) => {\n if (typeof instanceParams[paramKey] === 'undefined') return;\n originalParams[paramKey] = Utils.extend({}, instanceParams[paramKey]);\n });\n Utils.extend(instanceParams, module.params);\n Object.keys(originalParams).forEach((paramKey) => {\n Utils.extend(instanceParams[paramKey], originalParams[paramKey]);\n });\n }\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModule(moduleName = '', moduleParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n const module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;\n if (!module) return;\n\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n // Add vnode hooks\n if (module.vnode) {\n if (!instance.vnodeHooks) instance.vnodeHooks = {};\n Object.keys(module.vnode).forEach((vnodeId) => {\n Object.keys(module.vnode[vnodeId]).forEach((hookName) => {\n const handler = module.vnode[vnodeId][hookName];\n if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};\n if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];\n instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));\n });\n });\n }\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const moduleParams = modulesParams[moduleName] || {};\n instance.useModule(moduleName, moduleParams);\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach(m => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default Framework7Class;\n","import $ from 'dom7';\n\nexport default function (parameters = {}) {\n const {\n defaultSelector,\n constructor: Constructor,\n domProp,\n app,\n addMethods,\n } = parameters;\n const methods = {\n create(...args) {\n if (app) return new Constructor(app, ...args);\n return new Constructor(...args);\n },\n get(el = defaultSelector) {\n if (el instanceof Constructor) return el;\n const $el = $(el);\n if ($el.length === 0) return undefined;\n return $el[0][domProp];\n },\n destroy(el) {\n const instance = methods.get(el);\n if (instance && instance.destroy) return instance.destroy();\n return undefined;\n },\n };\n if (addMethods && Array.isArray(addMethods)) {\n addMethods.forEach((methodName) => {\n methods[methodName] = (el = defaultSelector, ...args) => {\n const instance = methods.get(el);\n if (instance && instance[methodName]) return instance[methodName](...args);\n return undefined;\n };\n });\n }\n return methods;\n}\n","import $ from 'dom7';\nimport Utils from './utils';\nimport ConstructorMethods from './constructor-methods';\n\nexport default function (parameters = {}) {\n const { defaultSelector, constructor: Constructor, app } = parameters;\n const methods = Utils.extend(\n ConstructorMethods({\n defaultSelector,\n constructor: Constructor,\n app,\n domProp: 'f7Modal',\n }),\n {\n open(el, animate, targetEl) {\n let $el = $(el);\n if ($el.length > 1 && targetEl) {\n // check if same modal in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $el.each((index, modalEl) => {\n const $modalEl = $(modalEl);\n if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {\n $el = $modalEl;\n }\n });\n }\n }\n if ($el.length > 1) {\n $el = $el.eq($el.length - 1);\n }\n if (!$el.length) return undefined;\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.open(animate);\n },\n close(el = defaultSelector, animate, targetEl) {\n let $el = $(el);\n if (!$el.length) return undefined;\n if ($el.length > 1) {\n // check if close link (targetEl) in this modal\n let $parentEl;\n if (targetEl) {\n const $targetEl = $(targetEl);\n if ($targetEl.length) {\n $parentEl = $targetEl.parents($el);\n }\n }\n if ($parentEl && $parentEl.length > 0) {\n $el = $parentEl;\n } else {\n $el = $el.eq($el.length - 1);\n }\n }\n let instance = $el[0].f7Modal;\n if (!instance) {\n const params = $el.dataset();\n instance = new Constructor(app, { el: $el, ...params });\n }\n return instance.close(animate);\n },\n }\n );\n return methods;\n}\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst fetchedModules = [];\nfunction loadModule(moduleToLoad) {\n const Framework7 = this;\n return new Promise((resolve, reject) => {\n const app = Framework7.instance;\n let modulePath;\n let moduleObj;\n let moduleFunc;\n if (!moduleToLoad) {\n reject(new Error('Framework7: Lazy module must be specified'));\n return;\n }\n\n function install(module) {\n Framework7.use(module);\n\n if (app) {\n app.useModuleParams(module, app.params);\n app.useModule(module);\n }\n }\n\n if (typeof moduleToLoad === 'string') {\n const matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);\n if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {\n if (!app || (app && !app.params.lazyModulesPath)) {\n reject(new Error('Framework7: \"lazyModulesPath\" app parameter must be specified to fetch module by name'));\n return;\n }\n modulePath = `${app.params.lazyModulesPath}/${moduleToLoad}.js`;\n } else {\n modulePath = moduleToLoad;\n }\n } else if (typeof moduleToLoad === 'function') {\n moduleFunc = moduleToLoad;\n } else {\n // considering F7-Plugin object\n moduleObj = moduleToLoad;\n }\n\n if (moduleFunc) {\n const module = moduleFunc(Framework7, false);\n if (!module) {\n reject(new Error('Framework7: Can\\'t find Framework7 component in specified component function'));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (moduleObj) {\n const module = moduleObj;\n if (!module) {\n reject(new Error('Framework7: Can\\'t find Framework7 component in specified component'));\n return;\n }\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolve();\n return;\n }\n // Install It\n install(module);\n\n resolve();\n }\n if (modulePath) {\n if (fetchedModules.indexOf(modulePath) >= 0) {\n resolve();\n return;\n }\n fetchedModules.push(modulePath);\n const scriptLoad = new Promise((resolveScript, rejectScript) => {\n Framework7.request.get(\n modulePath,\n (scriptContent) => {\n const id = Utils.id();\n const callbackLoadName = `f7_component_loader_callback_${id}`;\n\n const scriptEl = document.createElement('script');\n scriptEl.innerHTML = `window.${callbackLoadName} = function (Framework7, Framework7AutoInstallComponent) {return ${scriptContent.trim()}}`;\n $('head').append(scriptEl);\n\n const componentLoader = window[callbackLoadName];\n delete window[callbackLoadName];\n $(scriptEl).remove();\n\n const module = componentLoader(Framework7, false);\n\n if (!module) {\n rejectScript(new Error(`Framework7: Can't find Framework7 component in ${modulePath} file`));\n return;\n }\n\n // Check if it was added\n if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {\n resolveScript();\n return;\n }\n\n // Install It\n install(module);\n\n resolveScript();\n },\n (xhr, status) => {\n rejectScript(xhr, status);\n }\n );\n });\n const styleLoad = new Promise((resolveStyle) => {\n Framework7.request.get(\n modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'),\n (styleContent) => {\n const styleEl = document.createElement('style');\n styleEl.innerHTML = styleContent;\n $('head').append(styleEl);\n\n resolveStyle();\n },\n () => {\n resolveStyle();\n }\n );\n });\n\n Promise.all([scriptLoad, styleLoad]).then(() => {\n resolve();\n }).catch((err) => {\n reject(err);\n });\n }\n });\n}\n\nexport default loadModule;\n","import $ from 'dom7';\nimport Template7 from 'template7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Framework7Class from '../../utils/class';\nimport EventsClass from '../../utils/events-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport ModalMethods from '../../utils/modal-methods';\nimport loadModule from './load-module';\n\nclass Framework7 extends Framework7Class {\n constructor(params) {\n super(params);\n if (Framework7.instance) {\n throw new Error('Framework7 is already initialized and can\\'t be initialized more than once');\n }\n\n const passedParams = Utils.extend({}, params);\n\n // App Instance\n const app = this;\n\n Framework7.instance = app;\n\n // Default\n const defaults = {\n version: '1.0.0',\n id: 'io.framework7.testapp',\n root: 'body',\n theme: 'auto',\n language: window.navigator.language,\n routes: [],\n name: 'Framework7',\n lazyModulesPath: null,\n initOnDeviceReady: true,\n init: true,\n autoDarkTheme: false,\n iosTranslucentBars: true,\n iosTranslucentModals: true,\n component: undefined,\n componentUrl: undefined,\n };\n\n // Extend defaults with modules params\n app.useModulesParams(defaults);\n\n // Extend defaults with passed params\n app.params = Utils.extend(defaults, params);\n\n const $rootEl = $(app.params.root);\n\n Utils.extend(app, {\n // App Id\n id: app.params.id,\n // App Name\n name: app.params.name,\n // App version\n version: app.params.version,\n // Routes\n routes: app.params.routes,\n // Lang\n language: app.params.language,\n // Root\n root: $rootEl,\n // RTL\n rtl: $rootEl.css('direction') === 'rtl',\n // Theme\n theme: (function getTheme() {\n if (app.params.theme === 'auto') {\n if (Device.ios) return 'ios';\n if (Device.desktop && Device.electron) return 'aurora';\n return 'md';\n }\n return app.params.theme;\n }()),\n // Initially passed parameters\n passedParams,\n online: window.navigator.onLine,\n });\n\n // Save Root\n if (app.root && app.root[0]) {\n app.root[0].f7 = app;\n }\n\n // Install Modules\n app.useModules();\n\n // Init Data & Methods\n app.initData();\n\n // Auto Dark Theme\n const DARK = '(prefers-color-scheme: dark)';\n const LIGHT = '(prefers-color-scheme: light)';\n app.mq = {};\n if (window.matchMedia) {\n app.mq.dark = window.matchMedia(DARK);\n app.mq.light = window.matchMedia(LIGHT);\n }\n app.colorSchemeListener = function colorSchemeListener({ matches, media }) {\n if (!matches) {\n return;\n }\n const html = document.querySelector('html');\n if (media === DARK) {\n html.classList.add('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (media === LIGHT) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', false);\n }\n };\n\n // Init\n if (app.params.init) {\n if (Device.cordova && app.params.initOnDeviceReady) {\n $(document).on('deviceready', () => {\n app.init();\n });\n } else {\n app.init();\n }\n }\n\n // Return app instance\n return app;\n }\n\n initData() {\n const app = this;\n\n // Data\n app.data = {};\n if (app.params.data && typeof app.params.data === 'function') {\n Utils.extend(app.data, app.params.data.bind(app)());\n } else if (app.params.data) {\n Utils.extend(app.data, app.params.data);\n }\n // Methods\n app.methods = {};\n if (app.params.methods) {\n Object.keys(app.params.methods).forEach((methodName) => {\n if (typeof app.params.methods[methodName] === 'function') {\n app.methods[methodName] = app.params.methods[methodName].bind(app);\n } else {\n app.methods[methodName] = app.params.methods[methodName];\n }\n });\n }\n }\n\n enableAutoDarkTheme() {\n if (!window.matchMedia) return;\n const app = this;\n const html = document.querySelector('html');\n if (app.mq.dark && app.mq.light) {\n app.mq.dark.addListener(app.colorSchemeListener);\n app.mq.light.addListener(app.colorSchemeListener);\n }\n if (app.mq.dark && app.mq.dark.matches) {\n html.classList.add('theme-dark');\n app.darkTheme = true;\n app.emit('darkThemeChange', true);\n } else if (app.mq.light && app.mq.light.matches) {\n html.classList.remove('theme-dark');\n app.darkTheme = false;\n app.emit('darkThemeChange', false);\n }\n }\n\n disableAutoDarkTheme() {\n if (!window.matchMedia) return;\n const app = this;\n if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);\n if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);\n }\n\n initAppComponent(callback) {\n const app = this;\n app.router.componentLoader(\n app.params.component,\n app.params.componentUrl,\n { componentOptions: { el: app.root[0], root: true } },\n (el) => {\n app.root = $(el);\n app.root[0].f7 = app;\n app.rootComponent = el.f7Component;\n if (callback) callback();\n },\n () => {}\n );\n }\n\n // eslint-disable-next-line\n _init() {\n const app = this;\n if (app.initialized) return app;\n\n app.root.addClass('framework7-initializing');\n\n // RTL attr\n if (app.rtl) {\n $('html').attr('dir', 'rtl');\n }\n\n // Auto Dark Theme\n if (app.params.autoDarkTheme) {\n app.enableAutoDarkTheme();\n }\n\n // Watch for online/offline state\n window.addEventListener('offline', () => {\n app.online = false;\n app.emit('offline');\n app.emit('connection', false);\n });\n window.addEventListener('online', () => {\n app.online = true;\n app.emit('online');\n app.emit('connection', true);\n });\n\n // Root class\n app.root.addClass('framework7-root');\n\n // Theme class\n $('html').removeClass('ios md aurora').addClass(app.theme);\n\n // iOS Translucent\n if (app.params.iosTranslucentBars && app.theme === 'ios' && Device.ios) {\n $('html').addClass('ios-translucent-bars');\n }\n if (app.params.iosTranslucentModals && app.theme === 'ios' && Device.ios) {\n $('html').addClass('ios-translucent-modals');\n }\n\n // Init class\n Utils.nextFrame(() => {\n app.root.removeClass('framework7-initializing');\n });\n // Emit, init other modules\n app.initialized = true;\n app.emit('init');\n\n return app;\n }\n\n init() {\n const app = this;\n if (app.params.component || app.params.componentUrl) {\n app.initAppComponent(() => {\n app._init(); // eslint-disable-line\n });\n } else {\n app._init(); // eslint-disable-line\n }\n }\n\n // eslint-disable-next-line\n loadModule(...args) {\n return Framework7.loadModule(...args);\n }\n\n // eslint-disable-next-line\n loadModules(...args) {\n return Framework7.loadModules(...args);\n }\n\n getVnodeHooks(hook, id) {\n const app = this;\n if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];\n return app.vnodeHooks[hook][id] || [];\n }\n\n // eslint-disable-next-line\n get $() {\n return $;\n }\n // eslint-disable-next-line\n get t7() {\n return Template7;\n }\n\n static get Dom7() {\n return $;\n }\n\n static get $() {\n return $;\n }\n\n static get Template7() {\n return Template7;\n }\n\n static get Class() {\n return Framework7Class;\n }\n\n static get Events() {\n return EventsClass;\n }\n}\n\nFramework7.ModalMethods = ModalMethods;\nFramework7.ConstructorMethods = ConstructorMethods;\n\nFramework7.loadModule = loadModule;\nFramework7.loadModules = function loadModules(modules) {\n return Promise.all(modules.map(module => Framework7.loadModule(module)));\n};\n\nexport default Framework7;\n","import { window, document } from 'ssr-window';\nimport Utils from './utils';\n\nconst globals = {};\nlet jsonpRequests = 0;\n\nfunction Request(requestOptions) {\n const globalsNoCallbacks = Utils.extend({}, globals);\n ('beforeCreate beforeOpen beforeSend error complete success statusCode').split(' ').forEach((callbackName) => {\n delete globalsNoCallbacks[callbackName];\n });\n const defaults = Utils.extend({\n url: window.location.toString(),\n method: 'GET',\n data: false,\n async: true,\n cache: true,\n user: '',\n password: '',\n headers: {},\n xhrFields: {},\n statusCode: {},\n processData: true,\n dataType: 'text',\n contentType: 'application/x-www-form-urlencoded',\n timeout: 0,\n }, globalsNoCallbacks);\n\n const options = Utils.extend({}, defaults, requestOptions);\n let proceedRequest;\n\n // Function to run XHR callbacks and events\n function fireCallback(callbackName, ...data) {\n /*\n Callbacks:\n beforeCreate (options),\n beforeOpen (xhr, options),\n beforeSend (xhr, options),\n error (xhr, status, message),\n complete (xhr, stautus),\n success (response, status, xhr),\n statusCode ()\n */\n let globalCallbackValue;\n let optionCallbackValue;\n if (globals[callbackName]) {\n globalCallbackValue = globals[callbackName](...data);\n }\n if (options[callbackName]) {\n optionCallbackValue = options[callbackName](...data);\n }\n if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;\n if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;\n return (globalCallbackValue && optionCallbackValue);\n }\n\n // Before create callback\n proceedRequest = fireCallback('beforeCreate', options);\n if (proceedRequest === false) return undefined;\n\n // For jQuery guys\n if (options.type) options.method = options.type;\n\n // Parameters Prefix\n let paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';\n\n // UC method\n const method = options.method.toUpperCase();\n\n // Data to modify GET URL\n if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {\n let stringData;\n if (typeof options.data === 'string') {\n // Should be key=value string\n if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];\n else stringData = options.data;\n } else {\n // Should be key=value object\n stringData = Utils.serializeObject(options.data);\n }\n if (stringData.length) {\n options.url += paramsPrefix + stringData;\n if (paramsPrefix === '?') paramsPrefix = '&';\n }\n }\n\n // JSONP\n if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {\n const callbackName = `f7jsonp_${Date.now() + ((jsonpRequests += 1))}`;\n let abortTimeout;\n const callbackSplit = options.url.split('callback=');\n let requestUrl = `${callbackSplit[0]}callback=${callbackName}`;\n if (callbackSplit[1].indexOf('&') >= 0) {\n const addVars = callbackSplit[1].split('&').filter(el => el.indexOf('=') > 0).join('&');\n if (addVars.length > 0) requestUrl += `&${addVars}`;\n }\n\n // Create script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.onerror = function onerror() {\n clearTimeout(abortTimeout);\n fireCallback('error', null, 'scripterror', 'scripterror');\n fireCallback('complete', null, 'scripterror');\n };\n script.src = requestUrl;\n\n // Handler\n window[callbackName] = function jsonpCallback(data) {\n clearTimeout(abortTimeout);\n fireCallback('success', data);\n script.parentNode.removeChild(script);\n script = null;\n delete window[callbackName];\n };\n document.querySelector('head').appendChild(script);\n\n if (options.timeout > 0) {\n abortTimeout = setTimeout(() => {\n script.parentNode.removeChild(script);\n script = null;\n fireCallback('error', null, 'timeout', 'timeout');\n }, options.timeout);\n }\n\n return undefined;\n }\n\n // Cache for GET/HEAD requests\n if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {\n if (options.cache === false) {\n options.url += `${paramsPrefix}_nocache${Date.now()}`;\n }\n }\n\n // Create XHR\n const xhr = new XMLHttpRequest();\n\n // Save Request URL\n xhr.requestUrl = options.url;\n xhr.requestParameters = options;\n\n // Before open callback\n proceedRequest = fireCallback('beforeOpen', xhr, options);\n if (proceedRequest === false) return xhr;\n\n // Open XHR\n xhr.open(method, options.url, options.async, options.user, options.password);\n\n // Create POST Data\n let postData = null;\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {\n if (options.processData) {\n const postDataInstances = [ArrayBuffer, Blob, Document, FormData];\n // Post Data\n if (postDataInstances.indexOf(options.data.constructor) >= 0) {\n postData = options.data;\n } else {\n // POST Headers\n const boundary = `---------------------------${Date.now().toString(16)}`;\n\n if (options.contentType === 'multipart/form-data') {\n xhr.setRequestHeader('Content-Type', `multipart/form-data; boundary=${boundary}`);\n } else {\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n postData = '';\n let data = Utils.serializeObject(options.data);\n if (options.contentType === 'multipart/form-data') {\n data = data.split('&');\n const newData = [];\n for (let i = 0; i < data.length; i += 1) {\n newData.push(`Content-Disposition: form-data; name=\"${data[i].split('=')[0]}\"\\r\\n\\r\\n${data[i].split('=')[1]}\\r\\n`);\n }\n postData = `--${boundary}\\r\\n${newData.join(`--${boundary}\\r\\n`)}--${boundary}--\\r\\n`;\n } else if (options.contentType === 'application/json') {\n postData = JSON.stringify(options.data);\n } else {\n postData = data;\n }\n }\n } else {\n postData = options.data;\n xhr.setRequestHeader('Content-Type', options.contentType);\n }\n }\n if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {\n xhr.setRequestHeader('Accept', 'application/json');\n }\n\n // Additional headers\n if (options.headers) {\n Object.keys(options.headers).forEach((headerName) => {\n if (typeof options.headers[headerName] === 'undefined') return;\n xhr.setRequestHeader(headerName, options.headers[headerName]);\n });\n }\n\n // Check for crossDomain\n if (typeof options.crossDomain === 'undefined') {\n // eslint-disable-next-line\n options.crossDomain = /^([\\w-]+:)?\\/\\/([^\\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n if (options.xhrFields) {\n Utils.extend(xhr, options.xhrFields);\n }\n\n\n // Handle XHR\n xhr.onload = function onload() {\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) {\n let responseData;\n if (options.dataType === 'json') {\n let parseError;\n try {\n responseData = JSON.parse(xhr.responseText);\n } catch (err) {\n parseError = true;\n }\n if (!parseError) {\n fireCallback('success', responseData, xhr.status, xhr);\n } else {\n fireCallback('error', xhr, 'parseerror', 'parseerror');\n }\n } else {\n responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;\n fireCallback('success', responseData, xhr.status, xhr);\n }\n } else {\n fireCallback('error', xhr, xhr.status, xhr.statusText);\n }\n if (options.statusCode) {\n if (globals.statusCode && globals.statusCode[xhr.status]) globals.statusCode[xhr.status](xhr);\n if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);\n }\n fireCallback('complete', xhr, xhr.status);\n };\n\n xhr.onerror = function onerror() {\n fireCallback('error', xhr, xhr.status, xhr.status);\n fireCallback('complete', xhr, 'error');\n };\n\n // Timeout\n if (options.timeout > 0) {\n xhr.timeout = options.timeout;\n xhr.ontimeout = () => {\n fireCallback('error', xhr, 'timeout', 'timeout');\n fireCallback('complete', xhr, 'timeout');\n };\n }\n\n // Ajax start callback\n proceedRequest = fireCallback('beforeSend', xhr, options);\n if (proceedRequest === false) return xhr;\n\n // Send XHR\n xhr.send(postData);\n\n // Return XHR object\n return xhr;\n}\nfunction RequestShortcut(method, ...args) {\n let [url, data, success, error, dataType] = [];\n if (typeof args[1] === 'function') {\n [url, success, error, dataType] = args;\n } else {\n [url, data, success, error, dataType] = args;\n }\n [success, error].forEach((callback) => {\n if (typeof callback === 'string') {\n dataType = callback;\n if (callback === success) success = undefined;\n else error = undefined;\n }\n });\n dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);\n const requestOptions = {\n url,\n method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',\n data,\n success,\n error,\n dataType,\n };\n if (method === 'postJSON') {\n Utils.extend(requestOptions, {\n contentType: 'application/json',\n processData: false,\n crossDomain: true,\n data: typeof data === 'string' ? data : JSON.stringify(data),\n });\n }\n return Request(requestOptions);\n}\nfunction RequestShortcutPromise(method, ...args) {\n const [url, data, dataType] = args;\n return new Promise((resolve, reject) => {\n RequestShortcut(\n method,\n url,\n data,\n (responseData, status, xhr) => {\n resolve({ data: responseData, status, xhr });\n },\n (xhr, status, message) => {\n // eslint-disable-next-line\n reject({ xhr, status, message });\n },\n dataType\n );\n });\n}\nObject.assign(Request, {\n get: (...args) => RequestShortcut('get', ...args),\n post: (...args) => RequestShortcut('post', ...args),\n json: (...args) => RequestShortcut('json', ...args),\n getJSON: (...args) => RequestShortcut('json', ...args),\n postJSON: (...args) => RequestShortcut('postJSON', ...args),\n});\n\nRequest.promise = function requestPromise(requestOptions) {\n return new Promise((resolve, reject) => {\n Request(Object.assign(requestOptions, {\n success(data, status, xhr) {\n resolve({ data, status, xhr });\n },\n error(xhr, status, message) {\n // eslint-disable-next-line\n reject({ xhr, status, message });\n },\n }));\n });\n};\nObject.assign(Request.promise, {\n get: (...args) => RequestShortcutPromise('get', ...args),\n post: (...args) => RequestShortcutPromise('post', ...args),\n json: (...args) => RequestShortcutPromise('json', ...args),\n getJSON: (...args) => RequestShortcutPromise('json', ...args),\n postJSON: (...args) => RequestShortcutPromise('postJSON', ...args),\n});\n\nRequest.setup = function setup(options) {\n if (options.type && !options.method) {\n Utils.extend(options, { method: options.type });\n }\n Utils.extend(globals, options);\n};\n\nexport default Request;\n","import { document } from 'ssr-window';\nimport Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n on: {\n init() {\n const classNames = [];\n const html = document.querySelector('html');\n const metaStatusbar = document.querySelector('meta[name=\"apple-mobile-web-app-status-bar-style\"]');\n if (!html) return;\n if (Device.standalone && Device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {\n classNames.push('device-full-viewport');\n }\n\n // Pixel Ratio\n classNames.push(`device-pixel-ratio-${Math.floor(Device.pixelRatio)}`);\n // OS classes\n if (Device.os && !Device.desktop) {\n classNames.push(\n `device-${Device.os}`,\n );\n } else if (Device.desktop) {\n classNames.push('device-desktop');\n if (Device.os) {\n classNames.push(`device-${Device.os}`);\n }\n }\n if (Device.cordova || Device.phonegap) {\n classNames.push('device-cordova');\n }\n\n // Add html classes\n classNames.forEach((className) => {\n html.classList.add(className);\n });\n },\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import Utils from '../../utils/utils';\n\nexport default {\n name: 'utils',\n proto: {\n utils: Utils,\n },\n static: {\n utils: Utils,\n },\n};\n","import { window, document } from 'ssr-window';\n\nexport default {\n name: 'resize',\n instance: {\n getSize() {\n const app = this;\n if (!app.root[0]) return { width: 0, height: 0, left: 0, top: 0 };\n const offset = app.root.offset();\n const [width, height, left, top] = [app.root[0].offsetWidth, app.root[0].offsetHeight, offset.left, offset.top];\n app.width = width;\n app.height = height;\n app.left = left;\n app.top = top;\n return { width, height, left, top };\n },\n },\n on: {\n init() {\n const app = this;\n\n // Get Size\n app.getSize();\n\n // Emit resize\n window.addEventListener('resize', () => {\n app.emit('resize');\n }, false);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', () => {\n app.emit('orientationchange');\n });\n },\n orientationchange() {\n const app = this;\n // Fix iPad weird body scroll\n if (app.device.ipad) {\n document.body.scrollLeft = 0;\n setTimeout(() => {\n document.body.scrollLeft = 0;\n }, 0);\n }\n },\n resize() {\n const app = this;\n app.getSize();\n },\n },\n};\n","/* eslint no-param-reassign: \"off\" */\nimport Request from '../../utils/request';\n\nexport default {\n name: 'request',\n proto: {\n request: Request,\n },\n static: {\n request: Request,\n },\n};\n","/* eslint-disable no-nested-ternary */\nimport { window, document } from 'ssr-window';\nimport $ from 'dom7';\nimport Support from '../../utils/support';\nimport Device from '../../utils/device';\n\nfunction initTouch() {\n const app = this;\n const params = app.params.touch;\n const useRipple = params[`${app.theme}TouchRipple`];\n\n if (Device.ios && Device.webView) {\n // Strange hack required for iOS 8 webview to work on inputs\n window.addEventListener('touchstart', () => {});\n }\n\n let touchStartX;\n let touchStartY;\n let targetElement;\n let isMoved;\n let tapHoldFired;\n let tapHoldTimeout;\n let preventClick;\n\n let activableElement;\n let activeTimeout;\n\n let rippleWave;\n let rippleTarget;\n let rippleTimeout;\n\n function findActivableElement(el) {\n const target = $(el);\n const parents = target.parents(params.activeStateElements);\n if (target.closest('.no-active-state').length) {\n return null;\n }\n let activable;\n if (target.is(params.activeStateElements)) {\n activable = target;\n }\n if (parents.length > 0) {\n activable = activable ? activable.add(parents) : parents;\n }\n if (activable && activable.length > 1) {\n const newActivable = [];\n let preventPropagation;\n for (let i = 0; i < activable.length; i += 1) {\n if (!preventPropagation) {\n newActivable.push(activable[i]);\n if (activable.eq(i).hasClass('prevent-active-state-propagation')\n || activable.eq(i).hasClass('no-active-state-propagation')\n ) {\n preventPropagation = true;\n }\n }\n }\n activable = $(newActivable);\n }\n return activable || target;\n }\n\n function isInsideScrollableView(el) {\n const pageContent = el.parents('.page-content');\n return pageContent.length > 0;\n }\n\n function addActive() {\n if (!activableElement) return;\n activableElement.addClass('active-state');\n }\n function removeActive() {\n if (!activableElement) return;\n activableElement.removeClass('active-state');\n activableElement = null;\n }\n\n // Ripple handlers\n function findRippleElement(el) {\n const rippleElements = params.touchRippleElements;\n const $el = $(el);\n if ($el.is(rippleElements)) {\n if ($el.hasClass('no-ripple')) {\n return false;\n }\n return $el;\n }\n if ($el.parents(rippleElements).length > 0) {\n const rippleParent = $el.parents(rippleElements).eq(0);\n if (rippleParent.hasClass('no-ripple')) {\n return false;\n }\n return rippleParent;\n }\n return false;\n }\n function createRipple($el, x, y) {\n if (!$el) return;\n rippleWave = app.touchRipple.create($el, x, y);\n }\n\n function removeRipple() {\n if (!rippleWave) return;\n rippleWave.remove();\n rippleWave = undefined;\n rippleTarget = undefined;\n }\n function rippleTouchStart(el) {\n rippleTarget = findRippleElement(el);\n if (!rippleTarget || rippleTarget.length === 0) {\n rippleTarget = undefined;\n return;\n }\n const inScrollable = isInsideScrollableView(rippleTarget);\n\n if (!inScrollable) {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n } else {\n clearTimeout(rippleTimeout);\n rippleTimeout = setTimeout(() => {\n removeRipple();\n createRipple(rippleTarget, touchStartX, touchStartY);\n }, 80);\n }\n }\n function rippleTouchMove() {\n clearTimeout(rippleTimeout);\n removeRipple();\n }\n function rippleTouchEnd() {\n if (!rippleWave && rippleTarget && !isMoved) {\n clearTimeout(rippleTimeout);\n createRipple(rippleTarget, touchStartX, touchStartY);\n setTimeout(removeRipple, 0);\n } else {\n removeRipple();\n }\n }\n\n // Mouse Handlers\n function handleMouseDown(e) {\n const $activableEl = findActivableElement(e.target);\n if ($activableEl) {\n $activableEl.addClass('active-state');\n if ('which' in e && e.which === 3) {\n setTimeout(() => {\n $('.active-state').removeClass('active-state');\n }, 0);\n }\n }\n\n if (useRipple) {\n touchStartX = e.pageX;\n touchStartY = e.pageY;\n rippleTouchStart(e.target, e.pageX, e.pageY);\n }\n }\n function handleMouseMove() {\n if (!params.activeStateOnMouseMove) {\n $('.active-state').removeClass('active-state');\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n function handleMouseUp() {\n $('.active-state').removeClass('active-state');\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchCancel() {\n targetElement = null;\n\n // Remove Active State\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (params.activeState) {\n removeActive();\n }\n\n // Remove Ripple\n if (useRipple) {\n rippleTouchEnd();\n }\n }\n\n function handleTouchStart(e) {\n isMoved = false;\n tapHoldFired = false;\n preventClick = false;\n if (e.targetTouches.length > 1) {\n if (activableElement) removeActive();\n return true;\n }\n if (e.touches.length > 1 && activableElement) {\n removeActive();\n }\n if (params.tapHold) {\n if (tapHoldTimeout) clearTimeout(tapHoldTimeout);\n tapHoldTimeout = setTimeout(() => {\n if (e && e.touches && e.touches.length > 1) return;\n tapHoldFired = true;\n e.preventDefault();\n preventClick = true;\n $(e.target).trigger('taphold', e);\n app.emit('taphold', e);\n }, params.tapHoldDelay);\n }\n targetElement = e.target;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n\n if (params.activeState) {\n activableElement = findActivableElement(targetElement);\n if (activableElement && !isInsideScrollableView(activableElement)) {\n addActive();\n } else if (activableElement) {\n activeTimeout = setTimeout(addActive, 80);\n }\n }\n if (useRipple) {\n rippleTouchStart(targetElement, touchStartX, touchStartY);\n }\n return true;\n }\n function handleTouchMove(e) {\n let touch;\n let distance;\n if (e.type === 'touchmove') {\n touch = e.targetTouches[0];\n distance = params.touchClicksDistanceThreshold;\n }\n\n if (distance && touch) {\n const pageX = touch.pageX;\n const pageY = touch.pageY;\n if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {\n isMoved = true;\n }\n } else {\n isMoved = true;\n }\n if (isMoved) {\n preventClick = true;\n if (params.tapHold) {\n clearTimeout(tapHoldTimeout);\n }\n if (params.activeState) {\n clearTimeout(activeTimeout);\n removeActive();\n }\n if (useRipple) {\n rippleTouchMove();\n }\n }\n }\n function handleTouchEnd(e) {\n clearTimeout(activeTimeout);\n clearTimeout(tapHoldTimeout);\n if (document.activeElement === e.target) {\n if (params.activeState) removeActive();\n if (useRipple) {\n rippleTouchEnd();\n }\n return true;\n }\n if (params.activeState) {\n addActive();\n setTimeout(removeActive, 0);\n }\n if (useRipple) {\n rippleTouchEnd();\n }\n if ((params.tapHoldPreventClicks && tapHoldFired) || preventClick) {\n if (e.cancelable) e.preventDefault();\n preventClick = true;\n return false;\n }\n return true;\n }\n function handleClick(e) {\n const isOverswipe = e && e.detail && e.detail === 'f7Overswipe';\n let localPreventClick = preventClick;\n if (targetElement && e.target !== targetElement) {\n if (isOverswipe) {\n localPreventClick = false;\n } else {\n localPreventClick = true;\n }\n }\n if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {\n localPreventClick = true;\n }\n if (localPreventClick) {\n e.stopImmediatePropagation();\n e.stopPropagation();\n e.preventDefault();\n }\n\n if (params.tapHold) {\n tapHoldTimeout = setTimeout(\n () => {\n tapHoldFired = false;\n },\n (Device.ios || Device.androidChrome ? 100 : 400)\n );\n }\n preventClick = false;\n targetElement = null;\n\n return !localPreventClick;\n }\n\n function emitAppTouchEvent(name, e) {\n app.emit({\n events: name,\n data: [e],\n });\n }\n function appClick(e) {\n emitAppTouchEvent('click', e);\n }\n function appTouchStartActive(e) {\n emitAppTouchEvent('touchstart touchstart:active', e);\n }\n function appTouchMoveActive(e) {\n emitAppTouchEvent('touchmove touchmove:active', e);\n }\n function appTouchEndActive(e) {\n emitAppTouchEvent('touchend touchend:active', e);\n }\n function appTouchStartPassive(e) {\n emitAppTouchEvent('touchstart:passive', e);\n }\n function appTouchMovePassive(e) {\n emitAppTouchEvent('touchmove:passive', e);\n }\n function appTouchEndPassive(e) {\n emitAppTouchEvent('touchend:passive', e);\n }\n function appGestureActive(e) {\n emitAppTouchEvent(`${e.type} ${e.type}:active`, e);\n }\n function appGesturePassive(e) {\n emitAppTouchEvent(`${e.type}:passive`, e);\n }\n\n\n const passiveListener = Support.passiveListener ? { passive: true } : false;\n const passiveListenerCapture = Support.passiveListener ? { passive: true, capture: true } : true;\n const activeListener = Support.passiveListener ? { passive: false } : false;\n const activeListenerCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n document.addEventListener('click', appClick, true);\n\n if (Support.passiveListener) {\n document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);\n document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);\n\n document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);\n document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);\n document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);\n if (Support.touch && Support.gestures) {\n document.addEventListener('gesturestart', appGestureActive, activeListener);\n document.addEventListener('gesturechange', appGestureActive, activeListener);\n document.addEventListener('gestureend', appGestureActive, activeListener);\n\n document.addEventListener('gesturestart', appGesturePassive, passiveListener);\n document.addEventListener('gesturechange', appGesturePassive, passiveListener);\n document.addEventListener('gestureend', appGesturePassive, passiveListener);\n }\n } else {\n document.addEventListener(app.touchEvents.start, (e) => {\n appTouchStartActive(e);\n appTouchStartPassive(e);\n }, true);\n document.addEventListener(app.touchEvents.move, (e) => {\n appTouchMoveActive(e);\n appTouchMovePassive(e);\n }, false);\n document.addEventListener(app.touchEvents.end, (e) => {\n appTouchEndActive(e);\n appTouchEndPassive(e);\n }, false);\n if (Support.touch && Support.gestures) {\n document.addEventListener('gesturestart', (e) => {\n appGestureActive(e);\n appGesturePassive(e);\n }, false);\n document.addEventListener('gesturechange', (e) => {\n appGestureActive(e);\n appGesturePassive(e);\n }, false);\n document.addEventListener('gestureend', (e) => {\n appGestureActive(e);\n appGesturePassive(e);\n }, false);\n }\n }\n\n if (Support.touch) {\n app.on('click', handleClick);\n app.on('touchstart', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n document.addEventListener('touchcancel', handleTouchCancel, { passive: true });\n } else if (params.activeState) {\n app.on('touchstart', handleMouseDown);\n app.on('touchmove', handleMouseMove);\n app.on('touchend', handleMouseUp);\n document.addEventListener('pointercancel', handleMouseUp, { passive: true });\n }\n document.addEventListener('contextmenu', (e) => {\n if (params.disableContextMenu && (Device.ios || Device.android || Device.cordova)) {\n e.preventDefault();\n }\n if (useRipple) {\n if (activableElement) removeActive();\n rippleTouchEnd();\n }\n });\n}\n\nexport default {\n name: 'touch',\n params: {\n touch: {\n // Clicks\n touchClicksDistanceThreshold: 5,\n // ContextMenu\n disableContextMenu: false,\n // Tap Hold\n tapHold: false,\n tapHoldDelay: 750,\n tapHoldPreventClicks: true,\n // Active State\n activeState: true,\n activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',\n activeStateOnMouseMove: false,\n mdTouchRipple: true,\n iosTouchRipple: false,\n auroraTouchRipple: false,\n touchRippleElements: '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',\n },\n },\n instance: {\n touchEvents: {\n start: Support.touch ? 'touchstart' : (Support.pointerEvents ? 'pointerdown' : 'mousedown'),\n move: Support.touch ? 'touchmove' : (Support.pointerEvents ? 'pointermove' : 'mousemove'),\n end: Support.touch ? 'touchend' : (Support.pointerEvents ? 'pointerup' : 'mouseup'),\n },\n },\n on: {\n init: initTouch,\n },\n};\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern)\n throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n // tslint:disable-next-line\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n }\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n }\n else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n }\n else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n }\n else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n if (end) {\n if (!strict)\n route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiter.indexOf(endToken[endToken.length - 1]) > -1\n : // tslint:disable-next-line\n endToken === undefined;\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { window, document } from 'ssr-window';\nimport $ from 'dom7';\nimport Utils from './utils';\n\nconst History = {\n queue: [],\n clearQueue() {\n if (History.queue.length === 0) return;\n const currentQueue = History.queue.shift();\n currentQueue();\n },\n routerQueue: [],\n clearRouterQueue() {\n if (History.routerQueue.length === 0) return;\n const currentQueue = History.routerQueue.pop();\n const { router, stateUrl, action } = currentQueue;\n\n let animate = router.params.animate;\n if (router.params.pushStateAnimate === false) animate = false;\n\n if (action === 'back') {\n router.back({ animate, pushState: false });\n }\n if (action === 'load') {\n router.navigate(stateUrl, { animate, pushState: false });\n }\n },\n handle(e) {\n if (History.blockPopstate) return;\n const app = this;\n // const mainView = app.views.main;\n let state = e.state;\n History.previousState = History.state;\n History.state = state;\n\n History.allowChange = true;\n History.clearQueue();\n\n state = History.state;\n if (!state) state = {};\n\n app.views.forEach((view) => {\n const router = view.router;\n let viewState = state[view.id];\n if (!viewState && view.params.pushState) {\n viewState = {\n url: view.router.history[0],\n };\n }\n if (!viewState) return;\n const stateUrl = viewState.url || undefined;\n\n let animate = router.params.animate;\n if (router.params.pushStateAnimate === false) animate = false;\n\n if (stateUrl !== router.url) {\n if (router.history.indexOf(stateUrl) >= 0) {\n // Go Back\n if (router.allowPageChange) {\n router.back({ animate, pushState: false });\n } else {\n History.routerQueue.push({\n action: 'back',\n router,\n });\n }\n } else if (router.allowPageChange) {\n // Load page\n router.navigate(stateUrl, { animate, pushState: false });\n } else {\n History.routerQueue.unshift({\n action: 'load',\n stateUrl,\n router,\n });\n }\n }\n });\n },\n initViewState(viewId, viewState) {\n const newState = Utils.extend({}, (History.state || {}), {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '');\n },\n push(viewId, viewState, url) {\n if (!History.allowChange) {\n History.queue.push(() => {\n History.push(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = Utils.extend({}, (History.previousState || {}), {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.pushState(newState, '', url);\n },\n replace(viewId, viewState, url) {\n if (!History.allowChange) {\n History.queue.push(() => {\n History.replace(viewId, viewState, url);\n });\n return;\n }\n History.previousState = History.state;\n const newState = Utils.extend({}, (History.previousState || {}), {\n [viewId]: viewState,\n });\n History.state = newState;\n window.history.replaceState(newState, '', url);\n },\n go(index) {\n History.allowChange = false;\n window.history.go(index);\n },\n back() {\n History.allowChange = false;\n window.history.back();\n },\n allowChange: true,\n previousState: {},\n state: window.history.state,\n blockPopstate: true,\n init(app) {\n $(window).on('load', () => {\n setTimeout(() => {\n History.blockPopstate = false;\n }, 0);\n });\n\n if (document.readyState && document.readyState === 'complete') {\n History.blockPopstate = false;\n }\n\n $(window).on('popstate', History.handle.bind(app));\n },\n};\n\nexport default History;\n","import $ from 'dom7';\nimport History from '../../utils/history';\nimport Support from '../../utils/support';\nimport Device from '../../utils/device';\nimport Utils from '../../utils/utils';\n\nfunction SwipeBack(r) {\n const router = r;\n const { $el, $navbarsEl, app, params } = router;\n let isTouched = false;\n let isMoved = false;\n const touchesStart = {};\n let isScrolling;\n let $currentPageEl = [];\n let $previousPageEl = [];\n let viewContainerWidth;\n let touchesDiff;\n let allowViewTouchMove = true;\n let touchStartTime;\n let $currentNavbarEl = [];\n let $previousNavbarEl = [];\n let dynamicNavbar;\n let $pageShadowEl;\n let $pageOpacityEl;\n\n let animatableNavEls;\n\n const paramsSwipeBackAnimateShadow = params[`${app.theme}SwipeBackAnimateShadow`];\n const paramsSwipeBackAnimateOpacity = params[`${app.theme}SwipeBackAnimateOpacity`];\n const paramsSwipeBackActiveArea = params[`${app.theme}SwipeBackActiveArea`];\n const paramsSwipeBackThreshold = params[`${app.theme}SwipeBackThreshold`];\n\n const transformOrigin = app.rtl ? 'right center' : 'left center';\n const transformOriginTitleLarge = app.rtl\n ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center'\n : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';\n\n\n function animatableNavElements() {\n const els = [];\n const inverter = app.rtl ? -1 : 1;\n const currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');\n const currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');\n const currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');\n const currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent')\n || (\n $currentNavbarEl.hasClass('navbar-large')\n && $currentNavbarEl.hasClass('navbar-transparent')\n );\n const previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');\n const previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');\n const previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');\n const previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent')\n || (\n $previousNavbarEl.hasClass('navbar-large')\n && $previousNavbarEl.hasClass('navbar-transparent')\n );\n const fromLarge = currentNavIsLarge && !currentNavIsCollapsed;\n const toLarge = previousNavIsLarge && !previousNavIsCollapsed;\n const $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n const $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');\n let activeNavBackIconText;\n let previousNavBackIconText;\n\n if (params.iosAnimateNavbarBackIcon) {\n if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {\n activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {\n previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);\n } else {\n previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);\n }\n if (activeNavBackIconText.length) {\n $previousNavElements.each((index, el) => {\n if (!$(el).hasClass('title')) return;\n el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;\n });\n }\n }\n $currentNavElements\n .each((index, navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && currentNavIsTransparent) return;\n if (!fromLarge && $navEl.hasClass('.title-large')) return;\n const el = {\n el: navEl,\n };\n if (fromLarge) {\n if (isTitle) return;\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subIndex, subNavEl) => {\n els.push({\n el: subNavEl,\n transform: progress => `translateX(${progress * 100 * inverter}%)`,\n });\n });\n return;\n }\n }\n if (toLarge) {\n if (!fromLarge) {\n if ($navEl.hasClass('title-large')) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = 0;\n }\n }\n if (isLeft) {\n if (els.indexOf(el) < 0) els.push(el);\n el.opacity = progress => (1 - (progress ** 0.33));\n $navEl.find('.back span').each((subIndex, subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOrigin,\n transform: progress => `translateX(calc(${progress} * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(${progress} * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(${1 + (1 * progress)})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (currentNavIsCollapsed) {\n if (currentNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%)`;\n }\n if (fromLarge && !toLarge) {\n el.transform = progress => `translateX(${100 * progress * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = progress => (1 - (progress ** 0.33));\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: activeNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;\n if (Device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);\n if (isSubnavbar && currentNavIsLarge) {\n return `translate3d(${activeNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${activeNavTranslate}px,0,0)`;\n };\n }\n });\n $previousNavElements\n .each((index, navEl) => {\n const $navEl = $(navEl);\n const isSubnavbar = $navEl.hasClass('subnavbar');\n const isLeft = $navEl.hasClass('left');\n const isTitle = $navEl.hasClass('title');\n const isBg = $navEl.hasClass('navbar-bg');\n if ((isTitle || isBg) && previousNavIsTransparent) return;\n const el = {\n el: navEl,\n };\n if (toLarge) {\n if (isTitle) return;\n if (els.indexOf(el) < 0) els.push(el);\n\n if ($navEl.hasClass('title-large')) {\n el.opacity = 1;\n el.overflow = 'visible';\n $navEl.find('.title-large-text').each((subIndex, subNavEl) => {\n els.push({\n el: subNavEl,\n 'transform-origin': transformOriginTitleLarge,\n opacity: progress => (progress ** 3),\n transform: progress => `translateX(calc(${1 - progress} * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(${progress - 1} * var(--f7-navbar-large-title-height) + ${1 - progress} * var(--f7-navbar-large-title-padding-vertical))) scale(${0.5 + progress * 0.5})`,\n });\n });\n return;\n }\n }\n if (isBg) {\n if (els.indexOf(el) < 0) els.push(el);\n if (!fromLarge && !toLarge) {\n if (previousNavIsCollapsed) {\n if (previousNavIsLargeTransparent) {\n el.className = 'ios-swipeback-navbar-bg-large';\n }\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))`;\n } else {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n }\n if (!fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-1 * ${1 - progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && !toLarge) {\n el.className = 'ios-swipeback-navbar-bg-large';\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%) translateY(calc(-${progress} * var(--f7-navbar-large-title-height)))`;\n }\n if (fromLarge && toLarge) {\n el.transform = progress => `translateX(${(-100 + 100 * progress) * inverter}%)`;\n }\n\n return;\n }\n if ($navEl.hasClass('title-large')) return;\n const isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;\n if (els.indexOf(el) < 0) els.push(el);\n if (!isSubnavbar || (isSubnavbar && !isSliding)) {\n el.opacity = progress => (progress ** 3);\n }\n if (isSliding) {\n let transformTarget = el;\n if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {\n const textEl = { el: previousNavBackIconText[0] };\n transformTarget = textEl;\n els.push(textEl);\n }\n transformTarget.transform = (progress) => {\n let previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);\n if (Device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);\n if (isSubnavbar && previousNavIsLarge) {\n return `translate3d(${previousNavTranslate}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`;\n }\n return `translate3d(${previousNavTranslate}px,0,0)`;\n };\n }\n });\n return els;\n }\n\n function setAnimatableNavElements({ progress, reset, transition } = {}) {\n const styles = ['overflow', 'transform', 'transform-origin', 'opacity'];\n for (let i = 0; i < animatableNavEls.length; i += 1) {\n const el = animatableNavEls[i];\n if (el && el.el) {\n if (transition === true) el.el.classList.add('navbar-page-transitioning');\n if (transition === false) el.el.classList.remove('navbar-page-transitioning');\n if (el.className && !el.classNameSet && !reset) {\n el.el.classList.add(el.className);\n el.classNameSet = true;\n }\n if (el.className && reset) {\n el.el.classList.remove(el.className);\n }\n for (let j = 0; j < styles.length; j += 1) {\n const styleProp = styles[j];\n if (el[styleProp]) {\n if (reset) {\n el.el.style[styleProp] = '';\n } else if (typeof el[styleProp] === 'function') {\n el.el.style[styleProp] = el[styleProp](progress);\n } else {\n el.el.style[styleProp] = el[styleProp];\n }\n }\n }\n }\n }\n }\n\n function handleTouchStart(e) {\n const swipeBackEnabled = params[`${app.theme}SwipeBack`];\n if (!allowViewTouchMove || !swipeBackEnabled || isTouched || (app.swipeout && app.swipeout.el) || !router.allowPageChange) return;\n if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;\n if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = Utils.now();\n dynamicNavbar = router.dynamicNavbar;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || (pageX < touchesStart.x && !app.rtl) || (pageX > touchesStart.x && app.rtl);\n }\n if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {\n isTouched = false;\n return;\n }\n if (!isMoved) {\n // Calc values during first move fired\n let cancel = false;\n const target = $(e.target);\n\n const swipeout = target.closest('.swipeout');\n if (swipeout.length > 0) {\n if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;\n if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;\n }\n\n $currentPageEl = target.closest('.page');\n if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;\n $previousPageEl = $el.find('.page-previous:not(.stacked)');\n if ($previousPageEl.length > 1) {\n $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);\n }\n let notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n viewContainerWidth = $el.width();\n if (app.rtl) {\n notFromBorder = touchesStart.x < ($el.offset().left - $el[0].scrollLeft) + (viewContainerWidth - paramsSwipeBackActiveArea);\n } else {\n notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;\n }\n if (notFromBorder) cancel = true;\n if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;\n if (cancel) {\n isTouched = false;\n return;\n }\n\n if (paramsSwipeBackAnimateShadow) {\n $pageShadowEl = $currentPageEl.find('.page-shadow-effect');\n if ($pageShadowEl.length === 0) {\n $pageShadowEl = $('<div class=\"page-shadow-effect\"></div>');\n $currentPageEl.append($pageShadowEl);\n }\n }\n if (paramsSwipeBackAnimateOpacity) {\n $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');\n if ($pageOpacityEl.length === 0) {\n $pageOpacityEl = $('<div class=\"page-opacity-effect\"></div>');\n $previousPageEl.append($pageOpacityEl);\n }\n }\n\n if (dynamicNavbar) {\n $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');\n $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');\n if ($previousNavbarEl.length > 1) {\n $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);\n }\n\n animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);\n }\n\n // Close/Hide Any Picker\n if ($('.sheet.modal-in').length > 0 && app.sheet) {\n app.sheet.close($('.sheet.modal-in'));\n }\n }\n e.f7PreventSwipePanel = true;\n isMoved = true;\n app.preventSwipePanelBySwipeBack = true;\n e.preventDefault();\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n // Touches diff\n touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;\n if (touchesDiff < 0) touchesDiff = 0;\n const percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);\n\n // Swipe Back Callback\n const callbackData = {\n percentage,\n progress: percentage,\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n $el.trigger('swipeback:move', callbackData);\n router.emit('swipebackMove', callbackData);\n\n // Transform pages\n let currentPageTranslate = touchesDiff * inverter;\n let previousPageTranslate = ((touchesDiff / 5) - (viewContainerWidth / 5)) * inverter;\n if (!app.rtl) {\n currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);\n previousPageTranslate = Math.min(previousPageTranslate, 0);\n } else {\n currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);\n previousPageTranslate = Math.max(previousPageTranslate, 0);\n }\n if (Device.pixelRatio === 1) {\n currentPageTranslate = Math.round(currentPageTranslate);\n previousPageTranslate = Math.round(previousPageTranslate);\n }\n\n router.swipeBackActive = true;\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');\n\n $currentPageEl.transform(`translate3d(${currentPageTranslate}px,0,0)`);\n if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - (1 * percentage);\n\n if (app.theme === 'ios') {\n $previousPageEl.transform(`translate3d(${previousPageTranslate}px,0,0)`);\n }\n if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - (1 * percentage);\n\n // Dynamic Navbars Animation\n if (!dynamicNavbar) return;\n\n setAnimatableNavElements({ progress: percentage });\n }\n function handleTouchEnd() {\n app.preventSwipePanelBySwipeBack = false;\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n router.swipeBackActive = false;\n $([$currentPageEl[0], $previousPageEl[0]]).removeClass('page-swipeback-active');\n if (touchesDiff === 0) {\n $([$currentPageEl[0], $previousPageEl[0]]).transform('');\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true });\n }\n return;\n }\n const timeDiff = Utils.now() - touchStartTime;\n let pageChanged = false;\n // Swipe back to previous page\n if (\n (timeDiff < 300 && touchesDiff > 10)\n || (timeDiff >= 300 && touchesDiff > viewContainerWidth / 2)\n ) {\n $currentPageEl.removeClass('page-current').addClass(`page-next${app.theme !== 'ios' ? ' page-next-on-right' : ''}`);\n $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');\n if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';\n if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';\n if (dynamicNavbar) {\n router.setNavbarPosition($currentNavbarEl, 'next');\n router.setNavbarPosition($previousNavbarEl, 'current', false);\n }\n pageChanged = true;\n }\n // Reset custom styles\n // Add transitioning class for transition-duration\n $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-transitioning page-transitioning-swipeback').transform('');\n\n if (dynamicNavbar) {\n setAnimatableNavElements({ progress: pageChanged ? 1 : 0, transition: true });\n }\n allowViewTouchMove = false;\n router.allowPageChange = false;\n\n // Swipe Back Callback\n const callbackData = {\n currentPageEl: $currentPageEl[0],\n previousPageEl: $previousPageEl[0],\n currentNavbarEl: $currentNavbarEl[0],\n previousNavbarEl: $previousNavbarEl[0],\n };\n\n if (pageChanged) {\n // Update Route\n router.currentRoute = $previousPageEl[0].f7Page.route;\n router.currentPage = $previousPageEl[0];\n\n // Page before animation callback\n router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', { route: $currentPageEl[0].f7Page.route, swipeBack: true });\n router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', { route: $previousPageEl[0].f7Page.route, swipeBack: true }, $currentPageEl[0]);\n\n $el.trigger('swipeback:beforechange', callbackData);\n router.emit('swipebackBeforeChange', callbackData);\n } else {\n $el.trigger('swipeback:beforereset', callbackData);\n router.emit('swipebackBeforeReset', callbackData);\n }\n\n $currentPageEl.transitionEnd(() => {\n $([$currentPageEl[0], $previousPageEl[0]]).removeClass('page-transitioning page-transitioning-swipeback');\n if (dynamicNavbar) {\n setAnimatableNavElements({ reset: true, transition: false });\n }\n allowViewTouchMove = true;\n router.allowPageChange = true;\n if (pageChanged) {\n // Update History\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n router.saveHistory();\n\n // Update push state\n if (params.pushState) {\n History.back();\n }\n\n // Page after animation callback\n router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', { route: $currentPageEl[0].f7Page.route, swipeBack: true });\n router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', { route: $previousPageEl[0].f7Page.route, swipeBack: true });\n\n // Remove Old Page\n if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {\n $currentPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $currentNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', { swipeBack: true });\n router.removePage($currentPageEl);\n if (dynamicNavbar) {\n router.removeNavbar($currentNavbarEl);\n }\n }\n\n $el.trigger('swipeback:afterchange', callbackData);\n router.emit('swipebackAfterChange', callbackData);\n\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (params.preloadPreviousPage) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n } else {\n $el.trigger('swipeback:afterreset', callbackData);\n router.emit('swipebackAfterReset', callbackData);\n }\n if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();\n if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();\n });\n }\n\n function attachEvents() {\n const passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachEvents() {\n const passiveListener = (app.touchEvents.start === 'touchstart' && Support.passiveListener) ? { passive: true, capture: false } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n attachEvents();\n\n router.on('routerDestroy', detachEvents);\n}\n\nexport default SwipeBack;\n","import Utils from '../../utils/utils';\n\nexport default function (direction, route, options) {\n const router = this;\n const redirect = route.route.redirect;\n if (options.initial && router.params.pushState) {\n options.replaceState = true; // eslint-disable-line\n options.history = true; // eslint-disable-line\n }\n function redirectResolve(redirectUrl, redirectOptions = {}) {\n router.allowPageChange = true;\n router[direction](redirectUrl, Utils.extend({}, options, redirectOptions));\n }\n function redirectReject() {\n router.allowPageChange = true;\n }\n if (typeof redirect === 'function') {\n router.allowPageChange = false;\n const redirectUrl = redirect.call(router, route, redirectResolve, redirectReject);\n if (redirectUrl && typeof redirectUrl === 'string') {\n router.allowPageChange = true;\n return router[direction](redirectUrl, options);\n }\n return router;\n }\n return router[direction](redirect, options);\n}\n","function processQueue(router, routerQueue, routeQueue, to, from, resolve, reject) {\n const queue = [];\n\n if (Array.isArray(routeQueue)) {\n queue.push(...routeQueue);\n } else if (routeQueue && typeof routeQueue === 'function') {\n queue.push(routeQueue);\n }\n if (routerQueue) {\n if (Array.isArray(routerQueue)) {\n queue.push(...routerQueue);\n } else {\n queue.push(routerQueue);\n }\n }\n\n function next() {\n if (queue.length === 0) {\n resolve();\n return;\n }\n const queueItem = queue.shift();\n\n queueItem.call(\n router,\n to,\n from,\n () => {\n next();\n },\n () => {\n reject();\n }\n );\n }\n next();\n}\n\nexport default function (to, from, resolve, reject) {\n const router = this;\n function enterNextRoute() {\n if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeEnter,\n to.route.beforeEnter,\n to,\n from,\n () => {\n router.allowPageChange = true;\n resolve();\n },\n () => {\n reject();\n },\n );\n } else {\n resolve();\n }\n }\n function leaveCurrentRoute() {\n if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {\n router.allowPageChange = false;\n processQueue(\n router,\n router.params.routesBeforeLeave,\n from.route.beforeLeave,\n to,\n from,\n () => {\n router.allowPageChange = true;\n enterNextRoute();\n },\n () => {\n reject();\n },\n );\n } else {\n enterNextRoute();\n }\n }\n leaveCurrentRoute();\n}\n","export default function (router, method) {\n if (!router.view) {\n throw new Error(`Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router.${method}(...)`);\n }\n}\n","export default function (router, asyncComponent, resolve, reject) {\n function resolvePromise(componentPromise) {\n componentPromise\n .then((c) => {\n // eslint-disable-next-line\n resolve({ component: c.default || c._default || c });\n })\n .catch((err) => {\n reject();\n throw new Error(err);\n });\n }\n if (asyncComponent instanceof Promise) {\n resolvePromise(asyncComponent);\n return;\n }\n const asyncComponentResult = asyncComponent.call(router);\n if (asyncComponentResult instanceof Promise) {\n resolvePromise(asyncComponentResult);\n } else {\n resolve({ component: asyncComponentResult });\n }\n}\n","import { window, document } from 'ssr-window';\nimport $ from 'dom7';\nimport { pathToRegexp, compile } from 'path-to-regexp';\nimport Framework7Class from '../../utils/class';\nimport Utils from '../../utils/utils';\nimport History from '../../utils/history';\nimport SwipeBack from './swipe-back';\n\nimport { refreshPage, forward, load, navigate } from './navigate';\nimport { tabLoad, tabRemove } from './tab';\nimport { modalLoad, modalRemove } from './modal';\nimport { backward, loadBack, back } from './back';\nimport { clearPreviousHistory } from './clear-previous-history';\nimport appRouterCheck from './app-router-check';\n\nclass Router extends Framework7Class {\n constructor(app, view) {\n super({}, [typeof view === 'undefined' ? app : view]);\n const router = this;\n\n // Is App Router\n router.isAppRouter = typeof view === 'undefined';\n\n if (router.isAppRouter) {\n // App Router\n Utils.extend(false, router, {\n app,\n params: app.params.view,\n routes: app.routes || [],\n cache: app.cache,\n });\n } else {\n // View Router\n Utils.extend(false, router, {\n app,\n view,\n viewId: view.id,\n params: view.params,\n routes: view.routes,\n $el: view.$el,\n el: view.el,\n $navbarsEl: view.$navbarsEl,\n navbarsEl: view.navbarsEl,\n history: view.history,\n scrollHistory: view.scrollHistory,\n cache: app.cache,\n dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,\n initialPages: [],\n initialNavbars: [],\n });\n }\n\n // Install Modules\n router.useModules();\n\n // Temporary Dom\n router.tempDom = document.createElement('div');\n\n // AllowPageChage\n router.allowPageChange = true;\n\n // Current Route\n let currentRoute = {};\n let previousRoute = {};\n Object.defineProperty(router, 'currentRoute', {\n enumerable: true,\n configurable: true,\n set(newRoute = {}) {\n previousRoute = Utils.extend({}, currentRoute);\n currentRoute = newRoute;\n if (!currentRoute) return;\n router.url = currentRoute.url;\n router.emit('routeChange', newRoute, previousRoute, router);\n },\n get() {\n return currentRoute;\n },\n });\n Object.defineProperty(router, 'previousRoute', {\n enumerable: true,\n configurable: true,\n get() {\n return previousRoute;\n },\n set(newRoute) {\n previousRoute = newRoute;\n },\n });\n\n return router;\n }\n\n animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {\n const router = this;\n const dynamicNavbar = router.dynamicNavbar;\n const animateIcon = router.params.iosAnimateNavbarBackIcon;\n\n let newNavEls;\n let oldNavEls;\n function animatableNavEl($el, $navbarInner) {\n const isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');\n const isSubnavbar = $el.hasClass('subnavbar');\n const needsOpacityTransition = isSliding ? !isSubnavbar : true;\n const $iconEl = $el.find('.back .icon');\n let isIconLabel;\n if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {\n $el = $iconEl.next('span'); // eslint-disable-line\n isIconLabel = true;\n }\n return {\n $el,\n isIconLabel,\n leftOffset: $el[0].f7NavbarLeftOffset,\n rightOffset: $el[0].f7NavbarRightOffset,\n isSliding,\n isSubnavbar,\n needsOpacityTransition,\n };\n }\n if (dynamicNavbar) {\n newNavEls = [];\n oldNavEls = [];\n $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each((index, navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('title') && toLarge) return;\n newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));\n });\n if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {\n $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each((index, navEl) => {\n const $navEl = $(navEl);\n if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;\n if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;\n if ($navEl.hasClass('title') && fromLarge) {\n return;\n }\n oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));\n });\n }\n [oldNavEls, newNavEls].forEach((navEls) => {\n navEls.forEach((navEl) => {\n const n = navEl;\n const { isSliding, $el } = navEl;\n const otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;\n if (!(isSliding && $el.hasClass('title') && otherEls)) return;\n otherEls.forEach((otherNavEl) => {\n if (otherNavEl.isIconLabel) {\n const iconTextEl = otherNavEl.$el[0];\n n.leftOffset += iconTextEl ? (iconTextEl.offsetLeft || 0) : 0;\n }\n });\n });\n });\n }\n\n return { newNavEls, oldNavEls };\n }\n\n animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {\n const router = this;\n if (router.params.animateCustom) {\n router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);\n return;\n }\n const dynamicNavbar = router.dynamicNavbar;\n const ios = router.app.theme === 'ios';\n if (transition) {\n const routerCustomTransitionClass = `router-transition-custom router-transition-${transition}-${direction}`;\n // Animate\n const onCustomTransitionDone = () => {\n router.$el.removeClass(routerCustomTransitionClass);\n if (dynamicNavbar && router.$navbarsEl.length) {\n if ($newNavbarEl) {\n router.$navbarsEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl) {\n router.$navbarsEl.prepend($oldNavbarEl);\n }\n }\n if (callback) callback();\n };\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);\n if (dynamicNavbar) {\n if ($newNavbarEl && $newPageEl) {\n router.setNavbarPosition($newNavbarEl, '');\n $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $newPageEl.prepend($newNavbarEl);\n }\n if ($oldNavbarEl && $oldPageEl) {\n router.setNavbarPosition($oldNavbarEl, '');\n $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');\n $oldPageEl.prepend($oldNavbarEl);\n }\n }\n\n router.$el.addClass(routerCustomTransitionClass);\n return;\n }\n\n\n // Router Animation class\n const routerTransitionClass = `router-transition-${direction} router-transition`;\n\n let newNavEls;\n let oldNavEls;\n\n let fromLarge;\n let toLarge;\n\n let oldIsLarge;\n let newIsLarge;\n\n if (ios && dynamicNavbar) {\n const betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint\n && (\n ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail'))\n || ($oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'))\n );\n if (!betweenMasterAndDetail) {\n oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');\n newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');\n fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');\n toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');\n }\n const navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);\n newNavEls = navEls.newNavEls;\n oldNavEls = navEls.oldNavEls;\n }\n\n function animateNavbars(progress) {\n if (!(ios && dynamicNavbar)) return;\n if (progress === 1) {\n if (toLarge) {\n $newNavbarEl.addClass('router-navbar-transition-to-large');\n $oldNavbarEl.addClass('router-navbar-transition-to-large');\n }\n if (fromLarge) {\n $newNavbarEl.addClass('router-navbar-transition-from-large');\n $oldNavbarEl.addClass('router-navbar-transition-from-large');\n }\n }\n newNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && newIsLarge) {\n $el[0].style.setProperty('transform', `translate3d(${offset * (1 - progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`, 'important');\n } else {\n $el.transform(`translate3d(${offset * (1 - progress)}px,0,0)`);\n }\n }\n });\n oldNavEls.forEach((navEl) => {\n const $el = navEl.$el;\n const offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;\n if (navEl.isSliding) {\n if (navEl.isSubnavbar && oldIsLarge) {\n $el.transform(`translate3d(${offset * (progress)}px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)`);\n } else {\n $el.transform(`translate3d(${offset * (progress)}px,0,0)`);\n }\n }\n });\n }\n\n // AnimationEnd Callback\n function onDone() {\n if (router.dynamicNavbar) {\n if ($newNavbarEl) {\n $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n $newNavbarEl.addClass('navbar-no-title-large-transition');\n Utils.nextFrame(() => {\n $newNavbarEl.removeClass('navbar-no-title-large-transition');\n });\n }\n if ($oldNavbarEl) {\n $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');\n }\n if ($newNavbarEl.hasClass('sliding')) {\n $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $newNavbarEl.find('.sliding').transform('');\n }\n if ($oldNavbarEl.hasClass('sliding')) {\n $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');\n } else {\n $oldNavbarEl.find('.sliding').transform('');\n }\n }\n router.$el.removeClass(routerTransitionClass);\n if (callback) callback();\n }\n\n (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(() => {\n onDone();\n });\n\n // Animate\n if (dynamicNavbar) {\n // Prepare Navbars\n animateNavbars(0);\n Utils.nextFrame(() => {\n // Add class, start animation\n animateNavbars(1);\n router.$el.addClass(routerTransitionClass);\n });\n } else {\n // Add class, start animation\n router.$el.addClass(routerTransitionClass);\n }\n }\n\n removeModal(modalEl) {\n const router = this;\n router.removeEl(modalEl);\n }\n // eslint-disable-next-line\n removeTabContent(tabEl) {\n const $tabEl = $(tabEl);\n $tabEl.html('');\n }\n\n removeNavbar(el) {\n const router = this;\n router.removeEl(el);\n }\n\n removePage(el) {\n const $el = $(el);\n const f7Page = $el && $el[0] && $el[0].f7Page;\n const router = this;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n $el.remove();\n return;\n }\n router.removeEl(el);\n }\n\n removeEl(el) {\n if (!el) return;\n const router = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.find('.tab').each((tabIndex, tabEl) => {\n $(tabEl).children().each((index, tabChild) => {\n if (tabChild.f7Component) {\n $(tabChild).trigger('tab:beforeremove');\n tabChild.f7Component.$destroy();\n }\n });\n });\n if ($el[0].f7Component && $el[0].f7Component.$destroy) {\n $el[0].f7Component.$destroy();\n }\n if (!router.params.removeElements) {\n return;\n }\n if (router.params.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, router.params.removeElementsTimeout);\n } else {\n $el.remove();\n }\n }\n\n getPageEl(content) {\n const router = this;\n if (typeof content === 'string') {\n router.tempDom.innerHTML = content;\n } else {\n if ($(content).hasClass('page')) {\n return content;\n }\n router.tempDom.innerHTML = '';\n $(router.tempDom).append(content);\n }\n\n return router.findElement('.page', router.tempDom);\n }\n\n findElement(stringSelector, container, notStacked) {\n const router = this;\n const view = router.view;\n const app = router.app;\n\n // Modals Selector\n const modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';\n\n const $container = $(container);\n let selector = stringSelector;\n if (notStacked) selector += ':not(.stacked)';\n\n let found = $container\n .find(selector)\n .filter((index, el) => $(el).parents(modalsSelector).length === 0);\n\n if (found.length > 1) {\n if (typeof view.selector === 'string') {\n // Search in related view\n found = $container.find(`${view.selector} ${selector}`);\n }\n if (found.length > 1) {\n // Search in main view\n found = $container.find(`.${app.params.viewMainClass} ${selector}`);\n }\n }\n if (found.length === 1) return found;\n\n // Try to find not stacked\n if (!notStacked) found = router.findElement(selector, $container, true);\n if (found && found.length === 1) return found;\n if (found && found.length > 1) return $(found[0]);\n return undefined;\n }\n\n flattenRoutes(routes = this.routes) {\n const router = this;\n let flattenedRoutes = [];\n routes.forEach((route) => {\n let hasTabRoutes = false;\n if ('tabs' in route && route.tabs) {\n const mergedPathsRoutes = route.tabs.map((tabRoute) => {\n const tRoute = Utils.extend({}, route, {\n path: (`${route.path}/${tabRoute.path}`).replace('///', '/').replace('//', '/'),\n parentPath: route.path,\n tab: tabRoute,\n });\n delete tRoute.tabs;\n delete tRoute.routes;\n return tRoute;\n });\n hasTabRoutes = true;\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n }\n if ('detailRoutes' in route) {\n const mergedPathsRoutes = route.detailRoutes.map((detailRoute) => {\n const dRoute = Utils.extend({}, detailRoute);\n dRoute.masterRoute = route;\n dRoute.masterRoutePath = route.path;\n return dRoute;\n });\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n if ('routes' in route) {\n const mergedPathsRoutes = route.routes.map((childRoute) => {\n const cRoute = Utils.extend({}, childRoute);\n cRoute.path = (`${route.path}/${cRoute.path}`).replace('///', '/').replace('//', '/');\n return cRoute;\n });\n if (hasTabRoutes) {\n flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));\n } else {\n flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(mergedPathsRoutes));\n }\n }\n if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {\n flattenedRoutes.push(route);\n }\n });\n return flattenedRoutes;\n }\n\n // eslint-disable-next-line\n parseRouteUrl(url) {\n if (!url) return {};\n const query = Utils.parseUrlQuery(url);\n const hash = url.split('#')[1];\n const params = {};\n const path = url.split('#')[0].split('?')[0];\n return {\n query,\n hash,\n params,\n url,\n path,\n };\n }\n\n generateUrl(parameters = {}) {\n if (typeof parameters === 'string') {\n return parameters;\n }\n const { name, params, query } = parameters;\n if (!name) {\n throw new Error('Framework7: name parameter is required');\n }\n const router = this;\n const route = router.findRouteByKey('name', name);\n if (!route) {\n throw new Error(`Framework7: route with name \"${name}\" not found`);\n }\n const url = router.constructRouteUrl(route, { params, query });\n if (!url) {\n throw new Error(`Framework7: can't construct URL for route with name \"${name}\"`);\n }\n return url;\n }\n\n // eslint-disable-next-line\n constructRouteUrl(route, { params, query } = {}) {\n const { path } = route;\n const toUrl = compile(path);\n let url;\n try {\n url = toUrl(params || {});\n } catch (error) {\n throw new Error(`Framework7: error constructing route URL from passed params:\\nRoute: ${path}\\n${error.toString()}`);\n }\n\n if (query) {\n if (typeof query === 'string') url += `?${query}`;\n else url += `?${Utils.serializeObject(query)}`;\n }\n\n return url;\n }\n\n findTabRoute(tabEl) {\n const router = this;\n const $tabEl = $(tabEl);\n const parentPath = router.currentRoute.route.parentPath;\n const tabId = $tabEl.attr('id');\n const flattenedRoutes = router.flattenRoutes(router.routes);\n let foundTabRoute;\n flattenedRoutes.forEach((route) => {\n if (\n route.parentPath === parentPath\n && route.tab\n && route.tab.id === tabId\n ) {\n foundTabRoute = route;\n }\n });\n return foundTabRoute;\n }\n\n findRouteByKey(key, value) {\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n let matchingRoute;\n\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n if (route[key] === value) {\n matchingRoute = route;\n }\n });\n return matchingRoute;\n }\n\n findMatchingRoute(url) {\n if (!url) return undefined;\n const router = this;\n const routes = router.routes;\n const flattenedRoutes = router.flattenRoutes(routes);\n const { path, query, hash, params } = router.parseRouteUrl(url);\n let matchingRoute;\n flattenedRoutes.forEach((route) => {\n if (matchingRoute) return;\n const keys = [];\n\n const pathsToMatch = [route.path];\n if (route.alias) {\n if (typeof route.alias === 'string') pathsToMatch.push(route.alias);\n else if (Array.isArray(route.alias)) {\n route.alias.forEach((aliasPath) => {\n pathsToMatch.push(aliasPath);\n });\n }\n }\n\n let matched;\n pathsToMatch.forEach((pathToMatch) => {\n if (matched) return;\n matched = pathToRegexp(pathToMatch, keys).exec(path);\n });\n\n if (matched) {\n keys.forEach((keyObj, index) => {\n if (typeof keyObj.name === 'number') return;\n const paramValue = matched[index + 1];\n if (typeof paramValue === 'undefined' || paramValue === null) {\n params[keyObj.name] = paramValue;\n } else {\n params[keyObj.name] = decodeURIComponent(paramValue);\n }\n });\n\n let parentPath;\n if (route.parentPath) {\n parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');\n }\n\n matchingRoute = {\n query,\n hash,\n params,\n url,\n path,\n parentPath,\n route,\n name: route.name,\n };\n }\n });\n return matchingRoute;\n }\n\n // eslint-disable-next-line\n replaceRequestUrlParams(url = '', options = {}) {\n let compiledUrl = url;\n if (typeof compiledUrl === 'string'\n && compiledUrl.indexOf('{{') >= 0\n && options\n && options.route\n && options.route.params\n && Object.keys(options.route.params).length\n ) {\n Object.keys(options.route.params).forEach((paramName) => {\n const regExp = new RegExp(`{{${paramName}}}`, 'g');\n compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');\n });\n }\n return compiledUrl;\n }\n\n removeFromXhrCache(url) {\n const router = this;\n const xhrCache = router.cache.xhr;\n let index = false;\n for (let i = 0; i < xhrCache.length; i += 1) {\n if (xhrCache[i].url === url) index = i;\n }\n if (index !== false) xhrCache.splice(index, 1);\n }\n\n xhrRequest(requestUrl, options) {\n const router = this;\n const params = router.params;\n const { ignoreCache } = options;\n let url = requestUrl;\n\n let hasQuery = url.indexOf('?') >= 0;\n if (params.passRouteQueryToRequest\n && options\n && options.route\n && options.route.query\n && Object.keys(options.route.query).length\n ) {\n url += `${hasQuery ? '&' : '?'}${Utils.serializeObject(options.route.query)}`;\n hasQuery = true;\n }\n\n if (params.passRouteParamsToRequest\n && options\n && options.route\n && options.route.params\n && Object.keys(options.route.params).length\n ) {\n url += `${hasQuery ? '&' : '?'}${Utils.serializeObject(options.route.params)}`;\n hasQuery = true;\n }\n\n if (url.indexOf('{{') >= 0) {\n url = router.replaceRequestUrlParams(url, options);\n }\n // should we ignore get params or not\n if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {\n url = url.split('?')[0];\n }\n return new Promise((resolve, reject) => {\n if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {\n for (let i = 0; i < router.cache.xhr.length; i += 1) {\n const cachedUrl = router.cache.xhr[i];\n if (cachedUrl.url === url) {\n // Check expiration\n if (Utils.now() - cachedUrl.time < params.xhrCacheDuration) {\n // Load from cache\n resolve(cachedUrl.content);\n return;\n }\n }\n }\n }\n router.xhr = router.app.request({\n url,\n method: 'GET',\n beforeSend(xhr) {\n router.emit('routerAjaxStart', xhr, options);\n },\n complete(xhr, status) {\n router.emit('routerAjaxComplete', xhr);\n if ((status !== 'error' && status !== 'timeout' && (xhr.status >= 200 && xhr.status < 300)) || xhr.status === 0) {\n if (params.xhrCache && xhr.responseText !== '') {\n router.removeFromXhrCache(url);\n router.cache.xhr.push({\n url,\n time: Utils.now(),\n content: xhr.responseText,\n });\n }\n router.emit('routerAjaxSuccess', xhr, options);\n resolve(xhr.responseText);\n } else {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n }\n },\n error(xhr) {\n router.emit('routerAjaxError', xhr, options);\n reject(xhr);\n },\n });\n });\n }\n\n setNavbarPosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('navbar-previous navbar-current navbar-next');\n if (position) {\n $el.addClass(`navbar-${position}`);\n }\n\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('navbar:position', { position });\n router.emit('navbarPosition', $el[0], position);\n }\n\n setPagePosition($el, position, ariaHidden) {\n const router = this;\n $el.removeClass('page-previous page-current page-next');\n $el.addClass(`page-${position}`);\n if (ariaHidden === false) {\n $el.removeAttr('aria-hidden');\n } else if (ariaHidden === true) {\n $el.attr('aria-hidden', 'true');\n }\n $el.trigger('page:position', { position });\n router.emit('pagePosition', $el[0], position);\n }\n\n // Remove theme elements\n removeThemeElements(el) {\n const router = this;\n const theme = router.app.theme;\n let toRemove;\n if (theme === 'ios') {\n toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';\n } else if (theme === 'md') {\n toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';\n } else if (theme === 'aurora') {\n toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';\n }\n $(el).find(toRemove).remove();\n }\n\n getPageData(pageEl, navbarEl, from, to, route = {}, pageFromEl) {\n const router = this;\n const $pageEl = $(pageEl).eq(0);\n const $navbarEl = $(navbarEl).eq(0);\n const currentPage = $pageEl[0].f7Page || {};\n let direction;\n let pageFrom;\n if ((from === 'next' && to === 'current') || (from === 'current' && to === 'previous')) direction = 'forward';\n if ((from === 'current' && to === 'next') || (from === 'previous' && to === 'current')) direction = 'backward';\n if (currentPage && !currentPage.fromPage) {\n const $pageFromEl = $(pageFromEl);\n if ($pageFromEl.length) {\n pageFrom = $pageFromEl[0].f7Page;\n }\n }\n pageFrom = currentPage.pageFrom || pageFrom;\n if (pageFrom && pageFrom.pageFrom) {\n pageFrom.pageFrom = null;\n }\n const page = {\n app: router.app,\n view: router.view,\n router,\n $el: $pageEl,\n el: $pageEl[0],\n $pageEl,\n pageEl: $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl[0],\n name: $pageEl.attr('data-name'),\n position: from,\n from,\n to,\n direction,\n route: currentPage.route ? currentPage.route : route,\n pageFrom,\n };\n\n $pageEl[0].f7Page = page;\n return page;\n }\n\n // Callbacks\n pageCallback(callback, pageEl, navbarEl, from, to, options = {}, pageFromEl) {\n if (!pageEl) return;\n const router = this;\n const $pageEl = $(pageEl);\n if (!$pageEl.length) return;\n const $navbarEl = $(navbarEl);\n const { route } = options;\n const restoreScrollTopOnBack = router.params.restoreScrollTopOnBack\n && !(\n router.params.masterDetailBreakpoint > 0\n && $pageEl.hasClass('page-master')\n && router.app.width >= router.params.masterDetailBreakpoint\n );\n const keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;\n\n if (callback === 'beforeRemove' && keepAlive) {\n callback = 'beforeUnmount'; // eslint-disable-line\n }\n\n const camelName = `page${callback[0].toUpperCase() + callback.slice(1, callback.length)}`;\n const colonName = `page:${callback.toLowerCase()}`;\n\n let page = {};\n if (callback === 'beforeRemove' && $pageEl[0].f7Page) {\n page = Utils.extend($pageEl[0].f7Page, { from, to, position: from });\n } else {\n page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);\n }\n page.swipeBack = !!options.swipeBack;\n\n const { on = {}, once = {} } = options.route ? options.route.route : {};\n if (options.on) {\n Utils.extend(on, options.on);\n }\n if (options.once) {\n Utils.extend(once, options.once);\n }\n\n function attachEvents() {\n if ($pageEl[0].f7RouteEventsAttached) return;\n $pageEl[0].f7RouteEventsAttached = true;\n if (on && Object.keys(on).length > 0) {\n $pageEl[0].f7RouteEventsOn = on;\n Object.keys(on).forEach((eventName) => {\n on[eventName] = on[eventName].bind(router);\n $pageEl.on(Utils.eventNameToColonCase(eventName), on[eventName]);\n });\n }\n if (once && Object.keys(once).length > 0) {\n $pageEl[0].f7RouteEventsOnce = once;\n Object.keys(once).forEach((eventName) => {\n once[eventName] = once[eventName].bind(router);\n $pageEl.once(Utils.eventNameToColonCase(eventName), once[eventName]);\n });\n }\n }\n\n function detachEvents() {\n if (!$pageEl[0].f7RouteEventsAttached) return;\n if ($pageEl[0].f7RouteEventsOn) {\n Object.keys($pageEl[0].f7RouteEventsOn).forEach((eventName) => {\n $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);\n });\n }\n if ($pageEl[0].f7RouteEventsOnce) {\n Object.keys($pageEl[0].f7RouteEventsOnce).forEach((eventName) => {\n $pageEl.off(Utils.eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);\n });\n }\n $pageEl[0].f7RouteEventsAttached = null;\n $pageEl[0].f7RouteEventsOn = null;\n $pageEl[0].f7RouteEventsOnce = null;\n delete $pageEl[0].f7RouteEventsAttached;\n delete $pageEl[0].f7RouteEventsOn;\n delete $pageEl[0].f7RouteEventsOnce;\n }\n\n if (callback === 'mounted') {\n attachEvents();\n }\n if (callback === 'init') {\n if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentIndex, pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0\n && !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n $pageContent.scrollTop(router.scrollHistory[page.route.url]);\n }\n attachEvents();\n if ($pageEl[0].f7PageInitialized) {\n $pageEl.trigger('page:reinit', page);\n router.emit('pageReinit', page);\n return;\n }\n $pageEl[0].f7PageInitialized = true;\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {\n // Save scroll position\n let $pageContent = $pageEl.find('.page-content');\n if ($pageContent.length > 0) {\n // eslint-disable-next-line\n $pageContent = $pageContent.filter((pageContentIndex, pageContentEl) => {\n return (\n $(pageContentEl).parents('.tab:not(.tab-active)').length === 0\n && !$(pageContentEl).is('.tab:not(.tab-active)')\n );\n });\n }\n router.scrollHistory[page.route.url] = $pageContent.scrollTop();\n }\n if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {\n // Delete scroll position\n delete router.scrollHistory[page.route.url];\n }\n\n $pageEl.trigger(colonName, page);\n router.emit(camelName, page);\n\n if (callback === 'beforeRemove' || callback === 'beforeUnmount') {\n detachEvents();\n if (!keepAlive) {\n if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {\n delete $pageEl[0].f7Page.navbarEl.f7Page;\n }\n $pageEl[0].f7Page = null;\n }\n }\n }\n\n saveHistory() {\n const router = this;\n router.view.history = router.history;\n if (router.params.pushState) {\n window.localStorage[`f7router-${router.view.id}-history`] = JSON.stringify(router.history);\n }\n }\n\n restoreHistory() {\n const router = this;\n if (router.params.pushState && window.localStorage[`f7router-${router.view.id}-history`]) {\n router.history = JSON.parse(window.localStorage[`f7router-${router.view.id}-history`]);\n router.view.history = router.history;\n }\n }\n\n clearHistory() {\n const router = this;\n router.history = [];\n if (router.view) router.view.history = [];\n router.saveHistory();\n }\n\n updateCurrentUrl(newUrl) {\n const router = this;\n appRouterCheck(router, 'updateCurrentUrl');\n // Update history\n if (router.history.length) {\n router.history[router.history.length - 1] = newUrl;\n } else {\n router.history.push(newUrl);\n }\n\n // Update current route params\n const { query, hash, params, url, path } = router.parseRouteUrl(newUrl);\n if (router.currentRoute) {\n Utils.extend(router.currentRoute, {\n query,\n hash,\n params,\n url,\n path,\n });\n }\n\n if (router.params.pushState) {\n const pushStateRoot = router.params.pushStateRoot || '';\n History.replace(\n router.view.id,\n {\n url: newUrl,\n },\n pushStateRoot + router.params.pushStateSeparator + newUrl\n );\n }\n\n // Save History\n router.saveHistory();\n\n router.emit('routeUrlUpdate', router.currentRoute, router);\n }\n\n init() {\n const router = this;\n const { app, view } = router;\n\n // Init Swipeback\n if (\n (view && router.params.iosSwipeBack && app.theme === 'ios')\n || (view && router.params.mdSwipeBack && app.theme === 'md')\n || (view && router.params.auroraSwipeBack && app.theme === 'aurora')\n ) {\n SwipeBack(router);\n }\n\n let initUrl = router.params.url;\n let documentUrl = document.location.href.split(document.location.origin)[1];\n let historyRestored;\n const { pushState, pushStateOnLoad, pushStateSeparator, pushStateAnimateOnLoad } = router.params;\n let { pushStateRoot } = router.params;\n if (window.cordova && pushState && !pushStateSeparator && !pushStateRoot && document.location.pathname.indexOf('index.html')) {\n // eslint-disable-next-line\n console.warn('Framework7: wrong or not complete pushState configuration, trying to guess pushStateRoot');\n pushStateRoot = document.location.pathname.split('index.html')[0];\n }\n if (!pushState || !pushStateOnLoad) {\n if (!initUrl) {\n initUrl = documentUrl;\n }\n if (document.location.search && initUrl.indexOf('?') < 0) {\n initUrl += document.location.search;\n }\n if (document.location.hash && initUrl.indexOf('#') < 0) {\n initUrl += document.location.hash;\n }\n } else {\n if (pushStateRoot && documentUrl.indexOf(pushStateRoot) >= 0) {\n documentUrl = documentUrl.split(pushStateRoot)[1];\n if (documentUrl === '') documentUrl = '/';\n }\n if (pushStateSeparator.length > 0 && documentUrl.indexOf(pushStateSeparator) >= 0) {\n initUrl = documentUrl.split(pushStateSeparator)[1];\n } else {\n initUrl = documentUrl;\n }\n router.restoreHistory();\n if (router.history.indexOf(initUrl) >= 0) {\n router.history = router.history.slice(0, router.history.indexOf(initUrl) + 1);\n } else if (router.params.url === initUrl) {\n router.history = [initUrl];\n } else if (History.state && History.state[view.id] && History.state[view.id].url === router.history[router.history.length - 1]) {\n initUrl = router.history[router.history.length - 1];\n } else {\n router.history = [documentUrl.split(pushStateSeparator)[0] || '/', initUrl];\n }\n if (router.history.length > 1) {\n historyRestored = true;\n } else {\n router.history = [];\n }\n router.saveHistory();\n }\n let currentRoute;\n if (router.history.length > 1) {\n // Will load page\n currentRoute = router.findMatchingRoute(router.history[0]);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(router.history[0]), {\n route: {\n url: router.history[0],\n path: router.history[0].split('?')[0],\n },\n });\n }\n } else {\n // Don't load page\n currentRoute = router.findMatchingRoute(initUrl);\n if (!currentRoute) {\n currentRoute = Utils.extend(router.parseRouteUrl(initUrl), {\n route: {\n url: initUrl,\n path: initUrl.split('?')[0],\n },\n });\n }\n }\n\n if (router.params.stackPages) {\n router.$el.children('.page').each((index, pageEl) => {\n const $pageEl = $(pageEl);\n router.initialPages.push($pageEl[0]);\n if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {\n router.initialNavbars.push($pageEl.children('.navbar')[0]);\n }\n });\n }\n\n if (router.$el.children('.page:not(.stacked)').length === 0 && initUrl && router.params.loadInitialPage) {\n // No pages presented in DOM, reload new page\n router.navigate(initUrl, {\n initial: true,\n reloadCurrent: true,\n pushState: false,\n });\n } else if (router.$el.children('.page:not(.stacked)').length) {\n // Init current DOM page\n let hasTabRoute;\n router.currentRoute = currentRoute;\n router.$el.children('.page:not(.stacked)').each((index, pageEl) => {\n const $pageEl = $(pageEl);\n let $navbarEl;\n router.setPagePosition($pageEl, 'current');\n if (router.dynamicNavbar) {\n $navbarEl = $pageEl.children('.navbar');\n if ($navbarEl.length > 0) {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n router.setNavbarPosition($navbarEl, 'current');\n router.$navbarsEl.append($navbarEl);\n if ($navbarEl.children('.title-large').length) {\n $navbarEl.addClass('navbar-large');\n }\n $pageEl.children('.navbar').remove();\n } else {\n router.$navbarsEl.addClass('navbar-hidden');\n if ($navbarEl.children('.title-large').length) {\n router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');\n }\n }\n }\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.master && router.params.masterDetailBreakpoint > 0) {\n $pageEl.addClass('page-master');\n $pageEl.trigger('page:role', { role: 'master' });\n if ($navbarEl && $navbarEl.length) {\n $navbarEl.addClass('navbar-master');\n }\n view.checkMasterDetailBreakpoint();\n }\n const initOptions = {\n route: router.currentRoute,\n };\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {\n Utils.extend(initOptions, router.currentRoute.route.options);\n }\n router.currentPageEl = $pageEl[0];\n if (router.dynamicNavbar && $navbarEl.length) {\n router.currentNavbarEl = $navbarEl[0];\n }\n router.removeThemeElements($pageEl);\n if (router.dynamicNavbar && $navbarEl.length) {\n router.removeThemeElements($navbarEl);\n }\n if (initOptions.route.route.tab) {\n hasTabRoute = true;\n router.tabLoad(initOptions.route.route.tab, Utils.extend({}, initOptions));\n }\n router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);\n });\n if (historyRestored) {\n router.navigate(initUrl, {\n initial: true,\n pushState: false,\n history: false,\n animate: pushStateAnimateOnLoad,\n once: {\n pageAfterIn() {\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history.length > 2) {\n router.back({ preload: true });\n }\n },\n },\n });\n }\n if (!historyRestored && !hasTabRoute) {\n router.history.push(initUrl);\n router.saveHistory();\n }\n }\n if (initUrl && pushState && pushStateOnLoad && (!History.state || !History.state[view.id])) {\n History.initViewState(view.id, {\n url: initUrl,\n });\n }\n router.emit('local::init routerInit', router);\n }\n\n destroy() {\n let router = this;\n\n router.emit('local::destroy routerDestroy', router);\n\n // Delete props & methods\n Object.keys(router).forEach((routerProp) => {\n router[routerProp] = null;\n delete router[routerProp];\n });\n\n router = null;\n }\n}\n\n// Load\nRouter.prototype.forward = forward;\nRouter.prototype.load = load;\nRouter.prototype.navigate = navigate;\nRouter.prototype.refreshPage = refreshPage;\n// Tab\nRouter.prototype.tabLoad = tabLoad;\nRouter.prototype.tabRemove = tabRemove;\n// Modal\nRouter.prototype.modalLoad = modalLoad;\nRouter.prototype.modalRemove = modalRemove;\n// Back\nRouter.prototype.backward = backward;\nRouter.prototype.loadBack = loadBack;\nRouter.prototype.back = back;\n// Clear history\nRouter.prototype.clearPreviousHistory = clearPreviousHistory;\n\n\nexport default Router;\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport History from '../../utils/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\n\nfunction refreshPage() {\n const router = this;\n appRouterCheck(router, 'refreshPage');\n return router.navigate(router.currentRoute.url, {\n ignoreCache: true,\n reloadCurrent: true,\n });\n}\n\nfunction forward(el, forwardOptions = {}) {\n const router = this;\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n const options = Utils.extend(false, {\n animate: router.params.animate,\n pushState: true,\n replaceState: false,\n history: true,\n reloadCurrent: router.params.reloadPages,\n reloadPrevious: false,\n reloadAll: false,\n clearPreviousHistory: false,\n reloadDetail: router.params.reloadDetail,\n on: {},\n }, forwardOptions);\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && options.route.route.master === true;\n let masterPageEl;\n let otherDetailPageEl;\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach((modalLoadProp) => {\n if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n\n if (currentRouteIsModal) {\n const modalToClose = router.currentRoute.modal\n || router.currentRoute.route.modalInstance\n || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute = router.findMatchingRoute(previousUrl);\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: Utils.parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n\n router.modalRemove(modalToClose);\n }\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $viewEl = router.$el;\n const $newPage = $el;\n const reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;\n let $oldPage;\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n router.allowPageChange = false;\n if ($newPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n }\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n const $pagesInView = $viewEl\n .children('.page:not(.stacked)')\n .filter((index, pageInView) => pageInView !== $newPage[0]);\n\n // Navbars In View\n let $navbarsInView;\n if (dynamicNavbar) {\n $navbarsInView = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((index, navbarInView) => navbarInView !== $newNavbarEl[0]);\n }\n\n // Exit when reload previous and only 1 page in view so nothing ro reload\n if (options.reloadPrevious && $pagesInView.length < 2) {\n router.allowPageChange = true;\n return router;\n }\n\n // Find Detail' master page\n let isDetail;\n let reloadDetail;\n let isDetailRoot;\n if (masterDetailEnabled && !options.reloadAll) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl\n && $pagesInView[i].classList.contains('page-master')\n ) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n isDetail = !isMaster && masterPageEl;\n\n if (isDetail) {\n // Find Other Detail\n if (masterPageEl) {\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if ($pagesInView[i].classList.contains('page-master-detail')\n ) {\n otherDetailPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n }\n }\n reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;\n }\n if (isDetail) {\n isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;\n }\n\n // New Page\n let newPagePosition = 'next';\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n newPagePosition = 'current';\n } else if (options.reloadPrevious) {\n newPagePosition = 'previous';\n }\n $newPage\n .removeClass('page-previous page-current page-next')\n .addClass(`page-${newPagePosition}${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`)\n .removeClass('stacked')\n .trigger('page:unstack')\n .trigger('page:position', { position: newPagePosition });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], newPagePosition);\n\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], { role: isMaster ? 'master' : 'detail', detailRoot: !!isDetailRoot });\n }\n\n if (dynamicNavbar && $newNavbarEl.length) {\n $newNavbarEl\n .removeClass('navbar-previous navbar-current navbar-next')\n .addClass(`navbar-${newPagePosition}${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`)\n .removeClass('stacked');\n $newNavbarEl.trigger('navbar:position', { position: newPagePosition });\n router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);\n if (isMaster || isDetail) {\n router.emit('navbarRole', $newNavbarEl[0], { role: isMaster ? 'master' : 'detail', detailRoot: !!isDetailRoot });\n }\n }\n\n // Find Old Page\n if (options.reloadCurrent || reloadDetail) {\n $oldPage = $pagesInView.eq($pagesInView.length - 1);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 1);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadPrevious) {\n $oldPage = $pagesInView.eq($pagesInView.length - 2);\n if (dynamicNavbar) {\n // $oldNavbarEl = $navbarsInView.eq($pagesInView.length - 2);\n $oldNavbarEl = $(app.navbar.getElByPage($oldPage));\n }\n } else if (options.reloadAll) {\n $oldPage = $pagesInView.filter((index, pageEl) => pageEl !== $newPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsInView.filter((index, navbarEl) => navbarEl !== $newNavbarEl[0]);\n }\n } else {\n let removedPageEls = [];\n let removedNavbarEls = [];\n if ($pagesInView.length > 1) {\n let i = 0;\n for (i = 0; i < $pagesInView.length - 1; i += 1) {\n if (masterPageEl\n && $pagesInView[i] === masterPageEl\n ) {\n $pagesInView.eq(i).addClass('page-master-stacked');\n $pagesInView.eq(i).trigger('page:masterstack');\n router.emit('pageMasterStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');\n router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));\n }\n continue; // eslint-disable-line\n }\n const oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(i));\n if (router.params.stackPages) {\n $pagesInView.eq(i).addClass('stacked');\n $pagesInView.eq(i).trigger('page:stack');\n router.emit('pageStack', $pagesInView[i]);\n if (dynamicNavbar) {\n $(oldNavbarEl).addClass('stacked');\n }\n } else {\n // Page remove event\n removedPageEls.push($pagesInView[i]);\n router.pageCallback('beforeRemove', $pagesInView[i], $navbarsInView && $navbarsInView[i], 'previous', undefined, options);\n router.removePage($pagesInView[i]);\n if (dynamicNavbar && oldNavbarEl) {\n removedNavbarEls.push(oldNavbarEl);\n router.removeNavbar(oldNavbarEl);\n }\n }\n }\n }\n $oldPage = $viewEl\n .children('.page:not(.stacked)')\n .filter((index, pageEl) => pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0);\n if (dynamicNavbar) {\n $oldNavbarEl = $navbarsEl\n .children('.navbar:not(.stacked)')\n .filter((index, navbarEl) => navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0);\n }\n removedPageEls = [];\n removedNavbarEls = [];\n }\n\n if (isDetail && !options.reloadAll) {\n if ($oldPage.length > 1 || reloadDetail) {\n $oldPage = $oldPage.filter((pageIndex, pageEl) => !pageEl.classList.contains('page-master'));\n }\n if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {\n $oldNavbarEl = $oldNavbarEl.filter((navbarIndex, navbarEl) => !navbarEl.classList.contains('navbar-master'));\n }\n }\n\n // Push State\n if (router.params.pushState && (options.pushState || options.replaceState) && !options.reloadPrevious) {\n const pushStateRoot = router.params.pushStateRoot || '';\n History[options.reloadCurrent || (reloadDetail && otherDetailPageEl) || options.reloadAll || options.replaceState ? 'replace' : 'push'](\n view.id,\n {\n url: options.route.url,\n },\n pushStateRoot + router.params.pushStateSeparator + options.route.url\n );\n }\n\n if (!options.reloadPrevious) {\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n }\n\n // Update router history\n const url = options.route.url;\n\n if (options.history) {\n if (((options.reloadCurrent || (reloadDetail && otherDetailPageEl)) && router.history.length) > 0 || options.replaceState) {\n router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;\n } else if (options.reloadPrevious) {\n router.history[router.history.length - 2] = url;\n } else if (options.reloadAll) {\n router.history = [url];\n } else {\n router.history.push(url);\n }\n }\n router.saveHistory();\n\n // Insert new page and navbar\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n if (options.reloadPrevious) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if ($oldNavbarEl.length) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n } else {\n if ($oldPage.next('.page')[0] !== $newPage[0]) {\n if (f7Component && !newPageInDom) {\n f7Component.$mount((componentEl) => {\n $viewEl.append(componentEl);\n });\n } else {\n $viewEl.append($newPage[0]);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl[0]);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, (reload ? newPagePosition : 'current'), options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, (reload ? newPagePosition : 'current'), options, $oldPage);\n }\n\n // Remove old page\n if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n } else if (options.reloadAll) {\n $oldPage.each((index, pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n $oldPageEl.trigger('page:stack');\n router.emit('pageStack', $oldPageEl[0]);\n if (dynamicNavbar) {\n $oldNavbarElEl.addClass('stacked');\n }\n } else {\n // Page remove event\n if ($oldPageEl.hasClass('page-current')) {\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);\n }\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarElEl.length) {\n router.removeNavbar($oldNavbarElEl);\n }\n }\n });\n } else if (options.reloadPrevious) {\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Check master detail\n if (masterDetailEnabled) {\n view.checkMasterDetailBreakpoint();\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);\n\n if (options.reloadCurrent || options.reloadAll || reloadDetail) {\n router.allowPageChange = true;\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n $newPage.removeAttr('aria-hidden');\n if (dynamicNavbar && $newNavbarEl) {\n $newNavbarEl.removeAttr('aria-hidden');\n }\n router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);\n if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();\n if (reloadDetail) {\n router.setPagePosition($(masterPageEl), 'previous');\n if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {\n router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');\n }\n }\n return router;\n }\n if (options.reloadPrevious) {\n router.allowPageChange = true;\n return router;\n }\n\n // Before animation event\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n // Animation\n function afterAnimation() {\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));\n }\n // After animation event\n router.allowPageChange = true;\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);\n\n let keepOldPage = (router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`]) && !isMaster;\n if (!keepOldPage) {\n if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {\n keepOldPage = true;\n }\n }\n if (!keepOldPage) {\n if (router.params.stackPages) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {\n // Remove event\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n }\n if (options.clearPreviousHistory) router.clearPreviousHistory();\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current', false);\n router.setPagePosition($newPage, 'next', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current', false);\n router.setNavbarPosition($newNavbarEl, 'next', false);\n }\n }\n if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {\n const delay = router.params[`${router.app.theme}PageLoadDelay`];\n let transition = router.params.transition;\n if (options.transition) transition = options.transition;\n if (!transition && router.currentRoute && router.currentRoute.route) {\n transition = router.currentRoute.route.transition;\n }\n if (!transition && router.currentRoute && router.currentRoute.route.options) {\n transition = router.currentRoute.route.options.transition;\n }\n if (transition) {\n $newPage[0].f7PageTransition = transition;\n }\n\n if (delay) {\n setTimeout(() => {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }, delay);\n } else {\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, () => {\n afterAnimation();\n });\n }\n } else {\n afterAnimation();\n }\n return router;\n}\nfunction load(loadParams = {}, loadOptions = {}, ignorePageChange) {\n const router = this;\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = loadParams;\n const options = loadOptions;\n const { url, content, el, pageName, template, templateUrl, component, componentUrl } = params;\n\n if (!options.reloadCurrent\n && options.route\n && options.route.route\n && options.route.route.parentPath\n && router.currentRoute.route\n && router.currentRoute.route.parentPath === options.route.route.parentPath) {\n // Do something nested\n if (options.route.url === router.url) {\n router.allowPageChange = true;\n return false;\n }\n // Check for same params\n let sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;\n if (sameParams) {\n // Check for equal params name\n Object.keys(options.route.params).forEach((paramName) => {\n if (\n !(paramName in router.currentRoute.params)\n || (router.currentRoute.params[paramName] !== options.route.params[paramName])\n ) {\n sameParams = false;\n }\n });\n }\n if (sameParams) {\n if (options.route.route.tab) {\n return router.tabLoad(options.route.route.tab, options);\n }\n return false;\n }\n if (!sameParams\n && options.route.route.tab\n && router.currentRoute.route.tab\n && router.currentRoute.parentPath === options.route.parentPath\n ) {\n return router.tabLoad(options.route.route.tab, options);\n }\n }\n\n if (\n options.route\n && options.route.url\n && router.url === options.route.url\n && !(options.reloadCurrent || options.reloadPrevious)\n && !router.params.allowDuplicateUrls\n ) {\n router.allowPageChange = true;\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n Utils.extend(options.route, { route: { url, path: url } });\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return router.forward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.forward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.forward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.forward(router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then((pageContent) => {\n router.forward(router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction navigate(navigateParams, navigateOptions = {}) {\n const router = this;\n if (router.swipeBackActive) return router;\n let url;\n let createRoute;\n let name;\n let query;\n let params;\n let route;\n if (typeof navigateParams === 'string') {\n url = navigateParams;\n } else {\n url = navigateParams.url;\n createRoute = navigateParams.route;\n name = navigateParams.name;\n query = navigateParams.query;\n params = navigateParams.params;\n }\n if (name) {\n url = router.generateUrl({ name, params, query });\n if (url) {\n return router.navigate(url, navigateOptions);\n }\n return router;\n }\n const app = router.app;\n appRouterCheck(router, 'navigate');\n if (url === '#' || url === '') {\n return router;\n }\n\n let navigateUrl = url.replace('./', '');\n if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n const currentPath = router.currentRoute.parentPath || router.currentRoute.path;\n navigateUrl = ((currentPath ? `${currentPath}/` : '/') + navigateUrl)\n .replace('///', '/')\n .replace('//', '/');\n }\n if (createRoute) {\n route = Utils.extend(router.parseRouteUrl(navigateUrl), {\n route: Utils.extend({}, createRoute),\n });\n } else {\n route = router.findMatchingRoute(navigateUrl);\n }\n\n if (!route) {\n return router;\n }\n if (route.route && route.route.viewName) {\n const anotherViewName = route.route.viewName;\n const anotherView = app.views[anotherViewName];\n if (!anotherView) {\n throw new Error(`Framework7: There is no View with \"${anotherViewName}\" name that was specified in this route`);\n }\n if (anotherView !== router.view) {\n return anotherView.router.navigate(navigateParams, navigateOptions);\n }\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'navigate', route, navigateOptions);\n }\n\n\n const options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions);\n } else {\n Utils.extend(options, navigateOptions);\n }\n options.route = route;\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n function resolve() {\n let routerLoaded = false;\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach((modalLoadProp) => {\n if (route.route[modalLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.modalLoad(modalLoadProp, route, options);\n }\n });\n if (route.route.keepAlive && route.route.keepAliveData) {\n router.load({ el: route.route.keepAliveData.pageEl }, options, false);\n routerLoaded = true;\n }\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.load({ [pageLoadProp]: route.route[pageLoadProp] }, options, false);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n let resolvedAsModal = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) route.context = resolveOptions.context;\n else route.context = Utils.extend({}, route.context, resolveOptions.context);\n options.route.context = route.context;\n }\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach((modalLoadProp) => {\n if (resolveParams[modalLoadProp]) {\n resolvedAsModal = true;\n const modalRoute = Utils.extend({}, route, { route: resolveParams });\n router.allowPageChange = true;\n router.modalLoad(modalLoadProp, modalRoute, Utils.extend(options, resolveOptions));\n }\n });\n if (resolvedAsModal) return;\n router.load(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, options.route, router.currentRoute, asyncResolve, asyncReject);\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {\n // load detail route\n let preloadMaster = true;\n let masterLoaded = false;\n if (router.currentRoute && router.currentRoute.route) {\n if (\n router.currentRoute.route.master\n && (\n router.currentRoute.route === route.route.masterRoute\n || router.currentRoute.route.path === route.route.masterRoute.path\n )\n ) {\n preloadMaster = false;\n }\n if (\n router.currentRoute.route.masterRoute\n && (router.currentRoute.route.masterRoute === route.route.masterRoute\n || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path\n )\n ) {\n preloadMaster = false;\n masterLoaded = true;\n }\n }\n if (preloadMaster || (masterLoaded && navigateOptions.reloadAll)) {\n router.navigate(route.route.masterRoute.path, {\n animate: false,\n reloadAll: navigateOptions.reloadAll,\n reloadCurrent: navigateOptions.reloadCurrent,\n reloadPrevious: navigateOptions.reloadPrevious,\n pushState: !navigateOptions.initial,\n history: !navigateOptions.initial,\n once: {\n pageAfterIn() {\n router.navigate(navigateParams, Utils.extend({}, navigateOptions, {\n animate: false,\n reloadAll: false,\n reloadCurrent: false,\n reloadPrevious: false,\n history: !navigateOptions.initial,\n pushState: !navigateOptions.initial,\n }));\n },\n },\n });\n return router;\n }\n }\n\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules])\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n );\n\n // Return Router\n return router;\n}\nexport { refreshPage, forward, load, navigate };\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport History from '../../utils/history';\nimport asyncComponent from './async-component';\n\nfunction tabLoad(tabRoute, loadOptions = {}) {\n const router = this;\n const options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n parentPageEl: null,\n preload: false,\n on: {},\n }, loadOptions);\n\n let currentRoute;\n let previousRoute;\n if (options.route) {\n // Set Route\n if (!options.preload && options.route !== router.currentRoute) {\n previousRoute = router.previousRoute;\n router.currentRoute = options.route;\n }\n if (options.preload) {\n currentRoute = options.route;\n previousRoute = router.currentRoute;\n } else {\n currentRoute = router.currentRoute;\n if (!previousRoute) previousRoute = router.previousRoute;\n }\n\n // Update Browser History\n if (router.params.pushState && options.pushState && !options.reloadPrevious) {\n History.replace(\n router.view.id,\n {\n url: options.route.url,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n );\n }\n\n // Update Router History\n if (options.history) {\n router.history[Math.max(router.history.length - 1, 0)] = options.route.url;\n router.saveHistory();\n }\n }\n\n // Show Tab\n const $parentPageEl = $(options.parentPageEl || router.currentPageEl);\n let tabEl;\n if ($parentPageEl.length && $parentPageEl.find(`#${tabRoute.id}`).length) {\n tabEl = $parentPageEl.find(`#${tabRoute.id}`).eq(0);\n } else if (router.view.selector) {\n tabEl = `${router.view.selector} #${tabRoute.id}`;\n } else {\n tabEl = `#${tabRoute.id}`;\n }\n const tabShowResult = router.app.tab.show({\n tabEl,\n animate: options.animate,\n tabRoute: options.route,\n });\n\n const { $newTabEl, $oldTabEl, animated, onTabsChanged } = tabShowResult;\n\n if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {\n const tabParentPageData = $newTabEl.parents('.page')[0].f7Page;\n if (tabParentPageData && options.route) {\n tabParentPageData.route = options.route;\n }\n }\n\n // Tab Content Loaded\n function onTabLoaded(contentEl) {\n // Remove theme elements\n router.removeThemeElements($newTabEl);\n\n let tabEventTarget = $newTabEl;\n if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);\n\n tabEventTarget.trigger('tab:init tab:mounted', tabRoute);\n router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);\n\n if ($oldTabEl && $oldTabEl.length) {\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n if (router.params.unloadTabContent) {\n router.tabRemove($oldTabEl, $newTabEl, tabRoute);\n }\n }\n }\n }\n\n if ($newTabEl[0].f7RouterTabLoaded) {\n if (!$oldTabEl || !$oldTabEl.length) return router;\n if (animated) {\n onTabsChanged(() => {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n });\n } else {\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n }\n return router;\n }\n\n // Load Tab Content\n function loadTab(loadTabParams, loadTabOptions) {\n // Load Tab Props\n const { url, content, el, template, templateUrl, component, componentUrl } = loadTabParams;\n // Component/Template Callbacks\n function resolve(contentEl) {\n router.allowPageChange = true;\n if (!contentEl) return;\n if (typeof contentEl === 'string') {\n $newTabEl.html(contentEl);\n } else {\n $newTabEl.html('');\n if (contentEl.f7Component) {\n contentEl.f7Component.$mount((componentEl) => {\n $newTabEl.append(componentEl);\n });\n } else {\n $newTabEl.append(contentEl);\n }\n }\n $newTabEl[0].f7RouterTabLoaded = true;\n onTabLoaded(contentEl);\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (template || templateUrl) {\n try {\n router.tabTemplateLoader(template, templateUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n resolve(el);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.tabComponentLoader($newTabEl[0], component, componentUrl, loadTabOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadTabOptions)\n .then((tabContent) => {\n resolve(tabContent);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n }\n\n let hasContentLoadProp;\n ('url content component el componentUrl template templateUrl').split(' ').forEach((tabLoadProp) => {\n if (tabRoute[tabLoadProp]) {\n hasContentLoadProp = true;\n loadTab({ [tabLoadProp]: tabRoute[tabLoadProp] }, options);\n }\n });\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadTab(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (tabRoute.async) {\n tabRoute.async.call(router, currentRoute, previousRoute, asyncResolve, asyncReject);\n } else if (tabRoute.asyncComponent) {\n asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);\n } else if (!hasContentLoadProp) {\n router.allowPageChange = true;\n }\n\n return router;\n}\nfunction tabRemove($oldTabEl, $newTabEl, tabRoute) {\n const router = this;\n\n let hasTabComponentChild;\n if ($oldTabEl[0]) {\n $oldTabEl[0].f7RouterTabLoaded = false;\n delete $oldTabEl[0].f7RouterTabLoaded;\n }\n $oldTabEl.children().each((index, tabChild) => {\n if (tabChild.f7Component) {\n hasTabComponentChild = true;\n $(tabChild).trigger('tab:beforeremove', tabRoute);\n tabChild.f7Component.$destroy();\n }\n });\n if (!hasTabComponentChild) {\n $oldTabEl.trigger('tab:beforeremove', tabRoute);\n }\n router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);\n router.removeTabContent($oldTabEl[0], tabRoute);\n}\n\nexport { tabLoad, tabRemove };\n","import Utils from '../../utils/utils';\nimport History from '../../utils/history';\nimport asyncComponent from './async-component';\n\nfunction modalLoad(modalType, route, loadOptions = {}) {\n const router = this;\n const app = router.app;\n const isPanel = modalType === 'panel';\n const modalOrPanel = isPanel ? 'panel' : 'modal';\n\n const options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n history: true,\n on: {},\n }, loadOptions);\n\n const modalParams = Utils.extend({}, route.route[modalType]);\n const modalRoute = route.route;\n\n function onModalLoaded() {\n // Create Modal\n const modal = app[modalType].create(modalParams);\n modalRoute.modalInstance = modal;\n\n const hasEl = modal.el;\n\n function closeOnSwipeBack() {\n modal.close();\n }\n modal.on(`${modalOrPanel}Open`, () => {\n if (!hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${!isPanel ? 'modalInit' : ''} ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n router.once('swipeBackMove', closeOnSwipeBack);\n });\n modal.on(`${modalOrPanel}Close`, () => {\n router.off('swipeBackMove', closeOnSwipeBack);\n if (!modal.closeByRouter) {\n router.back();\n }\n });\n\n modal.on(`${modalOrPanel}Closed`, () => {\n modal.$el.trigger(`${modalType.toLowerCase()}:beforeremove`, route, modal);\n modal.emit(`${!isPanel ? 'modalBeforeRemove ' : ''}${modalType}BeforeRemove`, modal.el, route, modal);\n const modalComponent = modal.el.f7Component;\n if (modalComponent) {\n modalComponent.$destroy();\n }\n Utils.nextTick(() => {\n if (modalComponent || modalParams.component) {\n router.removeModal(modal.el);\n }\n modal.destroy();\n delete modal.route;\n delete modalRoute.modalInstance;\n });\n });\n\n if (options.route) {\n // Update Browser History\n if (router.params.pushState && options.pushState) {\n History.push(\n router.view.id,\n {\n url: options.route.url,\n modal: modalType,\n },\n (router.params.pushStateRoot || '') + router.params.pushStateSeparator + options.route.url\n );\n }\n\n // Set Route\n if (options.route !== router.currentRoute) {\n modal.route = Utils.extend(options.route, { modal });\n router.currentRoute = modal.route;\n }\n\n // Update Router History\n if (options.history) {\n router.history.push(options.route.url);\n router.saveHistory();\n }\n }\n\n if (hasEl) {\n // Remove theme elements\n router.removeThemeElements(modal.el);\n\n // Emit events\n modal.$el.trigger(`${modalType.toLowerCase()}:init ${modalType.toLowerCase()}:mounted`, route, modal);\n router.emit(`${modalOrPanel}Init ${modalType}Init ${modalType}Mounted`, modal.el, route, modal);\n }\n\n // Open\n modal.open();\n }\n\n // Load Modal Content\n function loadModal(loadModalParams, loadModalOptions) {\n // Load Modal Props\n const { url, content, template, templateUrl, component, componentUrl } = loadModalParams;\n\n // Component/Template Callbacks\n function resolve(contentEl) {\n if (contentEl) {\n if (typeof contentEl === 'string') {\n modalParams.content = contentEl;\n } else if (contentEl.f7Component) {\n contentEl.f7Component.$mount((componentEl) => {\n modalParams.el = componentEl;\n app.root.append(componentEl);\n });\n } else {\n modalParams.el = contentEl;\n }\n onModalLoaded();\n }\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (content) {\n resolve(content);\n } else if (template || templateUrl) {\n try {\n router.modalTemplateLoader(template, templateUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.modalComponentLoader(app.root[0], component, componentUrl, loadModalOptions, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, loadModalOptions)\n .then((modalContent) => {\n modalParams.content = modalContent;\n onModalLoaded();\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n } else {\n onModalLoaded();\n }\n }\n\n let foundLoadProp;\n ('url content component el componentUrl template templateUrl').split(' ').forEach((modalLoadProp) => {\n if (modalParams[modalLoadProp] && !foundLoadProp) {\n foundLoadProp = true;\n loadModal({ [modalLoadProp]: modalParams[modalLoadProp] }, options);\n }\n });\n if (!foundLoadProp && modalType === 'actions') {\n onModalLoaded();\n }\n\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n loadModal(resolveParams, Utils.extend(options, resolveOptions));\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (modalParams.async) {\n modalParams.async.call(router, options.route, router.currentRoute, asyncResolve, asyncReject);\n }\n if (modalParams.asyncComponent) {\n asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);\n }\n return router;\n}\nfunction modalRemove(modal) {\n Utils.extend(modal, { closeByRouter: true });\n modal.close();\n}\n\nexport { modalLoad, modalRemove };\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport History from '../../utils/history';\nimport redirect from './redirect';\nimport processRouteQueue from './process-route-queue';\nimport appRouterCheck from './app-router-check';\nimport asyncComponent from './async-component';\n\nfunction backward(el, backwardOptions) {\n const router = this;\n const $el = $(el);\n const app = router.app;\n const view = router.view;\n\n const options = Utils.extend({\n animate: router.params.animate,\n pushState: true,\n replaceState: false,\n }, backwardOptions);\n\n const masterDetailEnabled = router.params.masterDetailBreakpoint > 0;\n const isMaster = masterDetailEnabled && options.route && options.route.route && options.route.route.master === true;\n let masterPageEl;\n let masterPageRemoved;\n\n const dynamicNavbar = router.dynamicNavbar;\n\n const $newPage = $el;\n const $oldPage = router.$el.children('.page-current');\n const currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');\n\n if ($newPage.length) {\n // Remove theme elements\n router.removeThemeElements($newPage);\n }\n\n let $navbarsEl;\n let $newNavbarEl;\n let $oldNavbarEl;\n\n if (dynamicNavbar) {\n $newNavbarEl = $newPage.children('.navbar');\n $navbarsEl = router.$navbarsEl;\n if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {\n // Try from pageData\n $newNavbarEl = $newPage[0].f7Page.$navbarEl;\n }\n $oldNavbarEl = $navbarsEl.find('.navbar-current');\n }\n\n router.allowPageChange = false;\n if ($newPage.length === 0 || $oldPage.length === 0) {\n router.allowPageChange = true;\n return router;\n }\n\n // Remove theme elements\n router.removeThemeElements($newPage);\n\n // Save Keep Alive Cache\n if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {\n options.route.route.keepAliveData = {\n pageEl: $el[0],\n };\n }\n\n // Pages In View\n let isDetail;\n let isDetailRoot;\n if (masterDetailEnabled) {\n const $pagesInView = router.$el\n .children('.page:not(.stacked)')\n .filter((index, pageInView) => pageInView !== $newPage[0]);\n\n // Find Detail' master page\n for (let i = 0; i < $pagesInView.length; i += 1) {\n if (!masterPageEl\n && $pagesInView[i].classList.contains('page-master')\n ) {\n masterPageEl = $pagesInView[i];\n continue; // eslint-disable-line\n }\n }\n\n isDetail = !isMaster\n && masterPageEl\n && (router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url));\n\n if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {\n isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;\n }\n }\n if (isDetail && masterPageEl && masterPageEl.f7Page) {\n isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;\n }\n\n // New Page\n $newPage\n .addClass(`page-previous${isMaster ? ' page-master' : ''}${isDetail ? ' page-master-detail' : ''}${isDetailRoot ? ' page-master-detail-root' : ''}`)\n .removeClass('stacked')\n .removeAttr('aria-hidden')\n .trigger('page:unstack')\n .trigger('page:position', { position: 'previous' });\n router.emit('pageUnstack', $newPage[0]);\n router.emit('pagePosition', $newPage[0], 'previous');\n if (isMaster || isDetail) {\n $newPage.trigger('page:role', { role: isMaster ? 'master' : 'detail', root: !!isDetailRoot });\n router.emit('pageRole', $newPage[0], { role: isMaster ? 'master' : 'detail', detailRoot: !!isDetailRoot });\n }\n\n if (dynamicNavbar && $newNavbarEl.length > 0) {\n $newNavbarEl\n .addClass(`navbar-previous${isMaster ? ' navbar-master' : ''}${isDetail ? ' navbar-master-detail' : ''}${isDetailRoot ? ' navbar-master-detail-root' : ''}`)\n .removeClass('stacked')\n .removeAttr('aria-hidden');\n $newNavbarEl.trigger('navbar:position', { position: 'previous' });\n router.emit('navbarPosition', $newNavbarEl[0], 'previous');\n if (isMaster || isDetailRoot) {\n router.emit('navbarRole', $newNavbarEl[0], { role: isMaster ? 'master' : 'detail', detailRoot: !!isDetailRoot });\n }\n }\n\n // Remove previous page in case of \"forced\"\n let backIndex;\n if (options.force) {\n if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {\n if (router.history.indexOf(options.route.url) >= 0) {\n backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;\n router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);\n view.history = router.history;\n } else if (router.history[[router.history.length - 2]]) {\n router.history[router.history.length - 2] = options.route.url;\n } else {\n router.history.unshift(router.url);\n }\n\n if (backIndex && router.params.stackPages) {\n $oldPage.prevAll('.page-previous').each((index, pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prevAll('.navbar-previous').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {\n if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length > 0) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n });\n } else {\n const $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $oldNavbarEl.prev('.navbar-inner:not(.stacked)');\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n $navbarToRemove.addClass('stacked');\n } else if ($pageToRemove.length > 0) {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);\n if ($pageToRemove[0] === masterPageEl) {\n masterPageRemoved = true;\n }\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n }\n }\n }\n\n // Insert new page\n const newPageInDom = $newPage.parents(document).length > 0;\n const f7Component = $newPage[0].f7Component;\n\n function insertPage() {\n if ($newPage.next($oldPage).length === 0) {\n if (!newPageInDom && f7Component) {\n f7Component.$mount((componentEl) => {\n $(componentEl).insertBefore($oldPage);\n });\n } else {\n $newPage.insertBefore($oldPage);\n }\n }\n if (dynamicNavbar && $newNavbarEl.length) {\n if ($newNavbarEl.find('.title-large').length) {\n $newNavbarEl.addClass('navbar-large');\n }\n $newNavbarEl.insertBefore($oldNavbarEl);\n if ($oldNavbarEl.length > 0) {\n $newNavbarEl.insertBefore($oldNavbarEl);\n } else {\n if (!router.$navbarsEl.parents(document).length) {\n router.$el.prepend(router.$navbarsEl);\n }\n $navbarsEl.append($newNavbarEl);\n }\n }\n if (!newPageInDom) {\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {\n $newPage[0].f7PageMounted = true;\n router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n }\n }\n\n if (options.preload) {\n // Insert Page\n insertPage();\n // Tab route\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n preload: true,\n }));\n }\n if (isMaster) {\n $newPage\n .removeClass('page-master-stacked')\n .trigger('page:masterunstack');\n router.emit('pageMasterUnstack', $newPage[0]);\n if (dynamicNavbar) {\n $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');\n router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));\n }\n }\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n const $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');\n if ($previousPages.length > 0) {\n $previousPages.each((index, pageToRemove) => {\n const $pageToRemove = $(pageToRemove);\n let $navbarToRemove;\n if (dynamicNavbar) {\n // $navbarToRemove = $newNavbarEl.prevAll('.navbar-previous:not(.stacked)').eq(index);\n $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));\n }\n if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {\n $pageToRemove.addClass('stacked');\n $pageToRemove.trigger('page:stack');\n router.emit('pageStack', $pageToRemove[0]);\n if (dynamicNavbar) {\n $navbarToRemove.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);\n router.removePage($pageToRemove);\n if (dynamicNavbar && $navbarToRemove.length) {\n router.removeNavbar($navbarToRemove);\n }\n }\n });\n }\n router.allowPageChange = true;\n return router;\n }\n\n // History State\n if (!(Device.ie || Device.edge || (Device.firefox && !Device.ios))) {\n if (router.params.pushState && options.pushState) {\n if (options.replaceState) {\n const pushStateRoot = router.params.pushStateRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n pushStateRoot + router.params.pushStateSeparator + options.route.url\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Update History\n if (options.replaceState) {\n router.history[router.history.length - 1] = options.route.url;\n } else {\n if (router.history.length === 1) {\n router.history.unshift(router.url);\n }\n router.history.pop();\n }\n router.saveHistory();\n\n // Current Page & Navbar\n router.currentPageEl = $newPage[0];\n if (dynamicNavbar && $newNavbarEl.length) {\n router.currentNavbarEl = $newNavbarEl[0];\n } else {\n delete router.currentNavbarEl;\n }\n\n // Current Route\n router.currentRoute = options.route;\n\n // History State\n if (Device.ie || Device.edge || (Device.firefox && !Device.ios)) {\n if (router.params.pushState && options.pushState) {\n if (options.replaceState) {\n const pushStateRoot = router.params.pushStateRoot || '';\n History.replace(\n view.id,\n {\n url: options.route.url,\n },\n pushStateRoot + router.params.pushStateSeparator + options.route.url\n );\n } else if (backIndex) {\n History.go(-backIndex);\n } else {\n History.back();\n }\n }\n }\n\n // Insert Page\n insertPage();\n\n // Load Tab\n if (options.route.route.tab) {\n router.tabLoad(options.route.route.tab, Utils.extend({}, options, {\n history: false,\n pushState: false,\n }));\n }\n\n // Check master detail\n\n if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {\n view.checkMasterDetailBreakpoint(false);\n }\n\n // Page init and before init events\n router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);\n\n // Before animation callback\n router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Animation\n function afterAnimation() {\n // Set classes\n router.setPagePosition($newPage, 'current', false);\n router.setPagePosition($oldPage, 'next', true);\n if (dynamicNavbar) {\n router.setNavbarPosition($newNavbarEl, 'current', false);\n router.setNavbarPosition($oldNavbarEl, 'next', true);\n }\n\n // After animation event\n router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);\n router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);\n\n // Remove Old Page\n if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {\n $oldPage.addClass('stacked');\n $oldPage.trigger('page:stack');\n router.emit('pageStack', $oldPage[0]);\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);\n router.removePage($oldPage);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n\n router.allowPageChange = true;\n router.emit('routeChanged', router.currentRoute, router.previousRoute, router);\n\n // Preload previous page\n const preloadPreviousPage = router.params.preloadPreviousPage || router.params[`${app.theme}SwipeBack`];\n if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {\n router.back(router.history[router.history.length - 2], { preload: true });\n }\n if (router.params.pushState) {\n History.clearRouterQueue();\n }\n }\n\n function setPositionClasses() {\n router.setPagePosition($oldPage, 'current');\n router.setPagePosition($newPage, 'previous', false);\n if (dynamicNavbar) {\n router.setNavbarPosition($oldNavbarEl, 'current');\n router.setNavbarPosition($newNavbarEl, 'previous', false);\n }\n }\n\n if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {\n let transition = router.params.transition;\n if ($oldPage[0] && $oldPage[0].f7PageTransition) {\n transition = $oldPage[0].f7PageTransition;\n delete $oldPage[0].f7PageTransition;\n }\n if (options.transition) transition = options.transition;\n if (!transition && router.previousRoute && router.previousRoute.route) {\n transition = router.previousRoute.route.transition;\n }\n if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {\n transition = router.previousRoute.route.options.transition;\n }\n setPositionClasses();\n router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, () => {\n afterAnimation();\n });\n } else {\n afterAnimation();\n }\n\n return router;\n}\nfunction loadBack(backParams, backOptions, ignorePageChange) {\n const router = this;\n\n if (!router.allowPageChange && !ignorePageChange) return router;\n const params = backParams;\n const options = backOptions;\n const { url, content, el, pageName, template, templateUrl, component, componentUrl } = params;\n\n if (\n options.route.url\n && router.url === options.route.url\n && !(options.reloadCurrent || options.reloadPrevious)\n && !router.params.allowDuplicateUrls\n ) {\n return false;\n }\n\n if (!options.route && url) {\n options.route = router.parseRouteUrl(url);\n }\n\n // Component Callbacks\n function resolve(pageEl, newOptions) {\n return router.backward(pageEl, Utils.extend(options, newOptions));\n }\n function reject() {\n router.allowPageChange = true;\n return router;\n }\n\n if (url || templateUrl || componentUrl) {\n router.allowPageChange = false;\n }\n\n // Proceed\n if (content) {\n router.backward(router.getPageEl(content), options);\n } else if (template || templateUrl) {\n // Parse template and send page element\n try {\n router.pageTemplateLoader(template, templateUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (el) {\n // Load page from specified HTMLElement or by page name in pages container\n router.backward(router.getPageEl(el), options);\n } else if (pageName) {\n // Load page by page name in pages container\n router.backward(router.$el.children(`.page[data-name=\"${pageName}\"]`).eq(0), options);\n } else if (component || componentUrl) {\n // Load from component (F7/Vue/React/...)\n try {\n router.pageComponentLoader(router.el, component, componentUrl, options, resolve, reject);\n } catch (err) {\n router.allowPageChange = true;\n throw err;\n }\n } else if (url) {\n // Load using XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router.xhrRequest(url, options)\n .then((pageContent) => {\n router.backward(router.getPageEl(pageContent), options);\n })\n .catch(() => {\n router.allowPageChange = true;\n });\n }\n return router;\n}\nfunction back(...args) {\n const router = this;\n if (router.swipeBackActive) return router;\n let navigateUrl;\n let navigateOptions;\n let route;\n if (typeof args[0] === 'object') {\n navigateOptions = args[0] || {};\n } else {\n navigateUrl = args[0];\n navigateOptions = args[1] || {};\n }\n\n const { name, params, query } = navigateOptions;\n if (name) {\n navigateUrl = router.generateUrl({ name, params, query });\n if (navigateUrl) {\n return router.back(navigateUrl, Utils.extend({}, navigateOptions, {\n name: null,\n params: null,\n query: null,\n }));\n }\n return router;\n }\n\n const app = router.app;\n appRouterCheck(router, 'back');\n\n let currentRouteIsModal = router.currentRoute.modal;\n let modalType;\n if (!currentRouteIsModal) {\n ('popup popover sheet loginScreen actions customModal panel').split(' ').forEach((modalLoadProp) => {\n if (router.currentRoute.route[modalLoadProp]) {\n currentRouteIsModal = true;\n modalType = modalLoadProp;\n }\n });\n }\n if (currentRouteIsModal) {\n const modalToClose = router.currentRoute.modal\n || router.currentRoute.route.modalInstance\n || app[modalType].get();\n const previousUrl = router.history[router.history.length - 2];\n let previousRoute;\n // check if previous route is modal too\n if (modalToClose && modalToClose.$el) {\n const prevOpenedModals = modalToClose.$el.prevAll('.modal-in');\n if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {\n previousRoute = prevOpenedModals[0].f7Modal.route;\n }\n }\n if (!previousRoute) {\n previousRoute = router.findMatchingRoute(previousUrl);\n }\n\n if (!previousRoute && previousUrl) {\n previousRoute = {\n url: previousUrl,\n path: previousUrl.split('?')[0],\n query: Utils.parseUrlQuery(previousUrl),\n route: {\n path: previousUrl.split('?')[0],\n url: previousUrl,\n },\n };\n }\n if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {\n if (!previousRoute || !modalToClose) {\n return router;\n }\n }\n const forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;\n if (previousRoute && modalToClose) {\n const isBrokenPushState = Device.ie || Device.edge || (Device.firefox && !Device.ios);\n const needHistoryBack = router.params.pushState && navigateOptions.pushState !== false;\n if (needHistoryBack && !isBrokenPushState) {\n History.back();\n }\n router.currentRoute = previousRoute;\n router.history.pop();\n router.saveHistory();\n\n if (needHistoryBack && isBrokenPushState) {\n History.back();\n }\n\n router.modalRemove(modalToClose);\n if (forceOtherUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n } else if (modalToClose) {\n router.modalRemove(modalToClose);\n if (navigateUrl) {\n router.navigate(navigateUrl, { reloadCurrent: true });\n }\n }\n return router;\n }\n let $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);\n\n let skipMaster;\n if (router.params.masterDetailBreakpoint > 0) {\n const $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);\n if ($previousMaster.length) {\n const expectedPreviousPageUrl = router.history[router.history.length - 2];\n const expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);\n if (expectedPreviousPageRoute && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {\n $previousPage = $previousMaster;\n if (!navigateOptions.preload) {\n skipMaster = app.width >= router.params.masterDetailBreakpoint;\n }\n }\n }\n }\n if (!navigateOptions.force && $previousPage.length && !skipMaster) {\n if (router.params.pushState\n && $previousPage[0].f7Page\n && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url\n ) {\n router.back(\n router.history[router.history.length - 2],\n Utils.extend(navigateOptions, { force: true })\n );\n return router;\n }\n const previousPageRoute = $previousPage[0].f7Page.route;\n\n processRouteQueue.call(\n router,\n previousPageRoute,\n router.currentRoute,\n () => {\n router.loadBack({ el: $previousPage }, Utils.extend(navigateOptions, {\n route: previousPageRoute,\n }));\n },\n () => {}\n );\n\n return router;\n }\n\n // Navigate URL\n if (navigateUrl === '#') {\n navigateUrl = undefined;\n }\n if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {\n navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');\n }\n if (!navigateUrl && router.history.length > 1) {\n navigateUrl = router.history[router.history.length - 2];\n }\n if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {\n return router.back(router.history[router.history.length - 3], Utils.extend({}, navigateOptions || {}, {\n force: true,\n animate: false,\n }));\n }\n if (skipMaster && !navigateOptions.force) {\n return router;\n }\n\n // Find route to load\n route = router.findMatchingRoute(navigateUrl);\n if (!route) {\n if (navigateUrl) {\n route = {\n url: navigateUrl,\n path: navigateUrl.split('?')[0],\n query: Utils.parseUrlQuery(navigateUrl),\n route: {\n path: navigateUrl.split('?')[0],\n url: navigateUrl,\n },\n };\n }\n }\n if (!route) {\n return router;\n }\n\n if (route.route.redirect) {\n return redirect.call(router, 'back', route, navigateOptions);\n }\n\n const options = {};\n if (route.route.options) {\n Utils.extend(options, route.route.options, navigateOptions);\n } else {\n Utils.extend(options, navigateOptions);\n }\n options.route = route;\n\n if (options && options.context) {\n route.context = options.context;\n options.route.context = options.context;\n }\n\n let backForceLoaded;\n if (options.force && router.params.stackPages) {\n router.$el.children('.page-previous.stacked').each((index, pageEl) => {\n if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {\n backForceLoaded = true;\n router.loadBack({ el: pageEl }, options);\n }\n });\n if (backForceLoaded) {\n return router;\n }\n }\n function resolve() {\n let routerLoaded = false;\n if (route.route.keepAlive && route.route.keepAliveData) {\n router.loadBack({ el: route.route.keepAliveData.pageEl }, options);\n routerLoaded = true;\n }\n ('url content component pageName el componentUrl template templateUrl').split(' ').forEach((pageLoadProp) => {\n if (route.route[pageLoadProp] && !routerLoaded) {\n routerLoaded = true;\n router.loadBack({ [pageLoadProp]: route.route[pageLoadProp] }, options);\n }\n });\n if (routerLoaded) return;\n // Async\n function asyncResolve(resolveParams, resolveOptions) {\n router.allowPageChange = false;\n if (resolveOptions && resolveOptions.context) {\n if (!route.context) route.context = resolveOptions.context;\n else route.context = Utils.extend({}, route.context, resolveOptions.context);\n options.route.context = route.context;\n }\n router.loadBack(resolveParams, Utils.extend(options, resolveOptions), true);\n }\n function asyncReject() {\n router.allowPageChange = true;\n }\n if (route.route.async) {\n router.allowPageChange = false;\n route.route.async.call(router, route, router.currentRoute, asyncResolve, asyncReject);\n }\n if (route.route.asyncComponent) {\n asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);\n }\n }\n function reject() {\n router.allowPageChange = true;\n }\n\n if (options.preload) {\n resolve();\n } else {\n processRouteQueue.call(\n router,\n route,\n router.currentRoute,\n () => {\n if (route.route.modules) {\n app\n .loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules])\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n } else {\n resolve();\n }\n },\n () => {\n reject();\n },\n );\n }\n\n // Return Router\n return router;\n}\nexport { backward, loadBack, back };\n","import $ from 'dom7';\nimport appRouterCheck from './app-router-check';\n\nfunction clearPreviousPages(router) {\n appRouterCheck(router, 'clearPreviousPages');\n const app = router.app;\n const dynamicNavbar = router.dynamicNavbar;\n\n const $pagesToRemove = router.$el\n .children('.page')\n .filter((index, pageInView) => {\n if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;\n return pageInView !== router.currentPageEl;\n });\n\n $pagesToRemove.each((index, pageEl) => {\n const $oldPageEl = $(pageEl);\n const $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));\n if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {\n $oldPageEl.addClass('stacked');\n if (dynamicNavbar) {\n $oldNavbarEl.addClass('stacked');\n }\n } else {\n // Page remove event\n router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});\n router.removePage($oldPageEl);\n if (dynamicNavbar && $oldNavbarEl.length) {\n router.removeNavbar($oldNavbarEl);\n }\n }\n });\n}\n\nfunction clearPreviousHistory() {\n const router = this;\n appRouterCheck(router, 'clearPreviousHistory');\n const url = router.history[router.history.length - 1];\n\n clearPreviousPages(router);\n\n router.history = [url];\n router.view.history = [url];\n router.saveHistory();\n}\n\nexport { clearPreviousHistory }; // eslint-disable-line\n","import Router from './router-class';\n\nexport default {\n name: 'router',\n static: {\n Router,\n },\n instance: {\n cache: {\n xhr: [],\n templates: [],\n components: [],\n },\n },\n create() {\n const instance = this;\n if (instance.app) {\n // View Router\n if (instance.params.router) {\n instance.router = new Router(instance.app, instance);\n }\n } else {\n // App Router\n instance.router = new Router(instance);\n }\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nfunction resizableView(view) {\n const app = view.app;\n if (view.resizableInitialized) return;\n Utils.extend(view, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el } = view;\n if (!$el) return;\n\n let $resizeHandlerEl;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let width;\n\n let minWidth;\n let maxWidth;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n const $pageMasterEl = $el.children('.page-master');\n minWidth = transformCSSWidth($pageMasterEl.css('min-width'));\n maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.f7PreventSwipePanel = true;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;\n $el.addClass('view-resizing');\n $htmlEl.css('cursor', 'col-resize');\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = (pageX - touchesStart.x);\n\n let newWidth = width + touchesDiff;\n if (minWidth && !Number.isNaN(minWidth)) {\n newWidth = Math.max(newWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth)) {\n newWidth = Math.min(newWidth, maxWidth);\n }\n newWidth = Math.min(Math.max(newWidth, 0), app.width);\n\n view.resizableWidth = newWidth;\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${newWidth}px`);\n\n $el.trigger('view:resize', newWidth);\n view.emit('local::resize viewResize', view, newWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n $el.removeClass('view-resizing');\n }\n\n function handleResize() {\n if (!view.resizableWidth) return;\n minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));\n maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));\n\n if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {\n view.resizableWidth = Math.max(view.resizableWidth, minWidth);\n }\n if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {\n view.resizableWidth = Math.min(view.resizableWidth, maxWidth);\n }\n view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty('--f7-page-master-width', `${view.resizableWidth}px`);\n }\n\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n if (!$resizeHandlerEl.length) {\n view.$el.append('<div class=\"view-resize-handler\"></div>');\n $resizeHandlerEl = view.$el.children('.view-resize-handler');\n }\n view.$resizeHandlerEl = $resizeHandlerEl;\n\n $el.addClass('view-resizable');\n\n // Add Events\n const passive = Support.passiveListener ? { passive: true } : false;\n\n view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n view.on('beforeOpen', handleResize);\n\n view.once('viewDestroy', () => {\n $el.removeClass('view-resizable');\n view.$resizeHandlerEl.remove();\n view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n view.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizableView;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Router from '../../modules/router/router';\nimport Framework7Class from '../../utils/class';\nimport resizableView from './resizable-view';\n\nclass View extends Framework7Class {\n constructor(appInstance, el, viewParams = {}) {\n super(viewParams, [appInstance]);\n\n const app = appInstance;\n const $el = $(el);\n const view = this;\n\n const defaults = {\n routes: [],\n routesAdd: [],\n };\n\n if ($el.length === 0) {\n let message = 'Framework7: can\\'t create a View instance because ';\n message += (typeof el === 'string')\n ? `the selector \"${el}\" didn't match any element`\n : 'el must be an HTMLElement or Dom7 object';\n\n throw new Error(message);\n }\n\n // Default View params\n view.params = Utils.extend(defaults, app.params.view, viewParams);\n\n // Routes\n if (view.params.routes.length > 0) {\n view.routes = view.params.routes;\n } else {\n view.routes = [].concat(app.routes, view.params.routesAdd);\n }\n\n // Selector\n let selector;\n if (typeof el === 'string') selector = el;\n else {\n // Supposed to be HTMLElement or Dom7\n selector = ($el.attr('id') ? `#${$el.attr('id')}` : '') + ($el.attr('class') ? `.${$el.attr('class').replace(/ /g, '.').replace('.active', '')}` : '');\n }\n\n // DynamicNavbar\n let $navbarsEl;\n if (app.theme === 'ios' && view.params.iosDynamicNavbar) {\n $navbarsEl = $el.children('.navbars').eq(0);\n if ($navbarsEl.length === 0) {\n $navbarsEl = $('<div class=\"navbars\"></div>');\n }\n }\n\n // View Props\n Utils.extend(false, view, {\n app,\n $el,\n el: $el[0],\n name: view.params.name,\n main: view.params.main || $el.hasClass('view-main'),\n $navbarsEl,\n navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,\n selector,\n history: [],\n scrollHistory: {},\n });\n\n // Save in DOM\n $el[0].f7View = view;\n\n // Install Modules\n view.useModules();\n\n // Add to app\n app.views.push(view);\n if (view.main) {\n app.views.main = view;\n }\n if (view.name) {\n app.views[view.name] = view;\n }\n\n // Index\n view.index = app.views.indexOf(view);\n\n // View ID\n let viewId;\n if (view.name) {\n viewId = `view_${view.name}`;\n } else if (view.main) {\n viewId = 'view_main';\n } else {\n viewId = `view_${view.index}`;\n }\n view.id = viewId;\n\n // Init View\n if (app.initialized) {\n view.init();\n } else {\n app.on('init', () => {\n view.init();\n });\n }\n\n return view;\n }\n\n destroy() {\n let view = this;\n const app = view.app;\n\n view.$el.trigger('view:beforedestroy');\n view.emit('local::beforeDestroy viewBeforeDestroy', view);\n\n app.off('resize', view.checkMasterDetailBreakpoint);\n\n if (view.main) {\n app.views.main = null;\n delete app.views.main;\n } else if (view.name) {\n app.views[view.name] = null;\n delete app.views[view.name];\n }\n view.$el[0].f7View = null;\n delete view.$el[0].f7View;\n\n app.views.splice(app.views.indexOf(view), 1);\n\n // Destroy Router\n if (view.params.router && view.router) {\n view.router.destroy();\n }\n\n view.emit('local::destroy viewDestroy', view);\n\n // Delete props & methods\n Object.keys(view).forEach((viewProp) => {\n view[viewProp] = null;\n delete view[viewProp];\n });\n\n view = null;\n }\n\n checkMasterDetailBreakpoint(force) {\n const view = this;\n const app = view.app;\n const wasMasterDetail = view.$el.hasClass('view-master-detail');\n const isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;\n if ((typeof force === 'undefined' && isMasterDetail) || force === true) {\n view.$el.addClass('view-master-detail');\n if (!wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n } else {\n view.$el.removeClass('view-master-detail');\n if (wasMasterDetail) {\n view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);\n view.$el.trigger('view:masterDetailBreakpoint');\n }\n }\n }\n\n initMasterDetail() {\n const view = this;\n const app = view.app;\n view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);\n view.checkMasterDetailBreakpoint();\n if (view.params.masterDetailResizable) {\n resizableView(view);\n }\n app.on('resize', view.checkMasterDetailBreakpoint);\n }\n\n init() {\n const view = this;\n if (view.params.router) {\n if (view.params.masterDetailBreakpoint > 0) {\n view.initMasterDetail();\n }\n view.router.init();\n view.$el.trigger('view:init');\n view.emit('local::init viewInit', view);\n }\n }\n}\n\n// Use Router\nView.use(Router);\n\n\nexport default View;\n","import $ from 'dom7';\nimport { window /* , document */ } from 'ssr-window';\n// import Device from '../../utils/device';\n// import Support from '../../utils/support';\nimport ViewClass from '../../components/view/view-class';\n\nfunction initClicks(app) {\n function handleClicks(e) {\n const $clickedEl = $(e.target);\n const $clickedLinkEl = $clickedEl.closest('a');\n const isLink = $clickedLinkEl.length > 0;\n const url = isLink && $clickedLinkEl.attr('href');\n // const isTabLink = isLink && $clickedLinkEl.hasClass('tab-link') && ($clickedLinkEl.attr('data-tab') || (url && url.indexOf('#') === 0));\n\n // Check if link is external\n if (isLink) {\n // eslint-disable-next-line\n if ($clickedLinkEl.is(app.params.clicks.externalLinks) || (url && url.indexOf('javascript:') >= 0)) {\n const target = $clickedLinkEl.attr('target');\n if (\n url\n && window.cordova\n && window.cordova.InAppBrowser\n && (target === '_system' || target === '_blank')\n ) {\n e.preventDefault();\n window.cordova.InAppBrowser.open(url, target);\n }\n return;\n }\n }\n\n // Modules Clicks\n Object.keys(app.modules).forEach((moduleName) => {\n const moduleClicks = app.modules[moduleName].clicks;\n if (!moduleClicks) return;\n if (e.preventF7Router) return;\n Object.keys(moduleClicks).forEach((clickSelector) => {\n const matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);\n if (matchingClickedElement.length > 0) {\n moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);\n }\n });\n });\n\n // Load Page\n let clickedLinkData = {};\n if (isLink) {\n e.preventDefault();\n clickedLinkData = $clickedLinkEl.dataset();\n }\n\n // Prevent Router\n if (e.preventF7Router) return;\n if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;\n\n const validUrl = url && url.length > 0 && url[0] !== '#';\n if (validUrl || $clickedLinkEl.hasClass('back')) {\n let view;\n if (clickedLinkData.view && clickedLinkData.view === 'current') {\n view = app.views.current;\n } else if (clickedLinkData.view) {\n view = $(clickedLinkData.view)[0].f7View;\n } else {\n view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;\n if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {\n if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;\n else if (view.params.linksView instanceof ViewClass) view = view.params.linksView;\n }\n }\n if (!view) {\n if (app.views.main) view = app.views.main;\n }\n if (!view || !view.router) return;\n if (clickedLinkData.context && typeof clickedLinkData.context === 'string') {\n try {\n clickedLinkData.context = JSON.parse(clickedLinkData.context);\n } catch (err) {\n // something wrong there\n }\n }\n if ($clickedLinkEl[0].f7RouteProps) {\n clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;\n }\n if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);\n else view.router.navigate(url, clickedLinkData);\n }\n }\n\n app.on('click', handleClicks);\n}\nexport default {\n name: 'clicks',\n params: {\n clicks: {\n // External Links\n externalLinks: '.external',\n },\n },\n on: {\n init() {\n const app = this;\n initClicks(app);\n },\n },\n};\n","import Template7 from 'template7';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'routerTemplateLoader',\n proto: {\n templateLoader(template, templateUrl, options, resolve, reject) {\n const router = this;\n function compile(t) {\n let compiledHtml;\n let context;\n try {\n context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject();\n throw (err);\n }\n }\n if (typeof t === 'function') {\n compiledHtml = t(context);\n } else {\n compiledHtml = Template7.compile(t)(Utils.extend({}, context || {}, {\n $app: router.app,\n $root: Utils.extend({}, router.app.data, router.app.methods),\n $route: options.route,\n $f7route: options.route,\n $router: router,\n $f7router: router,\n $theme: {\n ios: router.app.theme === 'ios',\n md: router.app.theme === 'md',\n aurora: router.app.theme === 'aurora',\n },\n }));\n }\n } catch (err) {\n reject();\n throw (err);\n }\n resolve(compiledHtml, { context });\n }\n if (templateUrl) {\n // Load via XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(templateUrl, options)\n .then((templateContent) => {\n compile(templateContent);\n })\n .catch(() => {\n reject();\n });\n } else {\n compile(template);\n }\n },\n\n modalTemplateLoader(template, templateUrl, options, resolve, reject) {\n const router = this;\n return router.templateLoader(template, templateUrl, options, (html) => {\n resolve(html);\n }, reject);\n },\n\n tabTemplateLoader(template, templateUrl, options, resolve, reject) {\n const router = this;\n return router.templateLoader(template, templateUrl, options, (html) => {\n resolve(html);\n }, reject);\n },\n\n pageTemplateLoader(template, templateUrl, options, resolve, reject) {\n const router = this;\n return router.templateLoader(template, templateUrl, options, (html, newOptions = {}) => {\n resolve(router.getPageEl(html), newOptions);\n }, reject);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nexport default {\n name: 'routerComponentLoader',\n proto: {\n componentLoader(component, componentUrl, options = {}, resolve, reject) {\n const router = this;\n const { app } = router;\n const url = typeof component === 'string' ? component : componentUrl;\n const compiledUrl = router.replaceRequestUrlParams(url, options);\n function compile(componentOptions) {\n let context = options.context || {};\n if (typeof context === 'function') context = context.call(router);\n else if (typeof context === 'string') {\n try {\n context = JSON.parse(context);\n } catch (err) {\n reject(err);\n throw (err);\n }\n }\n const extendContext = Utils.merge(\n {},\n context,\n {\n $route: options.route,\n $f7route: options.route,\n $router: router,\n $f7router: router,\n $theme: {\n ios: app.theme === 'ios',\n md: app.theme === 'md',\n aurora: app.theme === 'aurora',\n },\n }\n );\n if (options.componentOptions && options.componentOptions.el) {\n componentOptions.el = options.componentOptions.el;\n }\n if (options.componentOptions && options.componentOptions.root) {\n componentOptions.root = options.componentOptions.root;\n }\n app.component.create(componentOptions, extendContext)\n .then((createdComponent) => {\n resolve(createdComponent.el);\n })\n .catch((err) => {\n reject(err);\n throw new Error(err);\n });\n }\n let cachedComponent;\n if (compiledUrl && router.params.componentCache) {\n router.cache.components.forEach((cached) => {\n if (cached.url === compiledUrl) cachedComponent = cached.component;\n });\n }\n if (compiledUrl && cachedComponent) {\n compile(cachedComponent);\n } else if (compiledUrl && !cachedComponent) {\n // Load via XHR\n if (router.xhr) {\n router.xhr.abort();\n router.xhr = false;\n }\n router\n .xhrRequest(url, options)\n .then((loadedComponent) => {\n const parsedComponent = app.component.parse(loadedComponent);\n if (router.params.componentCache) {\n router.cache.components.push({\n url: compiledUrl,\n component: parsedComponent,\n });\n }\n compile(parsedComponent);\n })\n .catch((err) => {\n reject();\n throw (err);\n });\n } else {\n compile(component);\n }\n },\n\n modalComponentLoader(rootEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n router.componentLoader(component, componentUrl, options, (el) => {\n resolve(el);\n }, reject);\n },\n\n tabComponentLoader(tabEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n router.componentLoader(component, componentUrl, options, (el) => {\n resolve(el);\n }, reject);\n },\n\n pageComponentLoader(routerEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n router.componentLoader(component, componentUrl, options, (el, newOptions = {}) => {\n resolve(el, newOptions);\n }, reject);\n },\n },\n};\n","export function vnode(sel, data, children, text, elm) {\n var key = data === undefined ? undefined : data.key;\n return { sel: sel, data: data, children: children,\n text: text, elm: elm, key: key };\n}\nexport default vnode;\n//# sourceMappingURL=vnode.js.map","export var array = Array.isArray;\nexport function primitive(s) {\n return typeof s === 'string' || typeof s === 'number';\n}\n//# sourceMappingURL=is.js.map","import { vnode } from './vnode';\nimport * as is from './is';\nfunction addNS(data, children, sel) {\n data.ns = 'http://www.w3.org/2000/svg';\n if (sel !== 'foreignObject' && children !== undefined) {\n for (var i = 0; i < children.length; ++i) {\n var childData = children[i].data;\n if (childData !== undefined) {\n addNS(childData, children[i].children, children[i].sel);\n }\n }\n }\n}\nexport function h(sel, b, c) {\n var data = {}, children, text, i;\n if (c !== undefined) {\n data = b;\n if (is.array(c)) {\n children = c;\n }\n else if (is.primitive(c)) {\n text = c;\n }\n else if (c && c.sel) {\n children = [c];\n }\n }\n else if (b !== undefined) {\n if (is.array(b)) {\n children = b;\n }\n else if (is.primitive(b)) {\n text = b;\n }\n else if (b && b.sel) {\n children = [b];\n }\n else {\n data = b;\n }\n }\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n if (is.primitive(children[i]))\n children[i] = vnode(undefined, undefined, undefined, children[i], undefined);\n }\n }\n if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' &&\n (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {\n addNS(data, children, sel);\n }\n return vnode(sel, data, children, text, undefined);\n}\n;\nexport default h;\n//# sourceMappingURL=h.js.map","/* eslint no-use-before-define: \"off\" */\n/* eslint import/no-named-as-default: \"off\" */\nimport { window, document } from 'ssr-window';\nimport h from './snabbdom/h';\nimport customComponents from './custom-components';\n\nconst selfClosing = 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(' ');\nconst propsAttrs = 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate'.split(' ');\nconst booleanProps = 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(' ');\nconst tempDomDIV = document.createElement('div');\nlet tempDomTBODY;\nlet tempDomTROW;\n\nfunction toCamelCase(name) {\n return name\n .split('-')\n .map((word, index) => {\n if (index === 0) return word.toLowerCase();\n return word[0].toUpperCase() + word.substr(1);\n })\n .join('');\n}\nfunction contextFromAttrs(...args) {\n const context = {};\n args.forEach((obj = {}) => {\n Object.keys(obj).forEach((key) => {\n context[toCamelCase(key)] = obj[key];\n });\n });\n\n return context;\n}\n\nfunction createCustomComponent({ app, vnode, tagName, data }) {\n app.component.create(\n Object.assign({ el: vnode.elm }, customComponents[tagName]),\n {\n $props: contextFromAttrs(data.attrs || {}, data.props || {}),\n },\n vnode.children,\n ).then((c) => {\n if (vnode.data && vnode.data.on && c && c.$el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n c.$el.on(eventName, vnode.data.on[eventName]);\n });\n }\n // eslint-disable-next-line\n vnode.elm.__component__ = c;\n });\n}\nfunction updateCustomComponent(vnode) {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n if (!component) return;\n const newProps = contextFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});\n component.$children = vnode.children;\n Object.assign(component.$props, newProps);\n component.$update();\n}\nfunction destroyCustomComponent(vnode) {\n // eslint-disable-next-line\n const component = vnode && vnode.elm && vnode.elm.__component__;\n\n if (component) {\n const { el, $el } = component;\n if (vnode.data && vnode.data.on && $el) {\n Object.keys(vnode.data.on).forEach((eventName) => {\n $el.off(eventName, vnode.data.on[eventName]);\n });\n }\n if (component.$destroy) component.$destroy();\n if (el && el.parentNode) el.parentNode.removeChild(el);\n delete vnode.elm.__component__; // eslint-disable-line\n }\n}\n\nfunction getHooks(data, app, initial, isRoot, tagName) {\n const hooks = {};\n const insert = [];\n const destroy = [];\n const update = [];\n const postpatch = [];\n let isFakeElement = false;\n if (data && data.attrs && data.attrs.component) {\n // eslint-disable-next-line\n tagName = data.attrs.component;\n delete data.attrs.component;\n isFakeElement = true;\n }\n const isCustomComponent = tagName && tagName.indexOf('-') > 0 && customComponents[tagName];\n if (isCustomComponent) {\n insert.push((vnode) => {\n if (vnode.sel !== tagName && !isFakeElement) return;\n createCustomComponent({ app, vnode, tagName, data });\n });\n destroy.push((vnode) => {\n destroyCustomComponent(vnode);\n });\n update.push((oldVnode, vnode) => {\n updateCustomComponent(vnode);\n });\n }\n\n if (!isCustomComponent) {\n if (!data || !data.attrs || !data.attrs.class) return hooks;\n\n const classNames = data.attrs.class;\n classNames.split(' ').forEach((className) => {\n if (!initial) {\n insert.push(...app.getVnodeHooks('insert', className));\n }\n destroy.push(...app.getVnodeHooks('destroy', className));\n update.push(...app.getVnodeHooks('update', className));\n postpatch.push(...app.getVnodeHooks('postpatch', className));\n });\n }\n\n if (isRoot && !initial) {\n postpatch.push((oldVnode, vnode) => {\n const vn = vnode || oldVnode;\n if (!vn) return;\n if (vn.data && vn.data.context && vn.data.context.$options.updated) {\n vn.data.context.$hook('updated');\n }\n });\n }\n if (insert.length === 0 && destroy.length === 0 && update.length === 0 && postpatch.length === 0) {\n return hooks;\n }\n\n if (insert.length) {\n hooks.insert = (vnode) => {\n insert.forEach(f => f(vnode));\n };\n }\n if (destroy.length) {\n hooks.destroy = (vnode) => {\n destroy.forEach(f => f(vnode));\n };\n }\n if (update.length) {\n hooks.update = (oldVnode, vnode) => {\n update.forEach(f => f(oldVnode, vnode));\n };\n }\n if (postpatch.length) {\n hooks.postpatch = (oldVnode, vnode) => {\n postpatch.forEach(f => f(oldVnode, vnode));\n };\n }\n\n return hooks;\n}\nfunction getEventHandler(handlerString, context, { stop, prevent, once } = {}) {\n let fired = false;\n let methodName;\n let method;\n let customArgs = [];\n let needMethodBind = true;\n\n if (handlerString.indexOf('(') < 0) {\n methodName = handlerString;\n } else {\n methodName = handlerString.split('(')[0];\n }\n if (methodName.indexOf('.') >= 0) {\n methodName.split('.').forEach((path, pathIndex) => {\n if (pathIndex === 0 && path === 'this') return;\n if (pathIndex === 0 && path === 'window') {\n // eslint-disable-next-line\n method = window;\n needMethodBind = false;\n return;\n }\n if (!method) method = context;\n if (method[path]) method = method[path];\n else {\n throw new Error(`Framework7: Component doesn't have method \"${methodName.split('.').slice(0, pathIndex + 1).join('.')}\"`);\n }\n });\n } else {\n if (!context[methodName]) {\n throw new Error(`Framework7: Component doesn't have method \"${methodName}\"`);\n }\n method = context[methodName];\n }\n if (needMethodBind) {\n method = method.bind(context);\n }\n\n function handler(...args) {\n const e = args[0];\n if (once && fired) return;\n if (stop) e.stopPropagation();\n if (prevent) e.preventDefault();\n fired = true;\n\n if (handlerString.indexOf('(') < 0) {\n customArgs = args;\n } else {\n const handlerArguments = handlerString\n .split('(')[1]\n .split(')')[0]\n .replace(/'[^']*'|\"[^\"]*\"/g, a => a.replace(/,/g, '<_comma_>'))\n .split(',')\n .map(a => a.replace(/<_comma_>/g, ','));\n handlerArguments.forEach((argument) => {\n let arg = argument.trim();\n // eslint-disable-next-line\n if (!isNaN(arg)) arg = parseFloat(arg);\n else if (arg === 'true') arg = true;\n else if (arg === 'false') arg = false;\n else if (arg === 'null') arg = null;\n else if (arg === 'undefined') arg = undefined;\n else if (arg[0] === '\"') arg = arg.replace(/\"/g, '');\n else if (arg[0] === '\\'') arg = arg.replace(/'/g, '');\n else if (arg.indexOf('.') > 0) {\n let deepArg;\n arg.split('.').forEach((path) => {\n if (!deepArg) deepArg = context;\n deepArg = deepArg[path];\n });\n arg = deepArg;\n } else {\n arg = context[arg];\n }\n customArgs.push(arg);\n });\n }\n\n method(...customArgs);\n }\n\n return handler;\n}\n\nfunction getData(el, context, app, initial, isRoot, tagName) {\n const data = { context };\n const attributes = el.attributes;\n Array.prototype.forEach.call(attributes, (attr) => {\n let attrName = attr.name;\n const attrValue = attr.value;\n if (propsAttrs.indexOf(attrName) >= 0) {\n // Props\n if (!data.props) data.props = {};\n if (attrName === 'readonly') {\n attrName = 'readOnly';\n }\n if (booleanProps.indexOf(attrName) >= 0) {\n // eslint-disable-next-line\n data.props[attrName] = attrValue === false ? false : true;\n } else {\n data.props[attrName] = attrValue;\n }\n } else if (attrName === 'key') {\n // Key\n data.key = attrValue;\n } else if (attrName.indexOf('@') === 0) {\n // Events\n if (!data.on) data.on = {};\n let eventName = attrName.substr(1);\n let stop = false;\n let prevent = false;\n let once = false;\n if (eventName.indexOf('.') >= 0) {\n eventName.split('.').forEach((eventNamePart, eventNameIndex) => {\n if (eventNameIndex === 0) eventName = eventNamePart;\n else {\n if (eventNamePart === 'stop') stop = true;\n if (eventNamePart === 'prevent') prevent = true;\n if (eventNamePart === 'once') once = true;\n }\n });\n }\n data.on[eventName] = getEventHandler(attrValue, context, { stop, prevent, once });\n } else if (attrName === 'style') {\n // Style\n if (attrValue.indexOf('{') >= 0 && attrValue.indexOf('}') >= 0) {\n try {\n data.style = JSON.parse(attrValue);\n } catch (e) {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n if (!data.attrs) data.attrs = {};\n data.attrs.style = attrValue;\n }\n } else {\n // Rest of attribures\n if (!data.attrs) data.attrs = {};\n data.attrs[attrName] = attrValue;\n\n // ID -> Key\n if (attrName === 'id' && !data.key && !isRoot) {\n data.key = attrValue;\n }\n }\n });\n if (isRoot && context && context.$id && context.$style && context.$styleScoped) {\n if (!data.attrs) data.attrs = {};\n data.attrs[`data-f7-${context.$id}`] = '';\n }\n const hooks = getHooks(data, app, initial, isRoot, tagName);\n hooks.prepatch = (oldVnode, vnode) => {\n if (!oldVnode || !vnode) return;\n if (oldVnode && oldVnode.data && oldVnode.data.props) {\n Object.keys(oldVnode.data.props).forEach((key) => {\n if (booleanProps.indexOf(key) < 0) return;\n if (!vnode.data) vnode.data = {};\n if (!vnode.data.props) vnode.data.props = {};\n if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {\n vnode.data.props[key] = false;\n }\n });\n }\n };\n if (hooks) {\n data.hook = hooks;\n }\n return data;\n}\n\nfunction getChildren(el, context, app, initial) {\n const children = [];\n const nodes = el.childNodes;\n for (let i = 0; i < nodes.length; i += 1) {\n const childNode = nodes[i];\n const child = elementToVNode(childNode, context, app, initial);\n if (Array.isArray(child)) {\n children.push(...child);\n } else if (child) {\n children.push(child);\n }\n }\n return children;\n}\n\nfunction getSlots(slotEl, context, app, initial) {\n const slotName = slotEl.getAttribute('name') || 'default';\n const slots = (context.$children || [])\n .filter((childEl) => {\n let childSlotName = 'default';\n if (childEl.data) {\n childSlotName = (childEl.data.attrs && childEl.data.attrs.slot) || 'default';\n }\n return childSlotName === slotName;\n });\n if (slots.length === 0) {\n return getChildren(slotEl, context, app, initial);\n }\n return slots;\n}\n\nfunction elementToVNode(el, context, app, initial, isRoot) {\n if (el.nodeType === 3) {\n // text\n return el.textContent;\n }\n if (el.nodeType !== 1) return null;\n // element (statement adds inline SVG compatibility)\n const tagName = (el instanceof window.SVGElement) ? el.nodeName : el.nodeName.toLowerCase();\n if (tagName === 'slot') {\n return getSlots(el, context, app, initial);\n }\n return h(\n tagName,\n getData(el, context, app, initial, isRoot, tagName),\n selfClosing.indexOf(tagName) >= 0 ? [] : getChildren(el, context, app, initial)\n );\n}\n\nexport default function (html = '', context, initial) {\n // Save to temp dom\n const htmlTrim = html.trim();\n let tempDom = tempDomDIV;\n if (htmlTrim.indexOf('<tr') === 0) {\n if (!tempDomTBODY) tempDomTBODY = document.createElement('tbody');\n tempDom = tempDomTBODY;\n }\n if (htmlTrim.indexOf('<td') === 0 || htmlTrim.indexOf('<th') === 0) {\n if (!tempDomTROW) tempDomTROW = document.createElement('tr');\n tempDom = tempDomTROW;\n }\n tempDom.innerHTML = htmlTrim;\n\n // Parse DOM\n let rootEl;\n for (let i = 0; i < tempDom.childNodes.length; i += 1) {\n if (!rootEl && tempDom.childNodes[i].nodeType === 1) {\n rootEl = tempDom.childNodes[i];\n }\n }\n const result = elementToVNode(rootEl, context, context.$app, initial, true);\n\n // Clean\n tempDom.innerHTML = '';\n\n return result;\n}\n","export default {};\n","function createElement(tagName) {\n return document.createElement(tagName);\n}\nfunction createElementNS(namespaceURI, qualifiedName) {\n return document.createElementNS(namespaceURI, qualifiedName);\n}\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\nfunction createComment(text) {\n return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n if (referenceNode && referenceNode.parentNode !== parentNode) {\n if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;\n }\n parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n if (!node) return;\n node.removeChild(child);\n}\nfunction appendChild(node, child) {\n node.appendChild(child);\n}\nfunction parentNode(node) {\n return node.parentNode;\n}\nfunction nextSibling(node) {\n return node.nextSibling;\n}\nfunction tagName(elm) {\n return elm.tagName;\n}\nfunction setTextContent(node, text) {\n node.textContent = text;\n}\nfunction getTextContent(node) {\n return node.textContent;\n}\nfunction isElement(node) {\n return node.nodeType === 1;\n}\nfunction isText(node) {\n return node.nodeType === 3;\n}\nfunction isComment(node) {\n return node.nodeType === 8;\n}\nexport var htmlDomApi = {\n createElement: createElement,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n getTextContent: getTextContent,\n isElement: isElement,\n isText: isText,\n isComment: isComment,\n};\nexport default htmlDomApi;\n//# sourceMappingURL=htmldomapi.js.map\n","import vnode from './vnode';\nimport * as is from './is';\nimport htmlDomApi from './htmldomapi';\nfunction isUndef(s) { return s === undefined; }\nfunction isDef(s) { return s !== undefined; }\nvar emptyNode = vnode('', {}, [], undefined, undefined);\nfunction sameVnode(vnode1, vnode2) {\n return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;\n}\nfunction isVnode(vnode) {\n return vnode.sel !== undefined;\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n var i, map = {}, key, ch;\n for (i = beginIdx; i <= endIdx; ++i) {\n ch = children[i];\n if (ch != null) {\n key = ch.key;\n if (key !== undefined)\n map[key] = i;\n }\n }\n return map;\n}\nvar hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];\nexport { h } from './h';\nexport { thunk } from './thunk';\nexport function init(modules, domApi) {\n var i, j, cbs = {};\n var api = domApi !== undefined ? domApi : htmlDomApi;\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n var hook = modules[j][hooks[i]];\n if (hook !== undefined) {\n cbs[hooks[i]].push(hook);\n }\n }\n }\n function emptyNodeAt(elm) {\n var id = elm.id ? '#' + elm.id : '';\n var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';\n return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);\n }\n function createRmCb(childElm, listeners) {\n return function rmCb() {\n if (--listeners === 0) {\n var parent_1 = api.parentNode(childElm);\n api.removeChild(parent_1, childElm);\n }\n };\n }\n function createElm(vnode, insertedVnodeQueue) {\n var i, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.init)) {\n i(vnode);\n data = vnode.data;\n }\n }\n var children = vnode.children, sel = vnode.sel;\n if (sel === '!') {\n if (isUndef(vnode.text)) {\n vnode.text = '';\n }\n vnode.elm = api.createComment(vnode.text);\n }\n else if (sel !== undefined) {\n // Parse selector\n var hashIdx = sel.indexOf('#');\n var dotIdx = sel.indexOf('.', hashIdx);\n var hash = hashIdx > 0 ? hashIdx : sel.length;\n var dot = dotIdx > 0 ? dotIdx : sel.length;\n var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;\n var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag)\n : api.createElement(tag);\n if (hash < dot)\n elm.setAttribute('id', sel.slice(hash + 1, dot));\n if (dotIdx > 0)\n elm.setAttribute('class', sel.slice(dot + 1).replace(/\\./g, ' '));\n for (i = 0; i < cbs.create.length; ++i)\n cbs.create[i](emptyNode, vnode);\n if (is.array(children)) {\n for (i = 0; i < children.length; ++i) {\n var ch = children[i];\n if (ch != null) {\n api.appendChild(elm, createElm(ch, insertedVnodeQueue));\n }\n }\n }\n else if (is.primitive(vnode.text)) {\n api.appendChild(elm, api.createTextNode(vnode.text));\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (i.create)\n i.create(emptyNode, vnode);\n if (i.insert)\n insertedVnodeQueue.push(vnode);\n }\n }\n else {\n vnode.elm = api.createTextNode(vnode.text);\n }\n return vnode.elm;\n }\n function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (ch != null) {\n api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);\n }\n }\n }\n function invokeDestroyHook(vnode) {\n var i, j, data = vnode.data;\n if (data !== undefined) {\n if (isDef(i = data.hook) && isDef(i = i.destroy))\n i(vnode);\n for (i = 0; i < cbs.destroy.length; ++i)\n cbs.destroy[i](vnode);\n if (vnode.children !== undefined) {\n for (j = 0; j < vnode.children.length; ++j) {\n i = vnode.children[j];\n if (i != null && typeof i !== \"string\") {\n invokeDestroyHook(i);\n }\n }\n }\n }\n }\n function removeVnodes(parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var i_1 = void 0, listeners = void 0, rm = void 0, ch = vnodes[startIdx];\n if (ch != null) {\n if (isDef(ch.sel)) {\n invokeDestroyHook(ch);\n listeners = cbs.remove.length + 1;\n rm = createRmCb(ch.elm, listeners);\n for (i_1 = 0; i_1 < cbs.remove.length; ++i_1)\n cbs.remove[i_1](ch, rm);\n if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {\n i_1(ch, rm);\n }\n else {\n rm();\n }\n }\n else {\n api.removeChild(parentElm, ch.elm);\n }\n }\n }\n }\n function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {\n var oldStartIdx = 0, newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx;\n var idxInOld;\n var elmToMove;\n var before;\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (oldStartVnode == null) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode might have been moved left\n }\n else if (oldEndVnode == null) {\n oldEndVnode = oldCh[--oldEndIdx];\n }\n else if (newStartVnode == null) {\n newStartVnode = newCh[++newStartIdx];\n }\n else if (newEndVnode == null) {\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldStartVnode, newEndVnode)) {\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n }\n else if (sameVnode(oldEndVnode, newStartVnode)) {\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n if (oldKeyToIdx === undefined) {\n oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n }\n idxInOld = oldKeyToIdx[newStartVnode.key];\n if (isUndef(idxInOld)) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n newStartVnode = newCh[++newStartIdx];\n }\n else {\n elmToMove = oldCh[idxInOld];\n if (elmToMove.sel !== newStartVnode.sel) {\n api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);\n }\n else {\n patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n }\n if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {\n if (oldStartIdx > oldEndIdx) {\n before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n }\n else {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n }\n function patchVnode(oldVnode, vnode, insertedVnodeQueue) {\n var i, hook;\n if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {\n i(oldVnode, vnode);\n }\n var elm = vnode.elm = oldVnode.elm;\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (oldVnode === vnode)\n return;\n if (vnode.data !== undefined) {\n for (i = 0; i < cbs.update.length; ++i)\n cbs.update[i](oldVnode, vnode);\n i = vnode.data.hook;\n if (isDef(i) && isDef(i = i.update))\n i(oldVnode, vnode);\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch)\n updateChildren(elm, oldCh, ch, insertedVnodeQueue);\n }\n else if (isDef(ch)) {\n if (isDef(oldVnode.text))\n api.setTextContent(elm, '');\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n }\n else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n }\n else if (isDef(oldVnode.text)) {\n api.setTextContent(elm, '');\n }\n }\n else if (oldVnode.text !== vnode.text) {\n api.setTextContent(elm, vnode.text);\n }\n if (isDef(hook) && isDef(i = hook.postpatch)) {\n i(oldVnode, vnode);\n }\n }\n return function patch(oldVnode, vnode) {\n var i, elm, parent;\n var insertedVnodeQueue = [];\n for (i = 0; i < cbs.pre.length; ++i)\n cbs.pre[i]();\n if (!isVnode(oldVnode)) {\n oldVnode = emptyNodeAt(oldVnode);\n }\n if (sameVnode(oldVnode, vnode)) {\n patchVnode(oldVnode, vnode, insertedVnodeQueue);\n }\n else {\n elm = oldVnode.elm;\n parent = api.parentNode(elm);\n createElm(vnode, insertedVnodeQueue);\n if (parent !== null) {\n api.insertBefore(parent, vnode.elm, api.nextSibling(elm));\n removeVnodes(parent, [oldVnode], 0, 0);\n }\n }\n for (i = 0; i < insertedVnodeQueue.length; ++i) {\n insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);\n }\n for (i = 0; i < cbs.post.length; ++i)\n cbs.post[i]();\n return vnode;\n };\n}\n//# sourceMappingURL=snabbdom.js.map","var xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar colonChar = 58;\nvar xChar = 120;\nfunction updateAttrs(oldVnode, vnode) {\n var key, elm = vnode.elm, oldAttrs = oldVnode.data.attrs, attrs = vnode.data.attrs;\n if (!oldAttrs && !attrs)\n return;\n if (oldAttrs === attrs)\n return;\n oldAttrs = oldAttrs || {};\n attrs = attrs || {};\n // update modified attributes, add new attributes\n for (key in attrs) {\n var cur = attrs[key];\n var old = oldAttrs[key];\n if (old !== cur) {\n if (cur === true) {\n elm.setAttribute(key, \"\");\n }\n else if (cur === false) {\n elm.removeAttribute(key);\n }\n else {\n if (key.charCodeAt(0) !== xChar) {\n elm.setAttribute(key, cur);\n }\n else if (key.charCodeAt(3) === colonChar) {\n // Assume xml namespace\n elm.setAttributeNS(xmlNS, key, cur);\n }\n else if (key.charCodeAt(5) === colonChar) {\n // Assume xlink namespace\n elm.setAttributeNS(xlinkNS, key, cur);\n }\n else {\n elm.setAttribute(key, cur);\n }\n }\n }\n }\n // remove removed attributes\n // use `in` operator since the previous `for` iteration uses it (.i.e. add even attributes with undefined value)\n // the other option is to remove all attributes with value == undefined\n for (key in oldAttrs) {\n if (!(key in attrs)) {\n elm.removeAttribute(key);\n }\n }\n}\nexport var attributesModule = { create: updateAttrs, update: updateAttrs };\nexport default attributesModule;\n//# sourceMappingURL=attributes.js.map","function updateProps(oldVnode, vnode) {\n var key, cur, old, elm = vnode.elm, oldProps = oldVnode.data.props, props = vnode.data.props;\n if (!oldProps && !props)\n return;\n if (oldProps === props)\n return;\n oldProps = oldProps || {};\n props = props || {};\n for (key in oldProps) {\n if (!props[key]) {\n delete elm[key];\n }\n }\n for (key in props) {\n cur = props[key];\n old = oldProps[key];\n if (old !== cur && (key !== 'value' || elm[key] !== cur)) {\n elm[key] = cur;\n }\n }\n}\nexport var propsModule = { create: updateProps, update: updateProps };\nexport default propsModule;\n//# sourceMappingURL=props.js.map","var raf = (typeof window !== 'undefined' && window.requestAnimationFrame) || setTimeout;\nvar nextFrame = function (fn) { raf(function () { raf(fn); }); };\nfunction setNextFrame(obj, prop, val) {\n nextFrame(function () { obj[prop] = val; });\n}\nfunction updateStyle(oldVnode, vnode) {\n var cur, name, elm = vnode.elm, oldStyle = oldVnode.data.style, style = vnode.data.style;\n if (!oldStyle && !style)\n return;\n if (oldStyle === style)\n return;\n oldStyle = oldStyle || {};\n style = style || {};\n var oldHasDel = 'delayed' in oldStyle;\n for (name in oldStyle) {\n if (!style[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.removeProperty(name);\n }\n else {\n elm.style[name] = '';\n }\n }\n }\n for (name in style) {\n cur = style[name];\n if (name === 'delayed' && style.delayed) {\n for (var name2 in style.delayed) {\n cur = style.delayed[name2];\n if (!oldHasDel || cur !== oldStyle.delayed[name2]) {\n setNextFrame(elm.style, name2, cur);\n }\n }\n }\n else if (name !== 'remove' && cur !== oldStyle[name]) {\n if (name[0] === '-' && name[1] === '-') {\n elm.style.setProperty(name, cur);\n }\n else {\n elm.style[name] = cur;\n }\n }\n }\n}\nfunction applyDestroyStyle(vnode) {\n var style, name, elm = vnode.elm, s = vnode.data.style;\n if (!s || !(style = s.destroy))\n return;\n for (name in style) {\n elm.style[name] = style[name];\n }\n}\nfunction applyRemoveStyle(vnode, rm) {\n var s = vnode.data.style;\n if (!s || !s.remove) {\n rm();\n return;\n }\n var name, elm = vnode.elm, i = 0, compStyle, style = s.remove, amount = 0, applied = [];\n for (name in style) {\n applied.push(name);\n elm.style[name] = style[name];\n }\n compStyle = getComputedStyle(elm);\n var props = compStyle['transition-property'].split(', ');\n for (; i < props.length; ++i) {\n if (applied.indexOf(props[i]) !== -1)\n amount++;\n }\n elm.addEventListener('transitionend', function (ev) {\n if (ev.target === elm)\n --amount;\n if (amount === 0)\n rm();\n });\n}\nexport var styleModule = {\n create: updateStyle,\n update: updateStyle,\n destroy: applyDestroyStyle,\n remove: applyRemoveStyle\n};\nexport default styleModule;\n//# sourceMappingURL=style.js.map","import $ from 'dom7';\n\nfunction invokeHandler(handler, event, args) {\n if (typeof handler === 'function') {\n // call function handler\n handler(event, ...args);\n }\n}\nfunction handleEvent(event, args, vnode) {\n const name = event.type;\n const on = vnode.data.on;\n // call event handler(s) if exists\n if (on && on[name]) {\n invokeHandler(on[name], event, args, vnode);\n }\n}\nfunction createListener() {\n return function handler(event, ...args) {\n handleEvent(event, args, handler.vnode);\n };\n}\nfunction updateEvents(oldVnode, vnode) {\n const oldOn = oldVnode.data.on;\n const oldListener = oldVnode.listener;\n const oldElm = oldVnode.elm;\n const on = vnode && vnode.data.on;\n const elm = (vnode && vnode.elm);\n // optimization for reused immutable handlers\n if (oldOn === on) {\n return;\n }\n // remove existing listeners which no longer used\n if (oldOn && oldListener) {\n // if element changed or deleted we remove all existing listeners unconditionally\n if (!on) {\n Object.keys(oldOn).forEach((name) => {\n $(oldElm).off(name, oldListener);\n });\n } else {\n Object.keys(oldOn).forEach((name) => {\n if (!on[name]) {\n $(oldElm).off(name, oldListener);\n }\n });\n }\n }\n // add new listeners which has not already attached\n if (on) {\n // reuse existing listener or create new\n const listener = oldVnode.listener || createListener();\n vnode.listener = listener;\n // update vnode for listener\n listener.vnode = vnode;\n // if element changed or added we add all needed listeners unconditionally\n if (!oldOn) {\n Object.keys(on).forEach((name) => {\n $(elm).on(name, listener);\n });\n } else {\n Object.keys(on).forEach((name) => {\n if (!oldOn[name]) {\n $(elm).on(name, listener);\n }\n });\n }\n }\n}\n\nexport default {\n create: updateEvents,\n update: updateEvents,\n destroy: updateEvents,\n};\n","/* eslint import/no-named-as-default: off */\nimport { init } from './snabbdom/snabbdom';\nimport attributesModule from './snabbdom/modules/attributes';\nimport propsModule from './snabbdom/modules/props';\nimport styleModule from './snabbdom/modules/style';\nimport eventListenersModule from './eventslisteners';\n\nconst patch = init([\n attributesModule,\n propsModule,\n styleModule,\n eventListenersModule,\n]);\n\nexport default patch;\n","export default {};\n","/* eslint no-underscore-dangle: \"off\" */\nimport { window, document } from 'ssr-window';\nimport $ from 'dom7';\nimport Template7 from 'template7';\nimport Utils from '../../utils/utils';\nimport vdom from './vdom';\nimport patch from './patch';\n\nimport componentMixins from './component-mixins';\n\nclass Component {\n constructor(app, options = {}, extendContext = {}, children) {\n const id = Utils.id();\n const self = this;\n Utils.merge(\n self,\n { $props: {} },\n extendContext,\n {\n $,\n $$: $,\n $dom7: $,\n $app: app,\n $f7: app,\n $options: Utils.extend({ id }, options),\n $id: options.isClassComponent ? self.constructor.id : (options.id || id),\n $mixins: options.isClassComponent ? self.constructor.mixins : options.mixins,\n $children: children || [],\n $isRootComponent: !!options.root,\n }\n );\n const { $options } = self;\n\n\n if (self.$mixins && self.$mixins.length) {\n for (let i = self.$mixins.length - 1; i >= 0; i -= 1) {\n const mixin = self.$mixins[i];\n if (typeof mixin === 'string') {\n if (componentMixins[mixin]) self.$mixins[i] = componentMixins[mixin];\n else self.$mixins.splice(i, 1);\n }\n }\n }\n\n Object.defineProperty(self, '$slots', {\n enumerable: true,\n configurable: true,\n get() {\n const slots = {};\n self.$children.forEach((childVNode) => {\n let childSlotName = 'default';\n if (childVNode.data) {\n childSlotName = (childVNode.data.attrs && childVNode.data.attrs.slot) || 'default';\n }\n if (!slots[childSlotName]) slots[childSlotName] = [];\n slots[childSlotName].push(childVNode);\n });\n return slots;\n },\n });\n\n\n // Root data and methods\n Object.defineProperty(self, '$root', {\n enumerable: true,\n configurable: true,\n get() {\n if (self.$isRootComponent) {\n return self;\n }\n if (app.rootComponent) {\n if (!self.$onRootUpdated) {\n self.$onRootUpdated = () => self.$update();\n app.on('rootComponentUpdated', self.$onRootUpdated);\n }\n return app.rootComponent;\n }\n let root = Utils.merge({}, app.data, app.methods);\n if (window && window.Proxy) {\n root = new window.Proxy(root, {\n set(target, name, val) {\n app.data[name] = val;\n },\n deleteProperty(target, name) {\n delete app.data[name];\n delete app.methods[name];\n },\n has(target, name) {\n return (name in app.data || name in app.methods);\n },\n });\n }\n return root;\n },\n set() {},\n });\n\n // Bind render\n if ($options.render) $options.render = $options.render.bind(self);\n\n // Bind methods\n const methods = {};\n if (self.$mixins && self.$mixins.length) {\n self.$mixins.forEach((mixin) => {\n if (mixin.methods) Object.assign(methods, mixin.methods);\n });\n }\n if ($options.methods) {\n Object.assign(methods, $options.methods);\n }\n Object.keys(methods).forEach((methodName) => {\n self[methodName] = methods[methodName].bind(self);\n });\n\n // Bind Events\n if ($options.on) {\n Object.keys($options.on).forEach((eventName) => {\n $options.on[eventName] = $options.on[eventName].bind(self);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach((eventName) => {\n $options.once[eventName] = $options.once[eventName].bind(self);\n });\n }\n\n self.$style = $options.isClassComponent ? self.constructor.style : $options.style;\n self.$styleScoped = $options.isClassComponent ? self.constructor.styleScoped : $options.styleScoped;\n\n self.__updateQueue = [];\n\n return new Promise((resolve, reject) => {\n self.$hook('data', true)\n .then((datas) => {\n const data = {};\n datas.forEach((dt) => {\n Object.assign(data, dt || {});\n });\n Utils.extend(self, data);\n self.$hook('beforeCreate');\n let html = self.$render();\n\n if (self.$options.el) {\n html = html.trim();\n self.$vnode = vdom(html, self, true);\n if (self.$style) {\n self.$styleEl = document.createElement('style');\n self.$styleEl.innerHTML = self.$style;\n }\n self.el = self.$options.el;\n patch(self.el, self.$vnode);\n self.el = self.$vnode.elm;\n self.$el = $(self.el);\n\n self.$attachEvents();\n self.el.f7Component = self;\n self.$hook('created');\n self.$mount();\n resolve(self);\n return;\n }\n // Make Dom\n if (html && typeof html === 'string') {\n html = html.trim();\n self.$vnode = vdom(html, self, true);\n self.el = document.createElement(self.$vnode.sel || 'div');\n patch(self.el, self.$vnode);\n self.$el = $(self.el);\n } else if (html) {\n self.el = html;\n self.$el = $(self.el);\n }\n if (self.$style) {\n self.$styleEl = document.createElement('style');\n self.$styleEl.innerHTML = self.$style;\n }\n\n self.$attachEvents();\n\n if (self.el) {\n self.el.f7Component = self;\n }\n\n self.$hook('created');\n resolve(self);\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n\n $attachEvents() {\n const self = this;\n const { $options, $el } = self;\n if (self.$mixins && self.$mixins.length) {\n self.$detachEventsHandlers = {};\n self.$mixins.forEach((mixin) => {\n if (mixin.on) {\n Object.keys(mixin.on).forEach((eventName) => {\n const handler = mixin.on[eventName].bind(self);\n if (!self.$detachEventsHandlers[eventName]) self.$detachEventsHandlers[eventName] = [];\n self.$detachEventsHandlers[eventName].push(handler);\n $el.on(Utils.eventNameToColonCase(eventName), handler);\n });\n }\n if (mixin.once) {\n Object.keys(mixin.once).forEach((eventName) => {\n const handler = mixin.once[eventName].bind(self);\n if (!self.$detachEventsHandlers[eventName]) self.$detachEventsHandlers[eventName] = [];\n self.$detachEventsHandlers[eventName].push(handler);\n $el.once(Utils.eventNameToColonCase(eventName), handler);\n });\n }\n });\n }\n if ($options.on) {\n Object.keys($options.on).forEach((eventName) => {\n $el.on(Utils.eventNameToColonCase(eventName), $options.on[eventName]);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach((eventName) => {\n $el.once(Utils.eventNameToColonCase(eventName), $options.once[eventName]);\n });\n }\n }\n\n $detachEvents() {\n const self = this;\n const { $options, $el } = self;\n if ($options.on) {\n Object.keys($options.on).forEach((eventName) => {\n $el.off(Utils.eventNameToColonCase(eventName), $options.on[eventName]);\n });\n }\n if ($options.once) {\n Object.keys($options.once).forEach((eventName) => {\n $el.off(Utils.eventNameToColonCase(eventName), $options.once[eventName]);\n });\n }\n if (!self.$detachEventsHandlers) return;\n Object.keys(self.$detachEventsHandlers).forEach((eventName) => {\n const handlers = self.$detachEventsHandlers[eventName];\n handlers.forEach((handler) => {\n $el.off(Utils.eventNameToColonCase(eventName), handler);\n });\n self.$detachEventsHandlers[eventName] = [];\n delete self.$detachEventsHandlers[eventName];\n });\n self.$detachEventsHandlers = null;\n delete self.$detachEventsHandlers;\n }\n\n $render() {\n const self = this;\n const { $options } = self;\n let html = '';\n if ($options.render) {\n html = $options.render();\n } else if (self.render) {\n html = self.render.call(self);\n } else if ($options.template) {\n if (typeof $options.template === 'string') {\n html = Template7.compile($options.template)(self);\n } else {\n // Supposed to be function\n html = $options.template(self);\n }\n }\n return html;\n }\n\n $startUpdateQueue() {\n const self = this;\n if (self.__requestAnimationFrameId) return;\n function update() {\n let html = self.$render();\n\n // Make Dom\n if (html && typeof html === 'string') {\n html = html.trim();\n const newVNode = vdom(html, self, false);\n self.$vnode = patch(self.$vnode, newVNode);\n }\n }\n self.__requestAnimationFrameId = window.requestAnimationFrame(() => {\n if (self.__updateIsPending) update();\n let resolvers = [...self.__updateQueue];\n self.__updateQueue = [];\n self.__updateIsPending = false;\n window.cancelAnimationFrame(self.__requestAnimationFrameId);\n delete self.__requestAnimationFrameId;\n delete self.__updateIsPending;\n resolvers.forEach(resolver => resolver());\n resolvers = [];\n });\n }\n\n $tick(callback) {\n const self = this;\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n }\n self.__updateQueue.push(resolver);\n self.$startUpdateQueue();\n });\n }\n\n $update(callback) {\n const self = this;\n return new Promise((resolve) => {\n function resolver() {\n resolve();\n if (callback) callback();\n if (self.$isRootComponent) {\n self.$f7.emit('rootComponentUpdated');\n }\n }\n self.__updateIsPending = true;\n self.__updateQueue.push(resolver);\n self.$startUpdateQueue();\n });\n }\n\n $setState(mergeState = {}, callback) {\n const self = this;\n Utils.merge(self, mergeState);\n return self.$update(callback);\n }\n\n $f7ready(callback) {\n if (this.$f7.initialized) {\n callback(this.$f7);\n return;\n }\n this.$f7.once('init', () => {\n callback(this.$f7);\n });\n }\n\n $mount(mountMethod) {\n const self = this;\n self.$hook('beforeMount');\n if (self.$styleEl) $('head').append(self.$styleEl);\n if (mountMethod) mountMethod(self.el);\n self.$hook('mounted');\n }\n\n $destroy() {\n const self = this;\n self.$hook('beforeDestroy');\n\n if (self.$styleEl) $(self.$styleEl).remove();\n if (self.$onRootUpdated) {\n self.$f7.off('rootComponentUpdated', self.$onRootUpdated);\n delete self.$onRootUpdated;\n }\n\n self.$detachEvents();\n self.$hook('destroyed');\n // Delete component instance\n if (self.el && self.el.f7Component) {\n self.el.f7Component = null;\n delete self.el.f7Component;\n }\n // Patch with empty node\n if (self.$vnode) {\n self.$vnode = patch(self.$vnode, { sel: self.$vnode.sel, data: {} });\n }\n // Clear update queue\n window.cancelAnimationFrame(self.__requestAnimationFrameId);\n\n // Delete all props\n Utils.deleteProps(self);\n }\n\n $hook(name, async) {\n const self = this;\n if (async) {\n const promises = [];\n if (self.$mixins && self.$mixins.length) {\n self.$mixins.forEach((mixin) => {\n if (mixin[name]) promises.push(mixin[name].call(self));\n });\n }\n if (self[name] && typeof self[name] === 'function') {\n promises.push(self[name].call(self));\n }\n if (self.$options[name]) {\n promises.push(self.$options[name].call(self));\n }\n return Promise.all(promises);\n }\n if (self.$mixins && self.$mixins.length) {\n self.$mixins.forEach((mixin) => {\n if (mixin[name] && typeof mixin[name] === 'function') {\n mixin[name].call(self);\n }\n });\n }\n if (self.$options[name]) return self.$options[name].call(self);\n if (self[name]) return self[name].call(self);\n return undefined;\n }\n}\n\nexport default Component;\n","import { window, document } from 'ssr-window';\nimport Template7 from 'template7';\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nfunction parseComponent(componentString) {\n const id = Utils.id();\n const callbackCreateName = `f7_component_create_callback_${id}`;\n const callbackRenderName = `f7_component_render_callback_${id}`;\n\n // Template\n let template;\n const hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);\n const templateType = hasTemplate[2] || 't7';\n if (hasTemplate) {\n template = componentString\n .split(/<template[ ]?[a-z0-9-]*>/)\n .filter((item, index) => index > 0)\n .join('<template>')\n .split('</template>')\n .filter((item, index, arr) => index < arr.length - 1)\n .join('</template>')\n .replace(/{{#raw}}([ \\n]*)<template/g, '{{#raw}}<template')\n .replace(/\\/template>([ \\n]*){{\\/raw}}/g, '/template>{{/raw}}')\n .replace(/([ \\n])<template/g, '$1{{#raw}}<template')\n .replace(/\\/template>([ \\n])/g, '/template>{{/raw}}$1');\n }\n\n // Parse Styles\n let style = null;\n let styleScoped = false;\n\n if (componentString.indexOf('<style>') >= 0) {\n style = componentString.split('<style>')[1].split('</style>')[0];\n } else if (componentString.indexOf('<style scoped>') >= 0) {\n styleScoped = true;\n style = componentString.split('<style scoped>')[1].split('</style>')[0];\n style = style\n .replace(/{{this}}/g, `[data-f7-${id}]`)\n .replace(/[\\n]?([^{^}]*){/ig, (string, rules) => {\n // eslint-disable-next-line\n rules = rules\n .split(',')\n .map((rule) => {\n if (rule.indexOf('@') >= 0) return rule;\n if (rule.indexOf(`[data-f7-${id}]`) >= 0) return rule;\n return `[data-f7-${id}] ${rule.trim()}`;\n })\n .join(', ');\n\n return `\\n${rules} {`;\n });\n }\n\n // Parse Script\n let scriptContent;\n let scriptEl;\n if (componentString.indexOf('<script>') >= 0) {\n const scripts = componentString.split('<script>');\n scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();\n } else {\n scriptContent = 'return {}';\n }\n if (!scriptContent || !scriptContent.trim()) scriptContent = 'return {}';\n\n scriptContent = `window.${callbackCreateName} = function () {${scriptContent}}`;\n\n // Insert Script El\n scriptEl = document.createElement('script');\n scriptEl.innerHTML = scriptContent;\n $('head').append(scriptEl);\n\n const component = window[callbackCreateName]();\n const isClassComponent = typeof component === 'function';\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackCreateName] = null;\n delete window[callbackCreateName];\n\n // Assign Template\n if (!component.template && !component.render) {\n component.template = template;\n component.templateType = templateType;\n }\n if (component.template) {\n if (component.templateType === 't7') {\n if (isClassComponent) {\n const templateFunction = Template7.compile(component.template);\n component.prototype.render = function render() {\n return templateFunction(this);\n };\n } else {\n component.template = Template7.compile(component.template);\n }\n }\n if (component.templateType === 'es') {\n const renderContent = `window.${callbackRenderName} = function () {\n return function render() {\n return \\`${component.template}\\`;\n }\n }`;\n scriptEl = document.createElement('script');\n scriptEl.innerHTML = renderContent;\n $('head').append(scriptEl);\n\n if (isClassComponent) {\n component.prototype.render = component.template;\n } else {\n component.render = window[callbackRenderName]();\n }\n\n // Remove Script El\n $(scriptEl).remove();\n window[callbackRenderName] = null;\n delete window[callbackRenderName];\n }\n }\n\n if (isClassComponent) {\n delete component.template;\n delete component.templateType;\n }\n\n // Assign Style\n if (style) {\n component.style = style;\n component.styleScoped = styleScoped;\n }\n\n // Component ID\n component.id = id;\n return component;\n}\n\nexport default parseComponent;\n","import Component from './component-class';\nimport parseComponent from './parse-component';\nimport customComponents from './custom-components';\nimport componentMixins from './component-mixins';\n\nfunction registerComponentMixin(name, mixin) {\n componentMixins[name] = mixin;\n}\nfunction registerComponent(tagName, component) {\n customComponents[tagName] = component;\n}\n\nexport { Component };\nexport default {\n name: 'component',\n static: {\n Component,\n registerComponentMixin,\n registerComponent,\n },\n create() {\n const app = this;\n app.component = {\n registerComponentMixin,\n registerComponent,\n parse(componentString) {\n return parseComponent(componentString);\n },\n create(options, context, children) {\n if (typeof options === 'function') {\n // eslint-disable-next-line\n return new options(app, { isClassComponent: true }, context, children);\n }\n return new Component(app, options, context, children);\n },\n };\n },\n};\n","import History from '../../utils/history';\n\nexport default {\n name: 'history',\n static: {\n history: History,\n },\n on: {\n init() {\n History.init(this);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst SW = {\n registrations: [],\n register(path, scope) {\n const app = this;\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n return new Promise((resolve, reject) => {\n app.serviceWorker.container.register(path, (scope ? { scope } : {}))\n .then((reg) => {\n SW.registrations.push(reg);\n app.emit('serviceWorkerRegisterSuccess', reg);\n resolve(reg);\n }).catch((error) => {\n app.emit('serviceWorkerRegisterError', error);\n reject(error);\n });\n });\n },\n unregister(registration) {\n const app = this;\n if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {\n return new Promise((resolve, reject) => {\n reject(new Error('Service worker is not supported'));\n });\n }\n let registrations;\n if (!registration) registrations = SW.registrations;\n else if (Array.isArray(registration)) registrations = registration;\n else registrations = [registration];\n return Promise.all(registrations.map(reg => new Promise((resolve, reject) => {\n reg.unregister()\n .then(() => {\n if (SW.registrations.indexOf(reg) >= 0) {\n SW.registrations.splice(SW.registrations.indexOf(reg), 1);\n }\n app.emit('serviceWorkerUnregisterSuccess', reg);\n resolve();\n })\n .catch((error) => {\n app.emit('serviceWorkerUnregisterError', reg, error);\n reject(error);\n });\n })));\n },\n};\n\nexport default {\n name: 'sw',\n params: {\n serviceWorker: {\n path: undefined,\n scope: undefined,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n serviceWorker: {\n container: ('serviceWorker' in window.navigator) ? window.navigator.serviceWorker : undefined,\n registrations: SW.registrations,\n register: SW.register.bind(app),\n unregister: SW.unregister.bind(app),\n },\n });\n },\n on: {\n init() {\n if (!('serviceWorker' in window.navigator)) return;\n const app = this;\n if (!app.serviceWorker.container) return;\n const paths = app.params.serviceWorker.path;\n const scope = app.params.serviceWorker.scope;\n if (!paths || (Array.isArray(paths) && !paths.length)) return;\n const toRegister = Array.isArray(paths) ? paths : [paths];\n toRegister.forEach((path) => {\n app.serviceWorker.register(path, scope);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\n\nconst Statusbar = {\n hide() {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.hide();\n }\n },\n show() {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.show();\n }\n },\n onClick() {\n const app = this;\n let pageContent;\n if ($('.popup.modal-in').length > 0) {\n // Check for opened popup\n pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.panel.panel-in').length > 0) {\n // Check for opened panel\n pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views > .view.tab-active').length > 0) {\n // View in tab bar app layout\n pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else if ($('.views').length > 0) {\n pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n } else {\n pageContent = app.root.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');\n }\n\n if (pageContent && pageContent.length > 0) {\n // Check for tab\n if (pageContent.hasClass('tab')) {\n pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');\n }\n if (pageContent.length > 0) pageContent.scrollTop(0, 300);\n }\n },\n setTextColor(color) {\n if (Device.cordova && window.StatusBar) {\n if (color === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n },\n setBackgroundColor(color) {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.backgroundColorByHexString(color);\n }\n },\n isVisible() {\n if (Device.cordova && window.StatusBar) {\n return window.StatusBar.isVisible;\n }\n return false;\n },\n overlaysWebView(overlays = true) {\n if (Device.cordova && window.StatusBar) {\n window.StatusBar.overlaysWebView(overlays);\n }\n },\n init() {\n const app = this;\n const params = app.params.statusbar;\n if (!params.enabled) return;\n\n if (Device.cordova && window.StatusBar) {\n if (params.scrollTopOnClick) {\n $(window).on('statusTap', Statusbar.onClick.bind(app));\n }\n if (Device.ios) {\n if (params.iosOverlaysWebView) {\n window.StatusBar.overlaysWebView(true);\n } else {\n window.StatusBar.overlaysWebView(false);\n }\n if (params.iosTextColor === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n if (Device.android) {\n if (params.androidOverlaysWebView) {\n window.StatusBar.overlaysWebView(true);\n } else {\n window.StatusBar.overlaysWebView(false);\n }\n if (params.androidTextColor === 'white') {\n window.StatusBar.styleLightContent();\n } else {\n window.StatusBar.styleDefault();\n }\n }\n }\n if (params.iosBackgroundColor && Device.ios) {\n Statusbar.setBackgroundColor(params.iosBackgroundColor);\n }\n if (params.androidBackgroundColor && Device.android) {\n Statusbar.setBackgroundColor(params.androidBackgroundColor);\n }\n },\n};\n\nexport default {\n name: 'statusbar',\n params: {\n statusbar: {\n enabled: true,\n\n scrollTopOnClick: true,\n\n iosOverlaysWebView: true,\n iosTextColor: 'black',\n iosBackgroundColor: null,\n\n androidOverlaysWebView: false,\n androidTextColor: 'black',\n androidBackgroundColor: null,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n statusbar: {\n hide: Statusbar.hide,\n show: Statusbar.show,\n overlaysWebView: Statusbar.overlaysWebView,\n setTextColor: Statusbar.setTextColor,\n setBackgroundColor: Statusbar.setBackgroundColor,\n isVisible: Statusbar.isVisible,\n init: Statusbar.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n Statusbar.init.call(app);\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport View from './view-class';\n\nfunction getCurrentView(app) {\n const $popoverView = $('.popover.modal-in .view');\n const $popupView = $('.popup.modal-in .view');\n const $panelView = $('.panel.panel-in .view');\n let $viewsEl = $('.views');\n if ($viewsEl.length === 0) $viewsEl = app.root;\n // Find active view as tab\n let $viewEl = $viewsEl.children('.view');\n // Propably in tabs or split view\n if ($viewEl.length > 1) {\n if ($viewEl.hasClass('tab')) {\n // Tabs\n $viewEl = $viewsEl.children('.view.tab-active');\n } else {\n // Split View, leave appView intact\n }\n }\n if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;\n if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;\n if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;\n if ($viewEl.length > 0) {\n if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;\n if ($viewEl.length > 1) {\n return app.views.main;\n }\n }\n return undefined;\n}\n\nexport default {\n name: 'view',\n params: {\n view: {\n name: undefined,\n main: false,\n router: true,\n linksView: null,\n stackPages: false,\n xhrCache: true,\n xhrCacheIgnore: [],\n xhrCacheIgnoreGetParameters: false,\n xhrCacheDuration: 1000 * 60 * 10, // Ten minutes\n componentCache: true,\n preloadPreviousPage: true,\n allowDuplicateUrls: false,\n reloadPages: false,\n reloadDetail: false,\n masterDetailBreakpoint: 0,\n masterDetailResizable: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n restoreScrollTopOnBack: true,\n unloadTabContent: true,\n passRouteQueryToRequest: true,\n passRouteParamsToRequest: false,\n loadInitialPage: true,\n // Swipe Back\n iosSwipeBack: true,\n iosSwipeBackAnimateShadow: true,\n iosSwipeBackAnimateOpacity: true,\n iosSwipeBackActiveArea: 30,\n iosSwipeBackThreshold: 0,\n mdSwipeBack: false,\n mdSwipeBackAnimateShadow: true,\n mdSwipeBackAnimateOpacity: false,\n mdSwipeBackActiveArea: 30,\n mdSwipeBackThreshold: 0,\n auroraSwipeBack: false,\n auroraSwipeBackAnimateShadow: false,\n auroraSwipeBackAnimateOpacity: true,\n auroraSwipeBackActiveArea: 30,\n auroraSwipeBackThreshold: 0,\n // Push State\n pushState: false,\n pushStateRoot: undefined,\n pushStateAnimate: true,\n pushStateAnimateOnLoad: false,\n pushStateSeparator: '#!',\n pushStateOnLoad: true,\n // Animate Pages\n animate: true,\n // iOS Dynamic Navbar\n iosDynamicNavbar: true,\n // Animate iOS Navbar Back Icon\n iosAnimateNavbarBackIcon: true,\n // Delays\n iosPageLoadDelay: 0,\n mdPageLoadDelay: 0,\n auroraPageLoadDelay: 0,\n // Routes hooks\n routesBeforeEnter: null,\n routesBeforeLeave: null,\n },\n },\n static: {\n View,\n },\n create() {\n const app = this;\n Utils.extend(app, {\n views: Utils.extend([], {\n create(el, params) {\n return new View(app, el, params);\n },\n get(viewEl) {\n const $viewEl = $(viewEl);\n if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;\n return undefined;\n },\n }),\n });\n Object.defineProperty(app.views, 'current', {\n enumerable: true,\n configurable: true,\n get() {\n return getCurrentView(app);\n },\n });\n // Alias\n app.view = app.views;\n },\n on: {\n init() {\n const app = this;\n $('.view-init').each((index, viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalOpen(modal) {\n const app = this;\n modal.$el.find('.view-init').each((index, viewEl) => {\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n });\n },\n modalBeforeDestroy(modal) {\n if (!modal || !modal.$el) return;\n modal.$el.find('.view-init').each((index, viewEl) => {\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n });\n },\n },\n vnode: {\n 'view-init': {\n insert(vnode) {\n const app = this;\n const viewEl = vnode.elm;\n if (viewEl.f7View) return;\n const viewParams = $(viewEl).dataset();\n app.views.create(viewEl, viewParams);\n },\n destroy(vnode) {\n const viewEl = vnode.elm;\n const view = viewEl.f7View;\n if (!view) return;\n view.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Navbar = {\n size(el) {\n const app = this;\n\n let $el = $(el);\n\n if ($el.hasClass('navbars')) {\n $el = $el.children('.navbar').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n return;\n }\n\n const $innerEl = $el.children('.navbar-inner');\n if (!$innerEl.length) return;\n\n const needCenterTitle = (\n $innerEl.hasClass('navbar-inner-centered-title')\n || app.params.navbar[`${app.theme}CenterTitle`]\n );\n const needLeftTitle = app.theme === 'ios' && !app.params.navbar[`${app.theme}CenterTitle`];\n\n if (!needCenterTitle && !needLeftTitle) return;\n\n if (\n $el.hasClass('stacked')\n || $el.parents('.stacked').length > 0\n || $el.parents('.tab:not(.tab-active)').length > 0\n || $el.parents('.popup:not(.modal-in)').length > 0\n ) {\n return;\n }\n\n if (app.theme !== 'ios' && app.params.navbar[`${app.theme}CenterTitle`]) {\n $innerEl.addClass('navbar-inner-centered-title');\n }\n if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {\n $innerEl.addClass('navbar-inner-left-title');\n }\n\n const $viewEl = $el.parents('.view').eq(0);\n const left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');\n const right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');\n const title = $innerEl.children('.title');\n const subnavbar = $innerEl.children('.subnavbar');\n const noLeft = left.length === 0;\n const noRight = right.length === 0;\n const leftWidth = noLeft ? 0 : left.outerWidth(true);\n const rightWidth = noRight ? 0 : right.outerWidth(true);\n const titleWidth = title.outerWidth(true);\n const navbarStyles = $innerEl.styles();\n const navbarWidth = $innerEl[0].offsetWidth;\n const navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);\n const isPrevious = $el.hasClass('navbar-previous');\n const sliding = $innerEl.hasClass('sliding');\n\n let router;\n let dynamicNavbar;\n\n if ($viewEl.length > 0 && $viewEl[0].f7View) {\n router = $viewEl[0].f7View.router;\n dynamicNavbar = router && router.dynamicNavbar;\n }\n\n let currLeft;\n let diff;\n if (noRight) {\n currLeft = navbarInnerWidth - titleWidth;\n }\n if (noLeft) {\n currLeft = 0;\n }\n if (!noLeft && !noRight) {\n currLeft = ((navbarInnerWidth - rightWidth - titleWidth) + leftWidth) / 2;\n }\n let requiredLeft = (navbarInnerWidth - titleWidth) / 2;\n if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {\n if (requiredLeft < leftWidth) {\n requiredLeft = leftWidth;\n }\n if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {\n requiredLeft = navbarInnerWidth - rightWidth - titleWidth;\n }\n diff = requiredLeft - currLeft;\n } else {\n diff = 0;\n }\n\n // RTL inverter\n const inverter = app.rtl ? -1 : 1;\n\n if (dynamicNavbar && app.theme === 'ios') {\n if (title.hasClass('sliding') || (title.length > 0 && sliding)) {\n let titleLeftOffset = -(currLeft + diff) * inverter;\n const titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;\n\n if (isPrevious) {\n if (router && router.params.iosAnimateNavbarBackIcon) {\n const activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');\n if (activeNavbarBackLink.length > 0) {\n titleLeftOffset += activeNavbarBackLink[0].offsetLeft;\n }\n }\n }\n title[0].f7NavbarLeftOffset = titleLeftOffset;\n title[0].f7NavbarRightOffset = titleRightOffset;\n }\n if (!noLeft && (left.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n left[0].f7NavbarLeftOffset = (-(navbarInnerWidth - left[0].offsetWidth) / 2) * inverter;\n left[0].f7NavbarRightOffset = leftWidth * inverter;\n } else {\n left[0].f7NavbarLeftOffset = -leftWidth;\n left[0].f7NavbarRightOffset = ((navbarInnerWidth - left[0].offsetWidth) / 2);\n if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {\n if (left.find('.back .icon ~ span').length) {\n const leftOffset = left[0].f7NavbarLeftOffset;\n const rightOffset = left[0].f7NavbarRightOffset;\n left[0].f7NavbarLeftOffset = 0;\n left[0].f7NavbarRightOffset = 0;\n left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;\n left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;\n }\n }\n }\n }\n if (!noRight && (right.hasClass('sliding') || sliding)) {\n if (app.rtl) {\n right[0].f7NavbarLeftOffset = -rightWidth * inverter;\n right[0].f7NavbarRightOffset = ((navbarInnerWidth - right[0].offsetWidth) / 2) * inverter;\n } else {\n right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;\n right[0].f7NavbarRightOffset = rightWidth;\n }\n }\n if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {\n subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;\n subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;\n }\n }\n\n // Center title\n if (needCenterTitle) {\n let titleLeft = diff;\n if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;\n title.css({ left: `${titleLeft}px` });\n }\n },\n hide(el, animate = true, hideStatusbar = false) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if ($el.hasClass('navbar-hidden')) return;\n let className = `navbar-hidden${animate ? ' navbar-transitioning' : ''}`;\n const currentIsLarge = isDynamic\n ? $el.find('.navbar-current .title-large').length\n : $el.find('.title-large').length;\n if (currentIsLarge) {\n className += ' navbar-large-hidden';\n }\n if (hideStatusbar) {\n className += ' navbar-hidden-statusbar';\n }\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n $el.addClass(className);\n if (isDynamic) {\n $el.children('.navbar').each((index, subEl) => {\n $(subEl).trigger('navbar:hide');\n app.emit('navbarHide', subEl);\n });\n } else {\n $el.trigger('navbar:hide');\n app.emit('navbarHide', $el[0]);\n }\n },\n show(el = '.navbar-hidden', animate = true) {\n const app = this;\n let $el = $(el);\n const isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length;\n if (isDynamic) $el = $el.parents('.navbars');\n if (!$el.length) return;\n if (!$el.hasClass('navbar-hidden')) return;\n if (animate) {\n $el.addClass('navbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('navbar-transitioning');\n });\n }\n $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');\n if (isDynamic) {\n $el.children('.navbar').each((index, subEl) => {\n $(subEl).trigger('navbar:show');\n app.emit('navbarShow', subEl);\n });\n } else {\n $el.trigger('navbar:show');\n app.emit('navbarShow', $el[0]);\n }\n },\n getElByPage(page) {\n let $pageEl;\n let $navbarEl;\n let pageData;\n if (page.$navbarEl || page.$el) {\n pageData = page;\n $pageEl = page.$el;\n } else {\n $pageEl = $(page);\n if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;\n }\n if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {\n $navbarEl = pageData.$navbarEl;\n } else if ($pageEl) {\n $navbarEl = $pageEl.children('.navbar');\n }\n if (!$navbarEl || ($navbarEl && $navbarEl.length === 0)) return undefined;\n return $navbarEl[0];\n },\n getPageByEl(navbarEl) {\n const $navbarEl = $(navbarEl);\n if ($navbarEl.parents('.page').length) {\n return $navbarEl.parents('.page')[0];\n }\n let pageEl;\n $navbarEl.parents('.view').find('.page').each((index, el) => {\n if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {\n pageEl = el;\n }\n });\n return pageEl;\n },\n\n collapseLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.addClass('navbar-large-collapsed');\n $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');\n app.emit('pageNavbarLargeCollapsed', $pageEl[0]);\n $navbarEl.trigger('navbar:collapse');\n app.emit('navbarCollapse', $navbarEl[0]);\n },\n expandLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n const $pageEl = $(app.navbar.getPageByEl($navbarEl));\n $navbarEl.removeClass('navbar-large-collapsed');\n $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');\n app.emit('pageNavbarLargeExpanded', $pageEl[0]);\n $navbarEl.trigger('navbar:expand');\n app.emit('navbarExpand', $navbarEl[0]);\n },\n toggleLargeTitle(navbarEl) {\n const app = this;\n let $navbarEl = $(navbarEl);\n if ($navbarEl.hasClass('navbars')) {\n $navbarEl = $navbarEl.find('.navbar-large');\n if ($navbarEl.length > 1) {\n $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');\n }\n if ($navbarEl.length > 1 || !$navbarEl.length) {\n return;\n }\n }\n if ($navbarEl.hasClass('navbar-large-collapsed')) {\n app.navbar.expandLargeTitle($navbarEl);\n } else {\n app.navbar.collapseLargeTitle($navbarEl);\n }\n },\n initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {\n const app = this;\n const $pageEl = $(pageEl);\n const $navbarEl = $(navbarEl);\n const $titleLargeEl = $navbarEl.find('.title-large');\n const isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');\n let navbarHideHeight = 44;\n const snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;\n const snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let navbarHidden;\n\n let navbarCollapsed;\n let navbarTitleLargeHeight;\n\n let navbarOffsetHeight;\n\n if (needCollapse || (needHide && isLarge)) {\n navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');\n\n if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {\n navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);\n if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else if (Number.isNaN(navbarTitleLargeHeight)) {\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n } else if ($titleLargeEl.length) {\n navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;\n } else { // eslint-disable-next-line\n if (app.theme === 'ios') navbarTitleLargeHeight = 52;\n else if (app.theme === 'md') navbarTitleLargeHeight = 48;\n else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;\n }\n }\n\n if (needHide && isLarge) {\n navbarHideHeight += navbarTitleLargeHeight;\n }\n\n let scrollChanged;\n let scrollContent;\n let scrollTimeoutId;\n let touchEndTimeoutId;\n const touchSnapTimeout = 70;\n const desktopSnapTimeout = 300;\n\n function snapLargeNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);\n } else if (currentScrollTop < navbarTitleLargeHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function snapTransparentNavbar() {\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n if (!scrollContent || currentScrollTop < 0) return;\n if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(navbarOffsetHeight, 100);\n } else if (currentScrollTop < navbarOffsetHeight) {\n $(scrollContent).scrollTop(0, 200);\n }\n }\n\n function handleNavbarTransparent() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded || isHidden) return;\n if (!navbarOffsetHeight) {\n navbarOffsetHeight = navbarEl.offsetHeight;\n }\n let opacity = currentScrollTop / navbarOffsetHeight;\n const notTransparent = $navbarEl.hasClass('navbar-transparent-visible');\n opacity = Math.max(Math.min(opacity, 1), 0);\n\n if ((notTransparent && opacity === 1) || (!notTransparent && opacity === 0)) {\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (notTransparent && opacity === 0) {\n $navbarEl.trigger('navbar:transparenthide');\n app.emit('navbarTransparentHide', $navbarEl[0]);\n $navbarEl.removeClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n if (!notTransparent && opacity === 1) {\n $navbarEl.trigger('navbar:transparentshow');\n app.emit('navbarTransparentShow', $navbarEl[0]);\n $navbarEl.addClass('navbar-transparent-visible');\n $navbarEl.find('.navbar-bg, .title').css('opacity', '');\n return;\n }\n\n $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);\n\n if (snapPageScrollToTransparentNavbar) {\n if (!Support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapTransparentNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n let previousCollapseProgress = null;\n let collapseProgress = null;\n function handleLargeNavbarCollapse() {\n const isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (isHidden) return;\n const isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent')\n || (\n $navbarEl.hasClass('navbar-large')\n && $navbarEl.hasClass('navbar-transparent')\n );\n previousCollapseProgress = collapseProgress;\n collapseProgress = Math.min(Math.max((currentScrollTop / navbarTitleLargeHeight), 0), 1);\n const previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;\n const inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');\n if (inSearchbarExpanded) return;\n navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');\n if (collapseProgress === 0 && navbarCollapsed) {\n app.navbar.expandLargeTitle($navbarEl[0]);\n } else if (collapseProgress === 1 && !navbarCollapsed) {\n app.navbar.collapseLargeTitle($navbarEl[0]);\n }\n if (\n (collapseProgress === 0 && navbarCollapsed)\n || (collapseProgress === 0 && previousCollapseWasInMiddle)\n || (collapseProgress === 1 && !navbarCollapsed)\n || (collapseProgress === 1 && previousCollapseWasInMiddle)\n ) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', '');\n }\n $navbarEl.find('.title').css('opacity', '');\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', '');\n } else {\n $navbarEl.find('.navbar-bg').css('transform', '');\n }\n } else if (collapseProgress > 0 && collapseProgress < 1) {\n if (app.theme === 'md') {\n $navbarEl.find('.navbar-inner').css('overflow', 'visible');\n }\n $navbarEl.find('.title').css('opacity', collapseProgress);\n $navbarEl.find('.title-large-text, .subnavbar').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n if (isLargeTransparent) {\n $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);\n } else {\n $navbarEl.find('.navbar-bg').css('transform', `translate3d(0px, ${-1 * collapseProgress * navbarTitleLargeHeight}px, 0)`);\n }\n }\n\n if (snapPageScrollToLargeTitle) {\n if (!Support.touch) {\n clearTimeout(scrollTimeoutId);\n scrollTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n }, desktopSnapTimeout);\n } else if (touchEndTimeoutId) {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n snapLargeNavbar();\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }, touchSnapTimeout);\n }\n }\n }\n\n function handleTitleHideShow() {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');\n if (reachEnd) {\n if (app.params.navbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > navbarHideHeight) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && navbarHidden) {\n app.navbar.show($navbarEl);\n navbarHidden = false;\n } else if (action === 'hide' && !navbarHidden) {\n app.navbar.hide($navbarEl);\n navbarHidden = true;\n }\n previousScrollTop = currentScrollTop;\n }\n\n function handleScroll(e) {\n scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollChanged = currentScrollTop;\n if (needCollapse) {\n handleLargeNavbarCollapse();\n } else if (needTransparent) {\n handleNavbarTransparent();\n }\n if ($pageEl.hasClass('page-previous')) return;\n if (needHide) {\n handleTitleHideShow();\n }\n }\n function handeTouchStart() {\n scrollChanged = false;\n }\n function handleTouchEnd() {\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n touchEndTimeoutId = setTimeout(() => {\n if (scrollChanged !== false) {\n if (needTransparent && !needCollapse) {\n snapTransparentNavbar();\n } else {\n snapLargeNavbar();\n }\n clearTimeout(touchEndTimeoutId);\n touchEndTimeoutId = null;\n }\n }, touchSnapTimeout);\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n if (Support.touch && ((needCollapse && snapPageScrollToLargeTitle) || (needTransparent && snapPageScrollToTransparentNavbar))) {\n app.on('touchstart:passive', handeTouchStart);\n app.on('touchend:passive', handleTouchEnd);\n }\n if (needCollapse) {\n $pageEl.find('.page-content').each((pageContentIndex, pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n } else if (needTransparent) {\n $pageEl.find('.page-content').each((pageContentIndex, pageContentEl) => {\n if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);\n });\n }\n $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {\n delete $pageEl[0].f7DetachNavbarScrollHandlers;\n $pageEl.off('scroll', '.page-content', handleScroll, true);\n if (Support.touch && ((needCollapse && snapPageScrollToLargeTitle) || (needTransparent && snapPageScrollToTransparentNavbar))) {\n app.off('touchstart:passive', handeTouchStart);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n },\n};\nexport default {\n name: 'navbar',\n create() {\n const app = this;\n Utils.extend(app, {\n navbar: {\n size: Navbar.size.bind(app),\n hide: Navbar.hide.bind(app),\n show: Navbar.show.bind(app),\n getElByPage: Navbar.getElByPage.bind(app),\n getPageByEl: Navbar.getPageByEl.bind(app),\n collapseLargeTitle: Navbar.collapseLargeTitle.bind(app),\n expandLargeTitle: Navbar.expandLargeTitle.bind(app),\n toggleLargeTitle: Navbar.toggleLargeTitle.bind(app),\n initNavbarOnScroll: Navbar.initNavbarOnScroll.bind(app),\n },\n });\n },\n params: {\n navbar: {\n scrollTopOnTitleClick: true,\n iosCenterTitle: true,\n mdCenterTitle: false,\n auroraCenterTitle: true,\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n collapseLargeTitleOnScroll: true,\n snapPageScrollToLargeTitle: true,\n snapPageScrollToTransparentNavbar: true,\n },\n },\n on: {\n 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {\n const app = this;\n $('.navbar').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n pageBeforeRemove(page) {\n if (page.$el[0].f7DetachNavbarScrollHandlers) {\n page.$el[0].f7DetachNavbarScrollHandlers();\n }\n },\n pageBeforeIn(page) {\n const app = this;\n if (app.theme !== 'ios') return;\n let $navbarsEl;\n const view = page.$el.parents('.view')[0].f7View;\n const navbarEl = app.navbar.getElByPage(page);\n if (!navbarEl) {\n $navbarsEl = page.$el.parents('.view').children('.navbars');\n } else {\n $navbarsEl = $(navbarEl).parents('.navbars');\n }\n if (page.$el.hasClass('no-navbar') || (view.router.dynamicNavbar && !navbarEl)) {\n const animate = !!(page.pageFrom && page.router.history.length > 0);\n app.navbar.hide($navbarsEl, animate);\n } else {\n app.navbar.show($navbarsEl);\n }\n },\n pageReinit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n app.navbar.size($navbarEl);\n },\n pageInit(page) {\n const app = this;\n const $navbarEl = $(app.navbar.getElByPage(page));\n if (!$navbarEl || $navbarEl.length === 0) return;\n\n // Size\n app.navbar.size($navbarEl);\n\n // Need Collapse On Scroll\n let needCollapseOnScrollHandler;\n if ($navbarEl.find('.title-large').length > 0) {\n $navbarEl.addClass('navbar-large');\n }\n if ($navbarEl.hasClass('navbar-large')) {\n if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;\n page.$el.addClass('page-with-navbar-large');\n }\n\n // Need transparent on scroll\n let needTransparentOnScroll;\n if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {\n needTransparentOnScroll = true;\n }\n\n // Need Hide On Scroll\n let needHideOnScrollHandler;\n if (\n app.params.navbar.hideOnPageScroll\n || page.$el.find('.hide-navbar-on-scroll').length\n || page.$el.hasClass('hide-navbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-navbar-on-scroll').length\n || page.$el.hasClass('keep-navbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n needHideOnScrollHandler = false;\n } else {\n needHideOnScrollHandler = true;\n }\n }\n\n if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {\n app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);\n }\n },\n 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {\n const app = this;\n instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each((index, navbarEl) => {\n app.navbar.size(navbarEl);\n });\n },\n },\n clicks: {\n '.navbar .title': function onTitleClick($clickedEl) {\n const app = this;\n if (!app.params.navbar.scrollTopOnTitleClick) return;\n if ($clickedEl.closest('a').length > 0) {\n return;\n }\n let $pageContentEl;\n\n // Find active page\n const $navbarEl = $clickedEl.parents('.navbar');\n const $navbarsEl = $navbarEl.parents('.navbars');\n\n // Static Layout\n $pageContentEl = $navbarEl.parents('.page-content');\n\n if ($pageContentEl.length === 0) {\n // Fixed Layout\n if ($navbarEl.parents('.page').length > 0) {\n $pageContentEl = $navbarEl.parents('.page').find('.page-content');\n }\n // Through Layout iOS\n if ($pageContentEl.length === 0 && $navbarsEl.length) {\n if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarsEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n // Through Layout\n if ($pageContentEl.length === 0) {\n if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {\n $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');\n }\n }\n }\n if ($pageContentEl && $pageContentEl.length > 0) {\n // Check for tab\n if ($pageContentEl.hasClass('tab')) {\n $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');\n }\n if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);\n }\n },\n },\n vnode: {\n navbar: {\n postpatch(vnode) {\n const app = this;\n app.navbar.size(vnode.elm);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Toolbar = {\n setHighlight(tabbarEl) {\n const app = this;\n if (app.theme !== 'md') return;\n\n const $tabbarEl = $(tabbarEl);\n\n if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) return;\n\n let $highlightEl = $tabbarEl.find('.tab-link-highlight');\n const tabLinksCount = $tabbarEl.find('.tab-link').length;\n if (tabLinksCount === 0) {\n $highlightEl.remove();\n return;\n }\n\n if ($highlightEl.length === 0) {\n $tabbarEl.children('.toolbar-inner').append('<span class=\"tab-link-highlight\"></span>');\n $highlightEl = $tabbarEl.find('.tab-link-highlight');\n } else if ($highlightEl.next().length) {\n $tabbarEl.children('.toolbar-inner').append($highlightEl);\n }\n\n const $activeLink = $tabbarEl.find('.tab-link-active');\n let highlightWidth;\n let highlightTranslate;\n\n if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {\n highlightWidth = `${$activeLink[0].offsetWidth}px`;\n highlightTranslate = `${$activeLink[0].offsetLeft}px`;\n } else {\n const activeIndex = $activeLink.index();\n highlightWidth = `${100 / tabLinksCount}%`;\n highlightTranslate = `${(app.rtl ? -activeIndex : activeIndex) * 100}%`;\n }\n\n Utils.nextFrame(() => {\n $highlightEl\n .css('width', highlightWidth)\n .transform(`translate3d(${highlightTranslate},0,0)`);\n });\n },\n init(tabbarEl) {\n const app = this;\n app.toolbar.setHighlight(tabbarEl);\n },\n hide(el, animate = true) {\n const app = this;\n const $el = $(el);\n if ($el.hasClass('toolbar-hidden')) return;\n const className = `toolbar-hidden${animate ? ' toolbar-transitioning' : ''}`;\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n $el.addClass(className);\n $el.trigger('toolbar:hide');\n app.emit('toolbarHide', $el[0]);\n },\n show(el, animate = true) {\n const app = this;\n const $el = $(el);\n if (!$el.hasClass('toolbar-hidden')) return;\n if (animate) {\n $el.addClass('toolbar-transitioning');\n $el.transitionEnd(() => {\n $el.removeClass('toolbar-transitioning');\n });\n }\n $el.removeClass('toolbar-hidden');\n $el.trigger('toolbar:show');\n app.emit('toolbarShow', $el[0]);\n },\n initToolbarOnScroll(pageEl) {\n const app = this;\n const $pageEl = $(pageEl);\n let $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n\n let previousScrollTop;\n let currentScrollTop;\n\n let scrollHeight;\n let offsetHeight;\n let reachEnd;\n let action;\n let toolbarHidden;\n function handleScroll(e) {\n if ($pageEl.hasClass('page-with-card-opened')) return;\n if ($pageEl.hasClass('page-previous')) return;\n const scrollContent = this;\n if (e && e.target && e.target !== scrollContent) {\n return;\n }\n currentScrollTop = scrollContent.scrollTop;\n scrollHeight = scrollContent.scrollHeight;\n offsetHeight = scrollContent.offsetHeight;\n reachEnd = currentScrollTop + offsetHeight >= scrollHeight;\n toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');\n\n if (reachEnd) {\n if (app.params.toolbar.showOnPageScrollEnd) {\n action = 'show';\n }\n } else if (previousScrollTop > currentScrollTop) {\n if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {\n action = 'show';\n } else {\n action = 'hide';\n }\n } else if (currentScrollTop > 44) {\n action = 'hide';\n } else {\n action = 'show';\n }\n\n if (action === 'show' && toolbarHidden) {\n app.toolbar.show($toolbarEl);\n toolbarHidden = false;\n } else if (action === 'hide' && !toolbarHidden) {\n app.toolbar.hide($toolbarEl);\n toolbarHidden = true;\n }\n\n previousScrollTop = currentScrollTop;\n }\n $pageEl.on('scroll', '.page-content', handleScroll, true);\n $pageEl[0].f7ScrollToolbarHandler = handleScroll;\n },\n};\nexport default {\n name: 'toolbar',\n create() {\n const app = this;\n Utils.extend(app, {\n toolbar: {\n hide: Toolbar.hide.bind(app),\n show: Toolbar.show.bind(app),\n setHighlight: Toolbar.setHighlight.bind(app),\n initToolbarOnScroll: Toolbar.initToolbarOnScroll.bind(app),\n init: Toolbar.init.bind(app),\n },\n });\n },\n params: {\n toolbar: {\n hideOnPageScroll: false,\n showOnPageScrollEnd: true,\n showOnPageScrollTop: true,\n },\n },\n on: {\n pageBeforeRemove(page) {\n if (page.$el[0].f7ScrollToolbarHandler) {\n page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);\n }\n },\n pageBeforeIn(page) {\n const app = this;\n let $toolbarEl = page.$el.parents('.view').children('.toolbar');\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');\n }\n if ($toolbarEl.length === 0) {\n $toolbarEl = page.$el.find('.toolbar');\n }\n if ($toolbarEl.length === 0) {\n return;\n }\n if (page.$el.hasClass('no-toolbar')) {\n app.toolbar.hide($toolbarEl);\n } else {\n app.toolbar.show($toolbarEl);\n }\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tabbar, .tabbar-labels').each((index, tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n if (\n app.params.toolbar.hideOnPageScroll\n || page.$el.find('.hide-toolbar-on-scroll').length\n || page.$el.hasClass('hide-toolbar-on-scroll')\n || page.$el.find('.hide-bars-on-scroll').length\n || page.$el.hasClass('hide-bars-on-scroll')\n ) {\n if (\n page.$el.find('.keep-toolbar-on-scroll').length\n || page.$el.hasClass('keep-toolbar-on-scroll')\n || page.$el.find('.keep-bars-on-scroll').length\n || page.$el.hasClass('keep-bars-on-scroll')\n ) {\n return;\n }\n app.toolbar.initToolbarOnScroll(page.el);\n }\n },\n init() {\n const app = this;\n app.root.find('.tabbar, .tabbar-labels').each((index, tabbarEl) => {\n app.toolbar.init(tabbarEl);\n });\n },\n },\n vnode: {\n tabbar: {\n insert(vnode) {\n const app = this;\n app.toolbar.init(vnode.elm);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nexport default class TouchRipple {\n constructor($el, x, y) {\n const ripple = this;\n if (!$el) return undefined;\n const box = $el[0].getBoundingClientRect();\n const center = {\n x: x - box.left,\n y: y - box.top,\n };\n const width = box.width;\n const height = box.height;\n const diameter = Math.max((((height ** 2) + (width ** 2)) ** 0.5), 48);\n\n ripple.$rippleWaveEl = $(`<div class=\"ripple-wave\" style=\"width: ${diameter}px; height: ${diameter}px; margin-top:-${diameter / 2}px; margin-left:-${diameter / 2}px; left:${center.x}px; top:${center.y}px;\"></div>`);\n\n $el.prepend(ripple.$rippleWaveEl);\n\n ripple.rippleTransform = `translate3d(${-center.x + (width / 2)}px, ${-center.y + (height / 2)}px, 0) scale(1)`;\n\n Utils.nextFrame(() => {\n if (!ripple || !ripple.$rippleWaveEl) return;\n ripple.$rippleWaveEl.transform(ripple.rippleTransform);\n });\n\n return ripple;\n }\n\n destroy() {\n let ripple = this;\n if (ripple.$rippleWaveEl) {\n ripple.$rippleWaveEl.remove();\n }\n Object.keys(ripple).forEach((key) => {\n ripple[key] = null;\n delete ripple[key];\n });\n ripple = null;\n }\n\n remove() {\n const ripple = this;\n if (ripple.removing) return;\n const $rippleWaveEl = this.$rippleWaveEl;\n const rippleTransform = this.rippleTransform;\n let removeTimeout = Utils.nextTick(() => {\n ripple.destroy();\n }, 400);\n ripple.removing = true;\n $rippleWaveEl\n .addClass('ripple-wave-fill')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'))\n .transitionEnd(() => {\n clearTimeout(removeTimeout);\n Utils.nextFrame(() => {\n $rippleWaveEl\n .addClass('ripple-wave-out')\n .transform(rippleTransform.replace('scale(1)', 'scale(1.01)'));\n\n removeTimeout = Utils.nextTick(() => {\n ripple.destroy();\n }, 700);\n\n $rippleWaveEl.transitionEnd(() => {\n clearTimeout(removeTimeout);\n ripple.destroy();\n });\n });\n });\n }\n}\n","import TouchRipple from './touch-ripple-class';\n\nexport default {\n name: 'touch-ripple',\n static: {\n TouchRipple,\n },\n create() {\n const app = this;\n app.touchRipple = {\n create(...args) {\n return new TouchRipple(...args);\n },\n };\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nconst openedModals = [];\nconst dialogsQueue = [];\nfunction clearDialogsQueue() {\n if (dialogsQueue.length === 0) return;\n const dialog = dialogsQueue.shift();\n dialog.open();\n}\nclass Modal extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const modal = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n modal.useModulesParams(defaults);\n\n modal.params = Utils.extend(defaults, params);\n modal.opened = false;\n\n // Install Modules\n modal.useModules();\n\n return this;\n }\n\n onOpen() {\n const modal = this;\n modal.opened = true;\n openedModals.push(modal);\n $('html').addClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:open ${modal.type.toLowerCase()}:open`);\n modal.emit(`local::open modalOpen ${modal.type}Open`, modal);\n }\n\n onOpened() {\n const modal = this;\n modal.$el.trigger(`modal:opened ${modal.type.toLowerCase()}:opened`);\n modal.emit(`local::opened modalOpened ${modal.type}Opened`, modal);\n }\n\n onClose() {\n const modal = this;\n modal.opened = false;\n if (!modal.type || !modal.$el) return;\n openedModals.splice(openedModals.indexOf(modal), 1);\n $('html').removeClass(`with-modal-${modal.type.toLowerCase()}`);\n modal.$el.trigger(`modal:close ${modal.type.toLowerCase()}:close`);\n modal.emit(`local::close modalClose ${modal.type}Close`, modal);\n }\n\n onClosed() {\n const modal = this;\n if (!modal.type || !modal.$el) return;\n modal.$el.removeClass('modal-out');\n modal.$el.hide();\n modal.$el.trigger(`modal:closed ${modal.type.toLowerCase()}:closed`);\n modal.emit(`local::closed modalClosed ${modal.type}Closed`, modal);\n }\n\n open(animateModal) {\n const modal = this;\n const app = modal.app;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n const type = modal.type;\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || $el.hasClass('modal-in')) {\n return modal;\n }\n\n if (type === 'dialog' && app.params.modal.queueDialogs) {\n let pushToQueue;\n if ($('.dialog.modal-in').length > 0) {\n pushToQueue = true;\n } else if (openedModals.length > 0) {\n openedModals.forEach((openedModal) => {\n if (openedModal.type === 'dialog') pushToQueue = true;\n });\n }\n if (pushToQueue) {\n dialogsQueue.push(modal);\n return modal;\n }\n }\n\n const $modalParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n if (app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {\n app.root.append($el);\n modal.once(`${type}Closed`, () => {\n if (wasInDom) {\n $modalParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n // Show Modal\n $el.show();\n\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n modal._clientLeft = $el[0].clientLeft;\n\n // Modal\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n $backdropEl.addClass('backdrop-in');\n }\n $el\n .animationEnd(() => {\n transitionEnd();\n });\n $el\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('modal-out not-animated')\n .addClass('modal-in');\n modal.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('backdrop-in not-animated');\n }\n $el.removeClass('modal-out').addClass('modal-in not-animated');\n modal.onOpen();\n modal.onOpened();\n }\n\n return modal;\n }\n\n close(animateModal) {\n const modal = this;\n const $el = modal.$el;\n const $backdropEl = modal.$backdropEl;\n\n let animate = true;\n if (typeof animateModal !== 'undefined') animate = animateModal;\n else if (typeof modal.params.animate !== 'undefined') {\n animate = modal.params.animate;\n }\n\n if (!$el || !$el.hasClass('modal-in')) {\n if (dialogsQueue.indexOf(modal) >= 0) {\n dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);\n }\n return modal;\n }\n\n // backdrop\n if ($backdropEl) {\n let needToHideBackdrop = true;\n if (modal.type === 'popup') {\n modal.$el.prevAll('.popup.modal-in').each((index, popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick\n && popupInstance.params.backdrop\n && popupInstance.backdropEl === modal.backdropEl\n ) {\n needToHideBackdrop = false;\n }\n });\n }\n if (needToHideBackdrop) {\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl.removeClass('backdrop-in');\n }\n }\n\n // Modal\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n function transitionEnd() {\n if ($el.hasClass('modal-out')) {\n modal.onClosed();\n } else if ($el.hasClass('modal-in')) {\n modal.onOpened();\n }\n }\n if (animate) {\n $el\n .animationEnd(() => {\n transitionEnd();\n });\n $el\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('modal-in')\n .addClass('modal-out');\n // Emit close\n modal.onClose();\n modal.onClosed();\n }\n\n if (modal.type === 'dialog') {\n clearDialogsQueue();\n }\n\n return modal;\n }\n\n destroy() {\n const modal = this;\n if (modal.destroyed) return;\n modal.emit(`local::beforeDestroy modalBeforeDestroy ${modal.type}BeforeDestroy`, modal);\n if (modal.$el) {\n modal.$el.trigger(`modal:beforedestroy ${modal.type.toLowerCase()}:beforedestroy`);\n if (modal.$el.length && modal.$el[0].f7Modal) {\n delete modal.$el[0].f7Modal;\n }\n }\n Utils.deleteProps(modal);\n modal.destroyed = true;\n }\n}\n\nexport default Modal;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Modal from './modal-class';\n\nclass CustomModal extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n backdrop: true,\n closeByBackdropClick: true,\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const customModal = this;\n\n customModal.params = extendedParams;\n\n // Find Element\n let $el;\n if (!customModal.params.el) {\n $el = $(customModal.params.content);\n } else {\n $el = $(customModal.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return customModal.destroy();\n }\n let $backdropEl;\n if (customModal.params.backdrop) {\n $backdropEl = app.root.children('.custom-modal-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"custom-modal-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n function handleClick(e) {\n if (!customModal || customModal.destroyed) return;\n if ($backdropEl && e.target === $backdropEl[0]) {\n customModal.close();\n }\n }\n\n customModal.on('customModalOpened', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.on('click', handleClick);\n }\n });\n customModal.on('customModalClose', () => {\n if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {\n app.off('click', handleClick);\n }\n });\n\n Utils.extend(customModal, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'customModal',\n });\n\n $el[0].f7Modal = customModal;\n\n return customModal;\n }\n}\nexport default CustomModal;\n","import Modal from './modal-class';\nimport CustomModal from './custom-modal-class';\n\nexport default {\n name: 'modal',\n static: {\n Modal,\n CustomModal,\n },\n create() {\n const app = this;\n app.customModal = {\n create(params) {\n return new CustomModal(app, params);\n },\n };\n },\n params: {\n modal: {\n moveToRoot: true,\n queueDialogs: true,\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Dialog extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n title: app.params.dialog.title,\n text: undefined,\n content: '',\n buttons: [],\n verticalButtons: false,\n onClick: undefined,\n cssClass: undefined,\n destroyOnClose: false,\n on: {},\n }, params);\n if (typeof extendedParams.closeByBackdropClick === 'undefined') {\n extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;\n }\n if (typeof extendedParams.backdrop === 'undefined') {\n extendedParams.backdrop = app.params.dialog.backdrop;\n }\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const dialog = this;\n\n const { title, text, content, buttons, verticalButtons, cssClass, backdrop } = extendedParams;\n\n dialog.params = extendedParams;\n\n // Find Element\n let $el;\n if (!dialog.params.el) {\n const dialogClasses = ['dialog'];\n if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');\n if (buttons.length > 0) dialogClasses.push(`dialog-buttons-${buttons.length}`);\n if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');\n if (cssClass) dialogClasses.push(cssClass);\n\n let buttonsHTML = '';\n if (buttons.length > 0) {\n buttonsHTML = `\n <div class=\"dialog-buttons\">\n ${buttons.map(button => `\n <span class=\"dialog-button${button.bold ? ' dialog-button-bold' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}\">${button.text}</span>\n `).join('')}\n </div>\n `;\n }\n\n const dialogHtml = `\n <div class=\"${dialogClasses.join(' ')}\">\n <div class=\"dialog-inner\">\n ${title ? `<div class=\"dialog-title\">${title}</div>` : ''}\n ${text ? `<div class=\"dialog-text\">${text}</div>` : ''}\n ${content}\n </div>\n ${buttonsHTML}\n </div>\n `;\n $el = $(dialogHtml);\n } else {\n $el = $(dialog.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return dialog.destroy();\n }\n\n let $backdropEl;\n if (backdrop) {\n $backdropEl = app.root.children('.dialog-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"dialog-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n // Assign events\n function buttonOnClick(e) {\n const buttonEl = this;\n const index = $(buttonEl).index();\n const button = buttons[index];\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n let addKeyboardHander;\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n buttons.forEach((button, index) => {\n if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {\n if (document.activeElement) document.activeElement.blur();\n if (button.onClick) button.onClick(dialog, e);\n if (dialog.params.onClick) dialog.params.onClick(dialog, index);\n if (button.close !== false) dialog.close();\n }\n });\n }\n if (buttons && buttons.length > 0) {\n dialog.on('open', () => {\n $el.find('.dialog-button').each((index, buttonEl) => {\n const button = buttons[index];\n if (button.keyCodes) addKeyboardHander = true;\n $(buttonEl).on('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $(document).on('keydown', onKeyDown);\n }\n });\n dialog.on('close', () => {\n $el.find('.dialog-button').each((index, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n if (\n addKeyboardHander\n && !app.device.ios\n && !app.device.android\n && !app.device.cordova\n ) {\n $(document).off('keydown', onKeyDown);\n }\n addKeyboardHander = false;\n });\n }\n Utils.extend(dialog, {\n app,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'dialog',\n setProgress(progress, duration) {\n app.progressbar.set($el.find('.progressbar'), progress, duration);\n return dialog;\n },\n setText(newText) {\n let $textEl = $el.find('.dialog-text');\n if ($textEl.length === 0) {\n $textEl = $('<div class=\"dialog-text\"></div>');\n if (typeof title !== 'undefined') {\n $textEl.insertAfter($el.find('.dialog-title'));\n } else {\n $el.find('.dialog-inner').prepend($textEl);\n }\n }\n $textEl.html(newText);\n dialog.params.text = newText;\n return dialog;\n },\n setTitle(newTitle) {\n let $titleEl = $el.find('.dialog-title');\n if ($titleEl.length === 0) {\n $titleEl = $('<div class=\"dialog-title\"></div>');\n $el.find('.dialog-inner').prepend($titleEl);\n }\n $titleEl.html(newTitle);\n dialog.params.title = newTitle;\n return dialog;\n },\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n if ($target.closest(dialog.el).length === 0) {\n if (\n dialog.params.closeByBackdropClick\n && dialog.backdropEl\n && dialog.backdropEl === target\n ) {\n dialog.close();\n }\n }\n }\n\n dialog.on('opened', () => {\n if (dialog.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n dialog.on('close', () => {\n if (dialog.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = dialog;\n\n if (dialog.params.destroyOnClose) {\n dialog.once('closed', () => {\n setTimeout(() => {\n dialog.destroy();\n }, 0);\n });\n }\n\n return dialog;\n }\n}\nexport default Dialog;\n","import Utils from '../../utils/utils';\nimport Dialog from './dialog-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'dialog',\n params: {\n dialog: {\n title: undefined,\n buttonOk: 'OK',\n buttonCancel: 'Cancel',\n usernamePlaceholder: 'Username',\n passwordPlaceholder: 'Password',\n preloaderTitle: 'Loading... ',\n progressTitle: 'Loading... ',\n backdrop: true,\n closeByBackdropClick: false,\n destroyPredefinedDialogs: true,\n keyboardActions: true,\n autoFocus: true,\n },\n },\n static: {\n Dialog,\n },\n create() {\n const app = this;\n function defaultDialogTitle() {\n return app.params.dialog.title || app.name;\n }\n const destroyOnClose = app.params.dialog.destroyPredefinedDialogs;\n const keyboardActions = app.params.dialog.keyboardActions;\n const autoFocus = app.params.dialog.autoFocus;\n const autoFocusHandler = (autoFocus ? {\n on: {\n opened(dialog) {\n dialog.$el.find('input').eq(0).focus();\n },\n },\n } : {});\n\n app.dialog = Utils.extend(\n ModalMethods({\n app,\n constructor: Dialog,\n defaultSelector: '.dialog.modal-in',\n }),\n {\n // Shortcuts\n alert(...args) {\n let [text, title, callbackOk] = args;\n if (args.length === 2 && typeof args[1] === 'function') {\n [text, callbackOk, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [{\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13, 27] : null,\n }],\n destroyOnClose,\n }).open();\n },\n prompt(...args) {\n let [text, title, callbackOk, callbackCancel, defaultValue] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, defaultValue, title] = args;\n }\n defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"${defaultValue}\"></div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const inputValue = dialog.$el.find('.dialog-input').val();\n if (index === 0 && callbackCancel) callbackCancel(inputValue);\n if (index === 1 && callbackOk) callbackOk(inputValue);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n confirm(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n onClick: callbackCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n onClick: callbackOk,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n destroyOnClose,\n }).open();\n },\n login(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"text\" name=\"dialog-username\" placeholder=\"${app.params.dialog.usernamePlaceholder}\" class=\"dialog-input\">\n </div>\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const username = dialog.$el.find('[name=\"dialog-username\"]').val();\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(username, password);\n if (index === 1 && callbackOk) callbackOk(username, password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n password(...args) {\n let [text, title, callbackOk, callbackCancel] = args;\n if (typeof args[1] === 'function') {\n [text, callbackOk, callbackCancel, title] = args;\n }\n return new Dialog(app, {\n title: typeof title === 'undefined' ? defaultDialogTitle() : title,\n text,\n content: `\n <div class=\"dialog-input-field input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"${app.params.dialog.passwordPlaceholder}\" class=\"dialog-input\">\n </div>`,\n buttons: [\n {\n text: app.params.dialog.buttonCancel,\n keyCodes: keyboardActions ? [27] : null,\n color: app.theme === 'aurora' ? 'gray' : null,\n },\n {\n text: app.params.dialog.buttonOk,\n bold: true,\n keyCodes: keyboardActions ? [13] : null,\n },\n ],\n onClick(dialog, index) {\n const password = dialog.$el.find('[name=\"dialog-password\"]').val();\n if (index === 0 && callbackCancel) callbackCancel(password);\n if (index === 1 && callbackOk) callbackOk(password);\n },\n destroyOnClose,\n ...autoFocusHandler,\n }).open();\n },\n preloader(title, color) {\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n return new Dialog(app, {\n title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,\n content: `<div class=\"preloader${color ? ` color-${color}` : ''}\">${preloaderInner}</div>`,\n cssClass: 'dialog-preloader',\n destroyOnClose,\n }).open();\n },\n progress(...args) {\n let [title, progress, color] = args;\n if (args.length === 2) {\n if (typeof args[0] === 'number') {\n [progress, color, title] = args;\n } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {\n [title, color, progress] = args;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n [progress, title, color] = args;\n }\n }\n const infinite = typeof progress === 'undefined';\n const dialog = new Dialog(app, {\n title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,\n cssClass: 'dialog-progress',\n content: `\n <div class=\"progressbar${infinite ? '-infinite' : ''}${color ? ` color-${color}` : ''}\">\n ${!infinite ? '<span></span>' : ''}\n </div>\n `,\n destroyOnClose,\n });\n if (!infinite) dialog.setProgress(progress);\n return dialog.open();\n },\n }\n );\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Modal from '../modal/modal-class';\n\nclass Popup extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.popup,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popup = this;\n\n popup.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popup.params.el) {\n $el = $(popup.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(popup.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return popup.destroy();\n }\n\n let $backdropEl;\n if (popup.params.backdrop && popup.params.backdropEl) {\n $backdropEl = $(popup.params.backdropEl);\n } else if (popup.params.backdrop) {\n $backdropEl = app.root.children('.popup-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popup-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n Utils.extend(popup, {\n app,\n push: $el.hasClass('popup-push') || popup.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popup',\n $htmlEl: $('html'),\n });\n\n if (popup.params.push) {\n $el.addClass('popup-push');\n }\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popup.el).length === 0) {\n if (\n popup.params\n && popup.params.closeByBackdropClick\n && popup.params.backdrop\n && popup.backdropEl\n && popup.backdropEl === target\n ) {\n let needToClose = true;\n popup.$el.nextAll('.popup.modal-in').each((index, popupEl) => {\n const popupInstance = popupEl.f7Modal;\n if (!popupInstance) return;\n if (\n popupInstance.params.closeByBackdropClick\n && popupInstance.params.backdrop\n && popupInstance.backdropEl === popup.backdropEl\n ) {\n needToClose = false;\n }\n });\n if (needToClose) {\n popup.close();\n }\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popup.params.closeOnEscape) {\n popup.close();\n }\n }\n\n let pushOffset;\n let isPush;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n let allowSwipeToClose = true;\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let pageContentEl;\n let pageContentScrollTop;\n let pageContentOffsetHeight;\n let pageContentScrollHeight;\n let popupHeight;\n let $pushEl;\n\n function handleTouchStart(e) {\n if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose) return;\n if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {\n return;\n }\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = Utils.now();\n isScrolling = undefined;\n if (!popup.params.swipeHandler && e.type === 'touchstart') {\n pageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n if (isPush && pushOffset && touchesDiff > 0) {\n touchesDiff = 0;\n }\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n $el.transition(0);\n\n if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {\n $el.transform('');\n $el.transition('');\n return;\n }\n\n if (!isMoved) {\n if (isPush && pushOffset) {\n popupHeight = $el[0].offsetHeight;\n $pushEl = $el.prevAll('.popup.modal-in').eq(0);\n if ($pushEl.length === 0) {\n $pushEl = app.root.children('.view, .views');\n }\n }\n if (pageContentEl) {\n pageContentScrollTop = pageContentEl.scrollTop;\n pageContentScrollHeight = pageContentEl.scrollHeight;\n pageContentOffsetHeight = pageContentEl.offsetHeight;\n if (\n !(pageContentScrollHeight === pageContentOffsetHeight)\n && !(direction === 'to-bottom' && pageContentScrollTop === 0)\n && !(direction === 'to-top' && pageContentScrollTop === (pageContentScrollHeight - pageContentOffsetHeight))\n ) {\n $el.transform('');\n $el.transition('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n isMoved = true;\n popup.emit('local::swipeStart popupSwipeStart', popup);\n popup.$el.trigger('popup:swipestart');\n } else {\n popup.emit('local::swipeMove popupSwipeMove', popup);\n popup.$el.trigger('popup:swipemove');\n }\n\n e.preventDefault();\n if (isPush && pushOffset) {\n const pushProgress = 1 - Math.abs(touchesDiff / popupHeight);\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n if ($pushEl.hasClass('popup')) {\n if ($pushEl.hasClass('popup-push')) {\n $pushEl.transition(0).transform(\n `translate3d(0, calc(-1 * ${pushProgress} * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(${scale})`\n );\n } else {\n $pushEl.transition(0).transform(\n `translate3d(0, 0px , 0px) scale(${scale})`\n );\n }\n } else {\n $pushEl.transition(0).transform(`translate3d(0,0,0) scale(${scale})`);\n }\n }\n $el.transition(0).transform(`translate3d(0,${-touchesDiff}px,0)`);\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n popup.emit('local::swipeEnd popupSwipeEnd', popup);\n popup.$el.trigger('popup:swipeend');\n isMoved = false;\n allowSwipeToClose = false;\n $el.transition('');\n if (isPush && pushOffset) {\n $pushEl.transition('').transform('');\n }\n const direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';\n if ((typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose)) {\n $el.transform('');\n allowSwipeToClose = true;\n return;\n }\n const diff = Math.abs(touchesDiff);\n const timeDiff = (new Date()).getTime() - touchStartTime;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n Utils.nextTick(() => {\n if (direction === 'to-bottom') {\n $el.addClass('swipe-close-to-bottom');\n } else {\n $el.addClass('swipe-close-to-top');\n }\n $el.transform('');\n popup.emit('local::swipeclose popupSwipeClose', popup);\n popup.$el.trigger('popup:swipeclose');\n popup.close();\n allowSwipeToClose = true;\n });\n return;\n }\n allowSwipeToClose = true;\n $el.transform('');\n }\n\n const passive = Support.passiveListener ? { passive: true } : false;\n if (popup.params.swipeToClose) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n popup.once('popupDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n let hasPreviousPushPopup;\n\n popup.on('open', () => {\n hasPreviousPushPopup = false;\n if (popup.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n if (popup.push) {\n isPush = popup.push && (\n (app.width < 630 || app.height < 630)\n || $el.hasClass('popup-tablet-fullscreen')\n );\n }\n if (isPush) {\n pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (pushOffset) {\n $el.addClass('popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push');\n popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));\n }\n }\n });\n popup.on('opened', () => {\n $el.removeClass('swipe-close-to-bottom swipe-close-to-top');\n if (popup.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popup.on('close', () => {\n hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;\n if (popup.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (popup.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push');\n popup.$htmlEl.addClass('with-modal-popup-push-closing');\n }\n });\n popup.on('closed', () => {\n if (isPush && pushOffset && !hasPreviousPushPopup) {\n popup.$htmlEl.removeClass('with-modal-popup-push-closing');\n popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');\n }\n });\n\n $el[0].f7Modal = popup;\n\n return popup;\n }\n}\nexport default Popup;\n","import Popup from './popup-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'popup',\n params: {\n popup: {\n backdrop: true,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeOnEscape: false,\n swipeToClose: false,\n swipeHandler: null,\n push: false,\n },\n },\n static: {\n Popup,\n },\n create() {\n const app = this;\n app.popup = ModalMethods({\n app,\n constructor: Popup,\n defaultSelector: '.popup.modal-in',\n parentSelector: '.popup',\n });\n },\n clicks: {\n '.popup-open': function openPopup($clickedEl, data = {}) {\n const app = this;\n app.popup.open(data.popup, data.animate, $clickedEl);\n },\n '.popup-close': function closePopup($clickedEl, data = {}) {\n const app = this;\n app.popup.close(data.popup, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass LoginScreen extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const loginScreen = this;\n\n loginScreen.params = extendedParams;\n\n // Find Element\n let $el;\n if (!loginScreen.params.el) {\n $el = $(loginScreen.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(loginScreen.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return loginScreen.destroy();\n }\n\n Utils.extend(loginScreen, {\n app,\n $el,\n el: $el[0],\n type: 'loginScreen',\n });\n\n $el[0].f7Modal = loginScreen;\n\n return loginScreen;\n }\n}\nexport default LoginScreen;\n","import LoginScreen from './login-screen-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'loginScreen',\n static: {\n LoginScreen,\n },\n create() {\n const app = this;\n app.loginScreen = ModalMethods({\n app,\n constructor: LoginScreen,\n defaultSelector: '.login-screen.modal-in',\n });\n },\n clicks: {\n '.login-screen-open': function openLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);\n },\n '.login-screen-close': function closeLoginScreen($clickedEl, data = {}) {\n const app = this;\n app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Popover extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.popover,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const popover = this;\n\n popover.params = extendedParams;\n\n // Find Element\n let $el;\n if (!popover.params.el) {\n $el = $(popover.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(popover.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n // Find Target\n const $targetEl = $(popover.params.targetEl).eq(0);\n\n if ($el.length === 0) {\n return popover.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (popover.params.backdrop && popover.params.backdropEl) {\n $backdropEl = $(popover.params.backdropEl);\n } else if (popover.params.backdrop) {\n $backdropEl = app.root.children('.popover-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"popover-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n // Find Angle\n let $angleEl;\n if ($el.find('.popover-angle').length === 0) {\n $angleEl = $('<div class=\"popover-angle\"></div>');\n $el.prepend($angleEl);\n } else {\n $angleEl = $el.find('.popover-angle');\n }\n\n // Open\n const originalOpen = popover.open;\n\n Utils.extend(popover, {\n app,\n $el,\n el: $el[0],\n $targetEl,\n targetEl: $targetEl[0],\n $angleEl,\n angleEl: $angleEl[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'popover',\n open(...args) {\n let [targetEl, animate] = args;\n if (typeof args[0] === 'boolean') [animate, targetEl] = args;\n if (targetEl) {\n popover.$targetEl = $(targetEl);\n popover.targetEl = popover.$targetEl[0];\n }\n return originalOpen.call(popover, animate);\n },\n });\n\n function handleResize() {\n popover.resize();\n }\n popover.on('popoverOpen', () => {\n popover.resize();\n app.on('resize', handleResize);\n $(window).on('keyboardDidShow keyboardDidHide', handleResize);\n popover.on('popoverClose popoverBeforeDestroy', () => {\n app.off('resize', handleResize);\n $(window).off('keyboardDidShow keyboardDidHide', handleResize);\n });\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(popover.el).length === 0) {\n if (\n popover.params.closeByBackdropClick\n && popover.params.backdrop\n && popover.backdropEl\n && popover.backdropEl === target\n ) {\n popover.close();\n } else if (popover.params.closeByOutsideClick) {\n popover.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && popover.params.closeOnEscape) {\n popover.close();\n }\n }\n\n if (popover.params.closeOnEscape) {\n popover.on('popoverOpen', () => {\n $(document).on('keydown', onKeyDown);\n });\n popover.on('popoverClose', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n popover.on('popoverOpened', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n popover.on('popoverClose', () => {\n if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n });\n\n $el[0].f7Modal = popover;\n\n return popover;\n }\n\n resize() {\n const popover = this;\n const { app, $el, $targetEl, $angleEl } = popover;\n const { targetX, targetY } = popover.params;\n $el.css({ left: '', top: '' });\n const [width, height] = [$el.width(), $el.height()];\n let angleSize = 0;\n let angleLeft;\n let angleTop;\n if (app.theme === 'ios' || app.theme === 'aurora') {\n $angleEl.removeClass('on-left on-right on-top on-bottom').css({ left: '', top: '' });\n angleSize = $angleEl.width() / 2;\n } else {\n $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({ left: '', top: '' });\n }\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n let safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);\n if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {\n targetOffsetLeft = targetX;\n targetOffsetTop = targetY;\n targetWidth = popover.params.targetWidth || 0;\n targetHeight = popover.params.targetHeight || 0;\n }\n\n let [left, top, diff] = [0, 0, 0];\n // Top Position\n let position = app.theme === 'md' ? 'bottom' : 'top';\n if (app.theme === 'md') {\n if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight;\n } else if (height < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height;\n position = 'top';\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n }\n top = Math.max(8, Math.min(top, app.height - height - 8));\n\n // Horizontal Position\n let hPosition;\n if (targetOffsetLeft < app.width / 2) {\n hPosition = 'right';\n left = position === 'middle'\n ? targetOffsetLeft + targetWidth\n : targetOffsetLeft;\n } else {\n hPosition = 'left';\n left = position === 'middle'\n ? targetOffsetLeft - width\n : (targetOffsetLeft + targetWidth) - width;\n }\n left = Math.max(8, Math.min(left, app.width - width - 8));\n $el.addClass(`popover-on-${position} popover-on-${hPosition}`);\n } else {\n // ios and aurora\n if ((height + angleSize) < targetOffsetTop - safeAreaTop) {\n // On top\n top = targetOffsetTop - height - angleSize;\n } else if ((height + angleSize) < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + angleSize;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n diff = top;\n top = Math.max(5, Math.min(top, app.height - height - 5));\n diff -= top;\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n diff = left;\n left = Math.max(5, Math.min(left, app.width - width - 5));\n if (position === 'top') {\n $angleEl.addClass('on-bottom');\n }\n if (position === 'bottom') {\n $angleEl.addClass('on-top');\n }\n diff -= left;\n angleLeft = ((width / 2) - angleSize) + diff;\n angleLeft = Math.max(Math.min(angleLeft, width - (angleSize * 2) - 13), 13);\n $angleEl.css({ left: `${angleLeft}px` });\n } else if (position === 'middle') {\n left = targetOffsetLeft - width - angleSize;\n $angleEl.addClass('on-right');\n if (left < 5 || (left + width > app.width)) {\n if (left < 5) left = targetOffsetLeft + targetWidth + angleSize;\n if (left + width > app.width) left = app.width - width - 5;\n $angleEl.removeClass('on-right').addClass('on-left');\n }\n angleTop = ((height / 2) - angleSize) + diff;\n angleTop = Math.max(Math.min(angleTop, height - (angleSize * 2) - 13), 13);\n $angleEl.css({ top: `${angleTop}px` });\n }\n }\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n}\n\nexport default Popover;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Popover from './popover-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'popover',\n params: {\n popover: {\n backdrop: true,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeByOutsideClick: true,\n closeOnEscape: false,\n },\n },\n static: {\n Popover,\n },\n create() {\n const app = this;\n app.popover = Utils.extend(\n ModalMethods({\n app,\n constructor: Popover,\n defaultSelector: '.popover.modal-in',\n }),\n {\n open(popoverEl, targetEl, animate) {\n let $popoverEl = $(popoverEl);\n if ($popoverEl.length > 1) {\n // check if same popover in other page\n const $targetPage = $(targetEl).parents('.page');\n if ($targetPage.length) {\n $popoverEl.each((index, el) => {\n const $el = $(el);\n if ($el.parents($targetPage)[0] === $targetPage[0]) {\n $popoverEl = $el;\n }\n });\n }\n }\n if ($popoverEl.length > 1) {\n $popoverEl = $popoverEl.eq($popoverEl.length - 1);\n }\n let popover = $popoverEl[0].f7Modal;\n const data = $popoverEl.dataset();\n if (!popover) {\n popover = new Popover(app, Object.assign(\n {\n el: $popoverEl,\n targetEl,\n },\n data\n ));\n }\n return popover.open(targetEl, animate);\n },\n }\n );\n },\n clicks: {\n '.popover-open': function openPopover($clickedEl, data = {}) {\n const app = this;\n app.popover.open(data.popover, $clickedEl, data.animate);\n },\n '.popover-close': function closePopover($clickedEl, data = {}) {\n const app = this;\n app.popover.close(data.popover, data.animate, $clickedEl);\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Actions extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.actions,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const actions = this;\n\n actions.params = extendedParams;\n\n // Buttons\n let groups;\n if (actions.params.buttons) {\n groups = actions.params.buttons;\n if (!Array.isArray(groups[0])) groups = [groups];\n }\n actions.groups = groups;\n\n // Find Element\n let $el;\n if (actions.params.el) {\n $el = $(actions.params.el).eq(0);\n } else if (actions.params.content) {\n $el = $(actions.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else if (actions.params.buttons) {\n if (actions.params.convertToPopover) {\n actions.popoverHtml = actions.renderPopover();\n }\n actions.actionsHtml = actions.render();\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {\n return actions.destroy();\n }\n\n // Backdrop\n let $backdropEl;\n if (actions.params.backdrop && actions.params.backdropEl) {\n $backdropEl = $(actions.params.backdropEl);\n } else if (actions.params.backdrop) {\n $backdropEl = app.root.children('.actions-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"actions-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n const originalOpen = actions.open;\n const originalClose = actions.close;\n\n let popover;\n function buttonOnClick(e) {\n const $buttonEl = $(this);\n let buttonIndex;\n let groupIndex;\n if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {\n buttonIndex = $buttonEl.parents('li').index();\n groupIndex = $buttonEl.parents('.list').index();\n } else {\n buttonIndex = $buttonEl.index();\n groupIndex = $buttonEl.parents('.actions-group').index();\n }\n if (typeof groups !== 'undefined') {\n const button = groups[groupIndex][buttonIndex];\n if (button.onClick) button.onClick(actions, e);\n if (actions.params.onClick) actions.params.onClick(actions, e);\n if (button.close !== false) actions.close();\n }\n }\n actions.open = function open(animate) {\n let convertToPopover = false;\n const { targetEl, targetX, targetY, targetWidth, targetHeight } = actions.params;\n if (actions.params.convertToPopover && (targetEl || (targetX !== undefined && targetY !== undefined))) {\n // Popover\n if (\n actions.params.forceToPopover\n || (app.device.ios && app.device.ipad)\n || app.width >= 768\n || (app.device.desktop && app.theme === 'aurora')\n ) {\n convertToPopover = true;\n }\n }\n if (convertToPopover && actions.popoverHtml) {\n popover = app.popover.create({\n content: actions.popoverHtml,\n backdrop: actions.params.backdrop,\n targetEl,\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n on: {\n open() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:open ${actions.type.toLowerCase()}:open`);\n actions.emit(`local::open modalOpen ${actions.type}Open`, actions);\n },\n opened() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:opened ${actions.type.toLowerCase()}:opened`);\n actions.emit(`local::opened modalOpened ${actions.type}Opened`, actions);\n },\n close() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:close ${actions.type.toLowerCase()}:close`);\n actions.emit(`local::close modalClose ${actions.type}Close`, actions);\n },\n closed() {\n if (!actions.$el) {\n actions.$el = popover.$el;\n }\n actions.$el.trigger(`modal:closed ${actions.type.toLowerCase()}:closed`);\n actions.emit(`local::closed modalClosed ${actions.type}Closed`, actions);\n },\n },\n });\n popover.open(animate);\n popover.once('popoverOpened', () => {\n popover.$el.find('.list-button, .item-link').each((groupIndex, buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n });\n popover.once('popoverClosed', () => {\n popover.$el.find('.list-button, .item-link').each((groupIndex, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n Utils.nextTick(() => {\n popover.destroy();\n popover = undefined;\n });\n });\n } else {\n actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;\n actions.$el[0].f7Modal = actions;\n if (actions.groups) {\n actions.$el.find('.actions-button').each((groupIndex, buttonEl) => {\n $(buttonEl).on('click', buttonOnClick);\n });\n actions.once('actionsClosed', () => {\n actions.$el.find('.actions-button').each((groupIndex, buttonEl) => {\n $(buttonEl).off('click', buttonOnClick);\n });\n });\n }\n actions.el = actions.$el[0];\n originalOpen.call(actions, animate);\n }\n return actions;\n };\n\n actions.close = function close(animate) {\n if (popover) {\n popover.close(animate);\n } else {\n originalClose.call(actions, animate);\n }\n return actions;\n };\n\n Utils.extend(actions, {\n app,\n $el,\n el: $el ? $el[0] : undefined,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'actions',\n });\n\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(actions.el).length === 0) {\n if (\n actions.params.closeByBackdropClick\n && actions.params.backdrop\n && actions.backdropEl\n && actions.backdropEl === target\n ) {\n actions.close();\n } else if (actions.params.closeByOutsideClick) {\n actions.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && actions.params.closeOnEscape) {\n actions.close();\n }\n }\n\n if (actions.params.closeOnEscape) {\n actions.on('open', () => {\n $(document).on('keydown', onKeyDown);\n });\n actions.on('close', () => {\n $(document).off('keydown', onKeyDown);\n });\n }\n\n actions.on('opened', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.on('click', handleClick);\n }\n });\n actions.on('close', () => {\n if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {\n app.off('click', handleClick);\n }\n });\n\n if ($el) {\n $el[0].f7Modal = actions;\n }\n\n return actions;\n }\n\n render() {\n const actions = this;\n if (actions.params.render) return actions.params.render.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return `\n <div class=\"actions-modal${actions.params.grid ? ' actions-grid' : ''} ${cssClass || ''}\">\n ${groups.map(group => `<div class=\"actions-group\">\n ${group.map((button) => {\n const buttonClasses = [`actions-${button.label ? 'label' : 'button'}`];\n const { color, bg, bold, disabled, label, text, icon } = button;\n if (color) buttonClasses.push(`color-${color}`);\n if (bg) buttonClasses.push(`bg-color-${bg}`);\n if (bold) buttonClasses.push('actions-button-bold');\n if (disabled) buttonClasses.push('disabled');\n if (label) {\n return `<div class=\"${buttonClasses.join(' ')}\">${text}</div>`;\n }\n return `\n <div class=\"${buttonClasses.join(' ')}\">\n ${icon ? `<div class=\"actions-button-media\">${icon}</div>` : ''}\n <div class=\"actions-button-text\">${text}</div>\n </div>`.trim();\n }).join('')}\n </div>`).join('')}\n </div>\n `.trim();\n }\n\n renderPopover() {\n const actions = this;\n if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);\n const { groups } = actions;\n const cssClass = actions.params.cssClass;\n return `\n <div class=\"popover popover-from-actions ${cssClass || ''}\">\n <div class=\"popover-inner\">\n ${groups.map(group => `\n <div class=\"list\">\n <ul>\n ${group.map((button) => {\n const itemClasses = [];\n const { color, bg, bold, disabled, label, text, icon } = button;\n if (color) itemClasses.push(`color-${color}`);\n if (bg) itemClasses.push(`bg-color-${bg}`);\n if (bold) itemClasses.push('popover-from-actions-bold');\n if (disabled) itemClasses.push('disabled');\n if (label) {\n itemClasses.push('popover-from-actions-label');\n return `<li class=\"${itemClasses.join(' ')}\">${text}</li>`;\n }\n if (icon) {\n itemClasses.push('item-link item-content');\n return `\n <li>\n <a class=\"${itemClasses.join(' ')}\">\n <div class=\"item-media\">\n ${icon}\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title\">\n ${text}\n </div>\n </div>\n </a>\n </li>\n `;\n }\n itemClasses.push('list-button');\n return `\n <li>\n <a class=\"${itemClasses.join(' ')}\">${text}</a>\n </li>\n `;\n }).join('')}\n </ul>\n </div>\n `).join('')}\n </div>\n </div>\n `.trim();\n }\n}\n\nexport default Actions;\n","import Actions from './actions-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'actions',\n params: {\n actions: {\n convertToPopover: true,\n forceToPopover: false,\n backdrop: true,\n backdropEl: undefined,\n cssClass: null,\n closeByBackdropClick: true,\n closeOnEscape: false,\n render: null,\n renderPopover: null,\n },\n },\n static: {\n Actions,\n },\n create() {\n const app = this;\n app.actions = ModalMethods({\n app,\n constructor: Actions,\n defaultSelector: '.actions-modal.modal-in',\n });\n },\n clicks: {\n '.actions-open': function openActions($clickedEl, data = {}) {\n const app = this;\n app.actions.open(data.actions, data.animate, $clickedEl);\n },\n '.actions-close': function closeActions($clickedEl, data = {}) {\n const app = this;\n app.actions.close(data.actions, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Modal from '../modal/modal-class';\n\nclass Sheet extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.sheet,\n params\n );\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const sheet = this;\n\n sheet.params = extendedParams;\n if (typeof sheet.params.backdrop === 'undefined') {\n sheet.params.backdrop = app.theme !== 'ios';\n }\n\n // Find Element\n let $el;\n if (!sheet.params.el) {\n $el = $(sheet.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n } else {\n $el = $(sheet.params.el).eq(0);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return sheet.destroy();\n }\n let $backdropEl;\n\n if (sheet.params.backdrop && sheet.params.backdropEl) {\n $backdropEl = $(sheet.params.backdropEl);\n } else if (sheet.params.backdrop) {\n $backdropEl = app.root.children('.sheet-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"sheet-backdrop\"></div>');\n app.root.append($backdropEl);\n }\n }\n\n Utils.extend(sheet, {\n app,\n push: $el.hasClass('sheet-modal-push') || sheet.params.push,\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n type: 'sheet',\n $htmlEl: $('html'),\n });\n\n if (sheet.params.push) {\n $el.addClass('sheet-modal-push');\n }\n\n let $pageContentEl;\n function scrollToElementOnOpen() {\n const $scrollEl = $(sheet.params.scrollToEl).eq(0);\n if ($scrollEl.length === 0) return;\n $pageContentEl = $scrollEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();\n const pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();\n const pageScroll = $pageContentEl.scrollTop();\n\n let newPaddingBottom;\n\n const scrollElTop = ($scrollEl.offset().top - paddingTop) + $scrollEl[0].offsetHeight;\n if (scrollElTop > pageHeight) {\n const scrollTop = (pageScroll + scrollElTop) - pageHeight;\n if (scrollTop + pageHeight > pageScrollHeight) {\n newPaddingBottom = ((scrollTop + pageHeight) - pageScrollHeight) + paddingBottom;\n if (pageHeight === pageScrollHeight) {\n newPaddingBottom = $el.height();\n }\n $pageContentEl.css({\n 'padding-bottom': `${newPaddingBottom}px`,\n });\n }\n $pageContentEl.scrollTop(scrollTop, 300);\n }\n }\n\n function scrollToElementOnClose() {\n if ($pageContentEl && $pageContentEl.length > 0) {\n $pageContentEl.css({\n 'padding-bottom': '',\n });\n }\n }\n function handleClick(e) {\n const target = e.target;\n const $target = $(target);\n const keyboardOpened = !app.device.desktop && app.device.cordova && ((window.Keyboard && window.Keyboard.isVisible) || (window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible));\n if (keyboardOpened) return;\n if ($target.closest(sheet.el).length === 0) {\n if (\n sheet.params.closeByBackdropClick\n && sheet.params.backdrop\n && sheet.backdropEl\n && sheet.backdropEl === target\n ) {\n sheet.close();\n } else if (sheet.params.closeByOutsideClick) {\n sheet.close();\n }\n }\n }\n\n function onKeyDown(e) {\n const keyCode = e.keyCode;\n if (keyCode === 27 && sheet.params.closeOnEscape) {\n sheet.close();\n }\n }\n\n let pushOffset;\n\n function pushViewScale(offset) {\n return (app.height - offset * 2) / app.height;\n }\n\n\n let isTouched = false;\n let startTouch;\n let currentTouch;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let isMoved = false;\n let isTopSheetModal;\n let swipeStepTranslate;\n let startTranslate;\n let currentTranslate;\n let sheetElOffsetHeight;\n let minTranslate;\n let maxTranslate;\n let $pushViewEl;\n let pushBorderRadius;\n let sheetPageContentEl;\n let sheetPageContentScrollTop;\n let sheetPageContentScrollHeight;\n let sheetPageContentOffsetHeight;\n\n function handleTouchStart(e) {\n if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep)) return;\n if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {\n return;\n }\n isTouched = true;\n isMoved = false;\n startTouch = {\n x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY,\n };\n touchStartTime = Utils.now();\n isScrolling = undefined;\n isTopSheetModal = $el.hasClass('sheet-modal-top');\n if (!sheet.params.swipeHandler && e.type === 'touchstart') {\n sheetPageContentEl = $(e.target).closest('.page-content')[0];\n }\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n currentTouch = {\n x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,\n y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY,\n };\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n touchesDiff = startTouch.y - currentTouch.y;\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n if (!isMoved) {\n if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {\n sheetPageContentScrollTop = sheetPageContentEl.scrollTop;\n sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;\n sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;\n if (\n !(sheetPageContentScrollHeight === sheetPageContentOffsetHeight)\n && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0)\n && !(direction === 'to-top' && sheetPageContentScrollTop === (sheetPageContentScrollHeight - sheetPageContentOffsetHeight))\n ) {\n $el.transform('');\n isTouched = false;\n isMoved = false;\n return;\n }\n }\n if (sheet.push && pushOffset) {\n $pushViewEl = app.root.children('.view, .views');\n }\n sheetElOffsetHeight = $el[0].offsetHeight;\n startTranslate = Utils.getTranslate($el[0], 'y');\n if (isTopSheetModal) {\n minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;\n maxTranslate = 0;\n } else {\n minTranslate = 0;\n maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : swipeStepTranslate;\n }\n isMoved = true;\n }\n currentTranslate = startTranslate - touchesDiff;\n currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);\n e.preventDefault();\n if (sheet.push && pushOffset) {\n let progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;\n if (sheet.params.swipeToStep) {\n if (isTopSheetModal) {\n progress = (currentTranslate / swipeStepTranslate);\n } else {\n progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n }\n progress = Math.abs(progress);\n progress = Math.min(Math.max(progress, 0), 1);\n const pushProgress = 1 - progress;\n const scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;\n $pushViewEl.transition(0).transform(`translate3d(0,0,0) scale(${scale})`);\n if (sheet.params.swipeToStep) {\n $pushViewEl.css('border-radius', `${pushBorderRadius * pushProgress}px`);\n }\n }\n $el\n .transition(0)\n .transform(`translate3d(0,${currentTranslate}px,0)`);\n if (sheet.params.swipeToStep) {\n let progress;\n if (isTopSheetModal) {\n progress = 1 - (currentTranslate / swipeStepTranslate);\n } else {\n progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;\n }\n progress = Math.min(Math.max(progress, 0), 1);\n $el.trigger('sheet:stepprogress', progress);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, progress);\n }\n }\n function handleTouchEnd() {\n isTouched = false;\n if (!isMoved) {\n return;\n }\n isMoved = false;\n $el.transform('').transition('');\n if (sheet.push && pushOffset) {\n $pushViewEl.transition('').transform('');\n $pushViewEl.css('border-radius', '');\n }\n\n const direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';\n\n const diff = Math.abs(touchesDiff);\n if (diff === 0 || currentTranslate === startTranslate) return;\n\n const timeDiff = (new Date()).getTime() - touchStartTime;\n\n if (!sheet.params.swipeToStep) {\n if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {\n return;\n }\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > (sheetElOffsetHeight / 2))) {\n sheet.close();\n }\n return;\n }\n\n const openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';\n const closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';\n const absCurrentTranslate = Math.abs(currentTranslate);\n const absSwipeStepTranslate = Math.abs(swipeStepTranslate);\n\n if (timeDiff < 300 && diff > 10) {\n if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n }\n if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {\n // close sheet\n if (sheet.params.swipeToClose) {\n sheet.close();\n } else {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n return;\n }\n if (timeDiff >= 300) {\n const stepOpened = !$el.hasClass('modal-in-swipe-step');\n if (!stepOpened) {\n if (absCurrentTranslate < (absSwipeStepTranslate / 2)) {\n // open step\n $el.removeClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 1);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);\n $el.trigger('sheet:stepopen');\n sheet.emit('local::stepOpen sheetStepOpen', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n $pushViewEl.css('border-radius', '');\n }\n } else if ((absCurrentTranslate - absSwipeStepTranslate) > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n }\n } else if (stepOpened) {\n if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {\n // close sheet\n if (sheet.params.swipeToClose) sheet.close();\n } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {\n // close step\n $el.addClass('modal-in-swipe-step');\n $el.trigger('sheet:stepprogress', 0);\n sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);\n $el.trigger('sheet:stepclose');\n sheet.emit('local::stepClose sheetStepClose', sheet);\n if (sheet.push && pushOffset) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n }\n }\n\n sheet.setSwipeStep = function setSwipeStep(byResize = true) {\n const $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);\n if (!$swipeStepEl.length) return;\n if ($el.hasClass('sheet-modal-top')) {\n swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n } else {\n swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);\n }\n $el[0].style.setProperty('--f7-sheet-swipe-step', `${swipeStepTranslate}px`);\n if (!byResize) {\n $el.addClass('modal-in-swipe-step');\n }\n };\n\n function onResize() {\n sheet.setSwipeStep(true);\n }\n\n const passive = Support.passiveListener ? { passive: true } : false;\n if (sheet.params.swipeToClose || sheet.params.swipeToStep) {\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n sheet.once('sheetDestroy', () => {\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n });\n }\n\n sheet.on('open', () => {\n if (sheet.params.closeOnEscape) {\n $(document).on('keydown', onKeyDown);\n }\n $el.prevAll('.popup.modal-in').addClass('popup-behind');\n if (sheet.params.swipeToStep) {\n sheet.setSwipeStep(false);\n app.on('resize', onResize);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnOpen();\n }\n\n if (sheet.push) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n if (pushOffset) {\n $el.addClass('sheet-modal-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push');\n if (!sheet.params.swipeToStep) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n } else {\n $pushViewEl = app.root.children('.view, .views');\n pushBorderRadius = parseFloat($el.css(`border-${isTopSheetModal ? 'bottom' : 'top'}-left-radius`));\n $pushViewEl.css('border-radius', '0px');\n }\n }\n }\n });\n sheet.on('opened', () => {\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.on('click', handleClick);\n }\n });\n sheet.on('close', () => {\n if (sheet.params.swipeToStep) {\n $el.removeClass('modal-in-swipe-step');\n app.off('resize', onResize);\n }\n if (sheet.params.closeOnEscape) {\n $(document).off('keydown', onKeyDown);\n }\n if (sheet.params.scrollToEl) {\n scrollToElementOnClose();\n }\n if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {\n app.off('click', handleClick);\n }\n $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push');\n sheet.$htmlEl.addClass('with-modal-sheet-push-closing');\n }\n });\n sheet.on('closed', () => {\n if (sheet.push && pushOffset) {\n sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n });\n\n sheet.stepOpen = function stepOpen() {\n $el.removeClass('modal-in-swipe-step');\n if (sheet.push) {\n if (!pushOffset) {\n pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);\n if (Number.isNaN(pushOffset)) pushOffset = 0;\n }\n if (pushOffset) {\n sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));\n }\n }\n };\n sheet.stepClose = function stepClose() {\n $el.addClass('modal-in-swipe-step');\n if (sheet.push) {\n sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');\n }\n };\n sheet.stepToggle = function stepToggle() {\n $el.toggleClass('modal-in-swipe-step');\n };\n\n $el[0].f7Modal = sheet;\n\n return sheet;\n }\n}\nexport default Sheet;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Sheet from './sheet-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'sheet',\n params: {\n sheet: {\n push: false,\n backdrop: undefined,\n backdropEl: undefined,\n closeByBackdropClick: true,\n closeByOutsideClick: false,\n closeOnEscape: false,\n swipeToClose: false,\n swipeToStep: false,\n swipeHandler: null,\n },\n },\n static: {\n Sheet,\n },\n create() {\n const app = this;\n app.sheet = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Sheet,\n defaultSelector: '.sheet-modal.modal-in',\n }),\n {\n stepOpen(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();\n return undefined;\n },\n stepClose(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();\n return undefined;\n },\n stepToggle(sheet) {\n const sheetInstance = app.sheet.get(sheet);\n if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();\n return undefined;\n },\n },\n );\n },\n clicks: {\n '.sheet-open': function openSheet($clickedEl, data = {}) {\n const app = this;\n if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {\n app.sheet.close('.sheet-modal.modal-in');\n }\n app.sheet.open(data.sheet, data.animate, $clickedEl);\n },\n '.sheet-close': function closeSheet($clickedEl, data = {}) {\n const app = this;\n app.sheet.close(data.sheet, data.animate, $clickedEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Toast extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, app.params.toast, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const toast = this;\n\n toast.app = app;\n\n toast.params = extendedParams;\n\n const { closeButton, closeTimeout } = toast.params;\n\n let $el;\n if (!toast.params.el) {\n // Find Element\n const toastHtml = toast.render();\n\n $el = $(toastHtml);\n } else {\n $el = $(toast.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return toast.destroy();\n }\n\n Utils.extend(toast, {\n $el,\n el: $el[0],\n type: 'toast',\n });\n\n $el[0].f7Modal = toast;\n\n if (closeButton) {\n $el.find('.toast-button').on('click', () => {\n toast.emit('local::closeButtonClick toastCloseButtonClick', toast);\n toast.close();\n });\n\n toast.on('beforeDestroy', () => {\n $el.find('.toast-button').off('click');\n });\n }\n\n let timeoutId;\n toast.on('open', () => {\n $('.toast.modal-in').each((index, openedEl) => {\n const toastInstance = app.toast.get(openedEl);\n if (openedEl !== toast.el && toastInstance) {\n toastInstance.close();\n }\n });\n if (closeTimeout) {\n timeoutId = Utils.nextTick(() => {\n toast.close();\n }, closeTimeout);\n }\n });\n toast.on('close', () => {\n window.clearTimeout(timeoutId);\n });\n\n if (toast.params.destroyOnClose) {\n toast.once('closed', () => {\n setTimeout(() => {\n toast.destroy();\n }, 0);\n });\n }\n\n return toast;\n }\n\n render() {\n const toast = this;\n if (toast.params.render) return toast.params.render.call(toast, toast);\n const { position, cssClass, icon, text, closeButton, closeButtonColor, closeButtonText } = toast.params;\n return `\n <div class=\"toast toast-${position} ${cssClass || ''} ${icon ? 'toast-with-icon' : ''}\">\n <div class=\"toast-content\">\n ${icon ? `<div class=\"toast-icon\">${icon}</div>` : ''}\n <div class=\"toast-text\">${text}</div>\n ${closeButton && !icon ? `\n <a class=\"toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}\">${closeButtonText}</a>\n `.trim() : ''}\n </div>\n </div>\n `.trim();\n }\n}\nexport default Toast;\n","import Utils from '../../utils/utils';\nimport Toast from './toast-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'toast',\n static: {\n Toast,\n },\n create() {\n const app = this;\n app.toast = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Toast,\n defaultSelector: '.toast.modal-in',\n }),\n {\n // Shortcuts\n show(params) {\n Utils.extend(params, {\n destroyOnClose: true,\n });\n return new Toast(app, params).open();\n },\n }\n );\n },\n params: {\n toast: {\n icon: null,\n text: null,\n position: 'bottom',\n closeButton: false,\n closeButtonColor: null,\n closeButtonText: 'Ok',\n closeTimeout: null,\n cssClass: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Preloader = {\n init(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;\n $el.append(Utils[`${app.theme}PreloaderContent`]);\n },\n // Modal\n visible: false,\n show(color = 'white') {\n const app = this;\n if (Preloader.visible) return;\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n $('html').addClass('with-modal-preloader');\n app.root.append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n Preloader.visible = true;\n },\n showIn(el, color = 'white') {\n const app = this;\n const preloaderInner = Utils[`${app.theme}PreloaderContent`] || '';\n $(el || 'html').addClass('with-modal-preloader');\n $(el || app.root).append(`\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-${color}\">${preloaderInner}</div>\n </div>\n `);\n },\n hide() {\n const app = this;\n if (!Preloader.visible) return;\n $('html').removeClass('with-modal-preloader');\n app.root.find('.preloader-backdrop, .preloader-modal').remove();\n Preloader.visible = false;\n },\n hideIn(el) {\n const app = this;\n $(el || 'html').removeClass('with-modal-preloader');\n $(el || app.root).find('.preloader-backdrop, .preloader-modal').remove();\n },\n};\nexport default {\n name: 'preloader',\n create() {\n const app = this;\n Utils.extend(app, {\n preloader: {\n init: Preloader.init.bind(app),\n show: Preloader.show.bind(app),\n hide: Preloader.hide.bind(app),\n showIn: Preloader.showIn.bind(app),\n hideIn: Preloader.hideIn.bind(app),\n },\n });\n },\n on: {\n photoBrowserOpen(pb) {\n const app = this;\n pb.$el.find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.preloader').each((index, preloaderEl) => {\n app.preloader.init(preloaderEl);\n });\n },\n },\n vnode: {\n preloader: {\n insert(vnode) {\n const app = this;\n const preloaderEl = vnode.elm;\n app.preloader.init(preloaderEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Progressbar = {\n set(...args) {\n const app = this;\n let [el, progress, duration] = args;\n if (typeof args[0] === 'number') {\n [progress, duration] = args;\n el = app.root;\n }\n if (typeof progress === 'undefined' || progress === null) return el;\n if (!progress) progress = 0;\n\n const $el = $(el || app.root);\n if ($el.length === 0) {\n return el;\n }\n const progressNormalized = Math.min(Math.max(progress, 0), 100);\n let $progressbarEl;\n if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);\n else {\n $progressbarEl = $el.children('.progressbar');\n }\n if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {\n return $progressbarEl;\n }\n let $progressbarLine = $progressbarEl.children('span');\n if ($progressbarLine.length === 0) {\n $progressbarLine = $('<span></span>');\n $progressbarEl.append($progressbarLine);\n }\n $progressbarLine\n .transition(typeof duration !== 'undefined' ? duration : '')\n .transform(`translate3d(${(-100 + progressNormalized)}%,0,0)`);\n\n return $progressbarEl[0];\n },\n show(...args) {\n const app = this;\n\n // '.page', 50, 'multi'\n let [el, progress, color] = args;\n let type = 'determined';\n\n if (args.length === 2) {\n if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {\n // '.page', 'multi'\n [el, color, progress] = args;\n type = 'infinite';\n } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {\n // 50, 'multi'\n [progress, color] = args;\n el = app.root;\n }\n } else if (args.length === 1) {\n if (typeof args[0] === 'number') {\n el = app.root;\n progress = args[0];\n } else if (typeof args[0] === 'string') {\n type = 'infinite';\n el = app.root;\n color = args[0];\n }\n } else if (args.length === 0) {\n type = 'infinite';\n el = app.root;\n }\n\n const $el = $(el);\n if ($el.length === 0) return undefined;\n\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');\n if ($progressbarEl.length === 0) {\n $progressbarEl = $(`\n <span class=\"progressbar${type === 'infinite' ? '-infinite' : ''}${color ? ` color-${color}` : ''} progressbar-in\">\n ${type === 'infinite' ? '' : '<span></span>'}\n </span>`);\n $el.append($progressbarEl);\n }\n }\n\n if (typeof progress !== 'undefined') {\n app.progressbar.set($progressbarEl, progress);\n }\n\n return $progressbarEl[0];\n },\n hide(el, removeAfterHide = true) {\n const app = this;\n const $el = $(el || app.root);\n if ($el.length === 0) return undefined;\n let $progressbarEl;\n if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {\n $progressbarEl = $el;\n } else {\n $progressbarEl = $el.children('.progressbar, .progressbar-infinite');\n }\n if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {\n return $progressbarEl;\n }\n $progressbarEl\n .removeClass('progressbar-in')\n .addClass('progressbar-out')\n .animationEnd(() => {\n if (removeAfterHide) {\n $progressbarEl.remove();\n }\n });\n return $progressbarEl;\n },\n};\n\nexport default {\n name: 'progressbar',\n create() {\n const app = this;\n Utils.extend(app, {\n progressbar: {\n set: Progressbar.set.bind(app),\n show: Progressbar.show.bind(app),\n hide: Progressbar.hide.bind(app),\n },\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.progressbar').each((index, progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.progressbar').each((index, progressbarEl) => {\n const $progressbarEl = $(progressbarEl);\n app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));\n });\n },\n },\n vnode: {\n progressbar: {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n update(vnode) {\n const app = this;\n const el = vnode.elm;\n app.progressbar.set(el, el.getAttribute('data-progress'));\n },\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst Sortable = {\n init() {\n const app = this;\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchesDiff;\n let $sortingEl;\n let $sortingItems;\n let $sortableContainer;\n let sortingElHeight;\n let minTop;\n let maxTop;\n let $insertAfterEl;\n let $insertBeforeEl;\n let indexFrom;\n let $pageEl;\n let $pageContentEl;\n let pageHeight;\n let pageOffset;\n let sortingElOffsetLocal;\n let sortingElOffsetTop;\n let initialScrollTop;\n let wasTapHold;\n\n function handleTouchStart(e, isTapHold) {\n isMoved = false;\n isTouched = true;\n wasTapHold = false;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n $sortingEl = $(e.target).closest('li').eq(0);\n indexFrom = $sortingEl.index();\n $sortableContainer = $sortingEl.parents('.sortable');\n const $listGroup = $sortingEl.parents('.list-group');\n if ($listGroup.length && $listGroup.parents($sortableContainer).length) {\n $sortableContainer = $listGroup;\n }\n $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');\n if (app.panel) app.panel.allowOpen = false;\n if (app.swipeout) app.swipeout.allow = false;\n if (isTapHold) {\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n wasTapHold = true;\n }\n }\n function handleTouchMove(e) {\n if (!isTouched || !$sortingEl) return;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n $pageEl = $sortingEl.parents('.page');\n $pageContentEl = $sortingEl.parents('.page-content');\n const paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n initialScrollTop = $pageContentEl[0].scrollTop;\n pageOffset = $pageEl.offset().top + paddingTop;\n pageHeight = $pageEl.height() - paddingTop - paddingBottom;\n $sortingEl.addClass('sorting');\n $sortableContainer.addClass('sortable-sorting');\n sortingElOffsetLocal = $sortingEl[0].offsetTop;\n minTop = $sortingEl[0].offsetTop;\n maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();\n sortingElHeight = $sortingEl[0].offsetHeight;\n sortingElOffsetTop = $sortingEl.offset().top;\n }\n isMoved = true;\n\n e.preventDefault();\n e.f7PreventSwipePanel = true;\n\n touchesDiff = pageY - touchStartY;\n\n const translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;\n const translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);\n $sortingEl.transform(`translate3d(0,${translate}px,0)`);\n\n const scrollAddition = 44;\n let allowScroll = true;\n if ((touchesDiff + translateScrollOffset) + scrollAddition < -minTop) {\n allowScroll = false;\n }\n if ((touchesDiff + translateScrollOffset) - scrollAddition > maxTop) {\n allowScroll = false;\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n\n let scrollDiff;\n if (allowScroll) {\n if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {\n // To Bottom\n scrollDiff = (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition) - (pageOffset + pageHeight);\n }\n if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {\n // To Top\n scrollDiff = (sortingElOffsetTop + touchesDiff) - pageOffset - scrollAddition;\n }\n if (scrollDiff) {\n $pageContentEl[0].scrollTop += scrollDiff;\n }\n }\n\n $sortingItems.each((index, el) => {\n const $currentEl = $(el);\n if ($currentEl[0] === $sortingEl[0]) return;\n const currentElOffset = $currentEl[0].offsetTop;\n const currentElHeight = $currentEl.height();\n const sortingElOffset = sortingElOffsetLocal + translate;\n\n if ((sortingElOffset >= currentElOffset - (currentElHeight / 2)) && $sortingEl.index() < $currentEl.index()) {\n $currentEl.transform(`translate3d(0, ${-sortingElHeight}px,0)`);\n $insertAfterEl = $currentEl;\n $insertBeforeEl = undefined;\n } else if ((sortingElOffset <= currentElOffset + (currentElHeight / 2)) && $sortingEl.index() > $currentEl.index()) {\n $currentEl.transform(`translate3d(0, ${sortingElHeight}px,0)`);\n $insertAfterEl = undefined;\n if (!$insertBeforeEl) $insertBeforeEl = $currentEl;\n } else {\n $currentEl.transform('translate3d(0, 0%,0)');\n }\n });\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n if (isTouched && !isMoved) {\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n if (wasTapHold) {\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n if (app.panel) app.panel.allowOpen = true;\n if (app.swipeout) app.swipeout.allow = true;\n\n $sortingItems.transform('');\n $sortingEl.removeClass('sorting');\n $sortableContainer.removeClass('sortable-sorting');\n\n let indexTo;\n if ($insertAfterEl) indexTo = $insertAfterEl.index();\n else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();\n\n let moveElements = $sortableContainer.dataset().sortableMoveElements;\n if (typeof moveElements === 'undefined') {\n moveElements = app.params.sortable.moveElements;\n }\n\n if (moveElements) {\n if ($insertAfterEl) {\n $sortingEl.insertAfter($insertAfterEl);\n }\n if ($insertBeforeEl) {\n $sortingEl.insertBefore($insertBeforeEl);\n }\n }\n\n if (($insertAfterEl || $insertBeforeEl)\n && $sortableContainer.hasClass('virtual-list')\n ) {\n indexFrom = $sortingEl[0].f7VirtualListIndex;\n if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');\n if ($insertBeforeEl) {\n indexTo = $insertBeforeEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');\n } else {\n indexTo = $insertAfterEl[0].f7VirtualListIndex;\n if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');\n }\n if (indexTo !== null) indexTo = parseInt(indexTo, 10);\n else indexTo = undefined;\n\n const virtualList = $sortableContainer[0].f7VirtualList;\n\n if (indexFrom) indexFrom = parseInt(indexFrom, 10);\n if (indexTo) indexTo = parseInt(indexTo, 10);\n if (virtualList) virtualList.moveItem(indexFrom, indexTo);\n }\n if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {\n $sortingEl.trigger('sortable:sort', { from: indexFrom, to: indexTo });\n app.emit('sortableSort', $sortingEl[0], { from: indexFrom, to: indexTo, el: $sortingEl[0] }, $sortableContainer[0]);\n }\n\n $insertBeforeEl = undefined;\n $insertAfterEl = undefined;\n isTouched = false;\n isMoved = false;\n }\n\n const activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n\n $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n\n $(document).on('taphold', '.sortable-tap-hold', (e, pointerEvent) => {\n handleTouchStart(pointerEvent, true);\n });\n },\n enable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.addClass('sortable-enabled');\n $el.trigger('sortable:enable');\n app.emit('sortableEnable', $el[0]);\n },\n disable(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n $el.removeClass('sortable-enabled');\n $el.trigger('sortable:disable');\n app.emit('sortableDisable', $el[0]);\n },\n toggle(el = '.list.sortable') {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('sortable-enabled')) {\n app.sortable.disable($el);\n } else {\n app.sortable.enable($el);\n }\n },\n};\nexport default {\n name: 'sortable',\n params: {\n sortable: {\n moveElements: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n sortable: {\n init: Sortable.init.bind(app),\n enable: Sortable.enable.bind(app),\n disable: Sortable.disable.bind(app),\n toggle: Sortable.toggle.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n if (!app.params.sortable) return;\n app.sortable.init();\n },\n },\n clicks: {\n '.sortable-enable': function enable($clickedEl, data = {}) {\n const app = this;\n app.sortable.enable(data.sortable);\n },\n '.sortable-disable': function disable($clickedEl, data = {}) {\n const app = this;\n app.sortable.disable(data.sortable);\n },\n '.sortable-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n app.sortable.toggle(data.sortable);\n },\n },\n};\n","import $ from 'dom7';\nimport { document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst Swipeout = {\n init() {\n const app = this;\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchStartTime;\n let touchesDiff;\n let $swipeoutEl;\n let $swipeoutContent;\n let $actionsRight;\n let $actionsLeft;\n let actionsLeftWidth;\n let actionsRightWidth;\n let translate;\n let opened;\n let openedActionsSide;\n let $leftButtons;\n let $rightButtons;\n let direction;\n let $overswipeLeftButton;\n let $overswipeRightButton;\n let overswipeLeft;\n let overswipeRight;\n\n function handleTouchStart(e) {\n if (!Swipeout.allow) return;\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchStartTime = (new Date()).getTime();\n $swipeoutEl = $(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n\n if (!isMoved) {\n if ($('.list.sortable-opened').length > 0) return;\n $swipeoutContent = $swipeoutEl.find('.swipeout-content');\n $actionsRight = $swipeoutEl.find('.swipeout-actions-right');\n $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');\n actionsLeftWidth = null;\n actionsRightWidth = null;\n $leftButtons = null;\n $rightButtons = null;\n $overswipeRightButton = null;\n $overswipeLeftButton = null;\n if ($actionsLeft.length > 0) {\n actionsLeftWidth = $actionsLeft.outerWidth();\n $leftButtons = $actionsLeft.children('a');\n $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');\n }\n if ($actionsRight.length > 0) {\n actionsRightWidth = $actionsRight.outerWidth();\n $rightButtons = $actionsRight.children('a');\n $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');\n }\n opened = $swipeoutEl.hasClass('swipeout-opened');\n if (opened) {\n openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';\n }\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (!app.params.swipeout.noFollow) {\n $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n $swipeoutEl.removeClass('swipeout-opened');\n }\n }\n isMoved = true;\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n translate = touchesDiff;\n\n if (opened) {\n if (openedActionsSide === 'right') translate -= actionsRightWidth;\n else translate += actionsLeftWidth;\n }\n\n if (\n (translate > 0 && $actionsLeft.length === 0)\n || (translate < 0 && $actionsRight.length === 0)\n ) {\n if (!opened) {\n isTouched = false;\n isMoved = false;\n $swipeoutContent.transform('');\n if ($rightButtons && $rightButtons.length > 0) {\n $rightButtons.transform('');\n }\n if ($leftButtons && $leftButtons.length > 0) {\n $leftButtons.transform('');\n }\n return;\n }\n translate = 0;\n }\n\n if (translate < 0) direction = 'to-left';\n else if (translate > 0) direction = 'to-right';\n else if (!direction) direction = 'to-left';\n\n let buttonOffset;\n let progress;\n\n e.f7PreventSwipePanel = true;\n if (app.params.swipeout.noFollow) {\n if (opened) {\n if (openedActionsSide === 'right' && touchesDiff > 0) {\n app.swipeout.close($swipeoutEl);\n }\n if (openedActionsSide === 'left' && touchesDiff < 0) {\n app.swipeout.close($swipeoutEl);\n }\n } else {\n if (touchesDiff < 0 && $actionsRight.length > 0) {\n app.swipeout.open($swipeoutEl, 'right');\n }\n if (touchesDiff > 0 && $actionsLeft.length > 0) {\n app.swipeout.open($swipeoutEl, 'left');\n }\n }\n isTouched = false;\n isMoved = false;\n return;\n }\n overswipeLeft = false;\n overswipeRight = false;\n if ($actionsRight.length > 0) {\n // Show right actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsRightWidth;\n if (buttonTranslate < -actionsRightWidth) {\n buttonTranslate = -actionsRightWidth - ((-buttonTranslate - actionsRightWidth) ** 0.8);\n translate = buttonTranslate;\n if ($overswipeRightButton.length > 0) {\n overswipeRight = true;\n }\n }\n if (direction !== 'to-left') {\n progress = 0;\n buttonTranslate = 0;\n }\n $rightButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {\n $buttonEl.css({ left: `${overswipeRight ? -buttonOffset : 0}px` });\n if (overswipeRight) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n $buttonEl.transform(`translate3d(${buttonTranslate - (buttonOffset * (1 + Math.max(progress, -1)))}px,0,0)`);\n });\n }\n if ($actionsLeft.length > 0) {\n // Show left actions\n let buttonTranslate = translate;\n progress = buttonTranslate / actionsLeftWidth;\n if (buttonTranslate > actionsLeftWidth) {\n buttonTranslate = actionsLeftWidth + ((buttonTranslate - actionsLeftWidth) ** 0.8);\n translate = buttonTranslate;\n if ($overswipeLeftButton.length > 0) {\n overswipeLeft = true;\n }\n }\n if (direction !== 'to-right') {\n buttonTranslate = 0;\n progress = 0;\n }\n $leftButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {\n $buttonEl.css({ left: `${overswipeLeft ? buttonOffset : 0}px` });\n if (overswipeLeft) {\n if (!$buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeenter');\n app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);\n }\n $buttonEl.addClass('swipeout-overswipe-active');\n } else {\n if ($buttonEl.hasClass('swipeout-overswipe-active')) {\n $swipeoutEl.trigger('swipeout:overswipeexit');\n app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);\n }\n $buttonEl.removeClass('swipeout-overswipe-active');\n }\n }\n if ($leftButtons.length > 1) {\n $buttonEl.css('z-index', $leftButtons.length - index);\n }\n $buttonEl.transform(`translate3d(${buttonTranslate + (buttonOffset * (1 - Math.min(progress, 1)))}px,0,0)`);\n });\n }\n $swipeoutEl.trigger('swipeout', progress);\n app.emit('swipeout', $swipeoutEl[0], progress);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n isTouched = false;\n isMoved = false;\n const timeDiff = (new Date()).getTime() - touchStartTime;\n const $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;\n const actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;\n let action;\n let $buttons;\n let i;\n\n if (\n (\n timeDiff < 300\n && (\n (touchesDiff < -10 && direction === 'to-left')\n || (touchesDiff > 10 && direction === 'to-right')\n )\n )\n || (\n timeDiff >= 300\n && (Math.abs(translate) > actionsWidth / 2)\n )\n ) {\n action = 'open';\n } else {\n action = 'close';\n }\n if (timeDiff < 300) {\n if (Math.abs(translate) === 0) action = 'close';\n if (Math.abs(translate) === actionsWidth) action = 'open';\n }\n\n if (action === 'open') {\n Swipeout.el = $swipeoutEl[0];\n $swipeoutEl.trigger('swipeout:open');\n app.emit('swipeoutOpen', $swipeoutEl[0]);\n $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');\n const newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;\n $swipeoutContent.transform(`translate3d(${newTranslate}px,0,0)`);\n $actions.addClass('swipeout-actions-opened');\n $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;\n if ($buttons) {\n for (i = 0; i < $buttons.length; i += 1) {\n $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);\n }\n }\n if (overswipeRight) {\n $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n if (overswipeLeft) {\n $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');\n }\n } else {\n $swipeoutEl.trigger('swipeout:close');\n app.emit('swipeoutClose', $swipeoutEl[0]);\n Swipeout.el = undefined;\n $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');\n $swipeoutContent.transform('');\n $actions.removeClass('swipeout-actions-opened');\n }\n\n let buttonOffset;\n if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {\n $leftButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;\n }\n $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);\n });\n }\n if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {\n $rightButtons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n buttonOffset = buttonEl.f7SwipeoutButtonOffset;\n if (typeof buttonOffset === 'undefined') {\n $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;\n }\n $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);\n });\n }\n $swipeoutContent.transitionEnd(() => {\n if ((opened && action === 'open') || (!opened && action === 'close')) return;\n $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');\n app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);\n $swipeoutEl.removeClass('swipeout-transitioning');\n if (opened && action === 'close') {\n if ($actionsRight.length > 0) {\n $rightButtons.transform('');\n }\n if ($actionsLeft.length > 0) {\n $leftButtons.transform('');\n }\n }\n });\n }\n\n const passiveListener = app.support.passiveListener ? { passive: true } : false;\n\n app.on('touchstart', (e) => {\n if (Swipeout.el) {\n const $targetEl = $(e.target);\n if (!(\n $(Swipeout.el).is($targetEl[0])\n || $targetEl.parents('.swipeout').is(Swipeout.el)\n || $targetEl.hasClass('modal-in')\n || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0\n || $targetEl.hasClass('actions-modal')\n || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0\n )) {\n app.swipeout.close(Swipeout.el);\n }\n }\n });\n $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n },\n allow: true,\n el: undefined,\n open(...args) {\n const app = this;\n let [el, side, callback] = args;\n if (typeof args[1] === 'function') {\n [el, callback, side] = args;\n }\n const $el = $(el).eq(0);\n\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;\n if (!side) {\n if ($el.find('.swipeout-actions-right').length > 0) side = 'right';\n else side = 'left';\n }\n const $swipeoutActions = $el.find(`.swipeout-actions-${side}`);\n const $swipeoutContent = $el.find('.swipeout-content');\n if ($swipeoutActions.length === 0) return;\n $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');\n app.emit('swipeoutOpen', $el[0]);\n $swipeoutActions.addClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n const translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;\n if ($buttons.length > 1) {\n $buttons.each((buttonIndex, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n });\n }\n $el.addClass('swipeout-transitioning');\n $swipeoutContent.transitionEnd(() => {\n $el.trigger('swipeout:opened');\n app.emit('swipeoutOpened', $el[0]);\n if (callback) callback.call($el[0]);\n });\n Utils.nextFrame(() => {\n $buttons.transform(`translate3d(${translate}px,0,0)`);\n $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);\n });\n Swipeout.el = $el[0];\n },\n close(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n if (!$el.hasClass('swipeout-opened')) return;\n const side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';\n const $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');\n const $buttons = $swipeoutActions.children('a');\n const swipeoutActionsWidth = $swipeoutActions.outerWidth();\n Swipeout.allow = false;\n $el.trigger('swipeout:close');\n app.emit('swipeoutClose', $el[0]);\n $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');\n\n let closeTimeout;\n function onSwipeoutClose() {\n Swipeout.allow = true;\n if ($el.hasClass('swipeout-opened')) return;\n $el.removeClass('swipeout-transitioning');\n $buttons.transform('');\n $el.trigger('swipeout:closed');\n app.emit('swipeoutClosed', $el[0]);\n if (callback) callback.call($el[0]);\n if (closeTimeout) clearTimeout(closeTimeout);\n }\n $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);\n closeTimeout = setTimeout(onSwipeoutClose, 500);\n\n $buttons.each((index, buttonEl) => {\n const $buttonEl = $(buttonEl);\n if (side === 'right') {\n $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);\n } else {\n $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);\n }\n $buttonEl.css({ left: '0px' }).removeClass('swipeout-overswipe-active');\n });\n if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;\n },\n delete(el, callback) {\n const app = this;\n const $el = $(el).eq(0);\n if ($el.length === 0) return;\n Swipeout.el = undefined;\n $el.trigger('swipeout:delete');\n app.emit('swipeoutDelete', $el[0]);\n $el.css({ height: `${$el.outerHeight()}px` });\n $el.transitionEnd(() => {\n $el.trigger('swipeout:deleted');\n app.emit('swipeoutDeleted', $el[0]);\n if (callback) callback.call($el[0]);\n if ($el.parents('.virtual-list').length > 0) {\n const virtualList = $el.parents('.virtual-list')[0].f7VirtualList;\n const virtualIndex = $el[0].f7VirtualListIndex;\n if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);\n } else if (app.params.swipeout.removeElements) {\n if (app.params.swipeout.removeElementsWithTimeout) {\n setTimeout(() => {\n $el.remove();\n }, app.params.swipeout.removeElementsTimeout);\n } else {\n $el.remove();\n }\n } else {\n $el.removeClass('swipeout-deleting swipeout-transitioning');\n }\n });\n // eslint-disable-next-line\n // $el[0]._clientLeft = $el[0].clientLeft;\n Utils.nextFrame(() => {\n $el\n .addClass('swipeout-deleting swipeout-transitioning')\n .css({ height: '0px' })\n .find('.swipeout-content')\n .transform('translate3d(-100%,0,0)');\n });\n },\n};\nexport default {\n name: 'swipeout',\n params: {\n swipeout: {\n actionsNoFold: false,\n noFollow: false,\n removeElements: true,\n removeElementsWithTimeout: false,\n removeElementsTimeout: 0,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n swipeout: {\n init: Swipeout.init.bind(app),\n open: Swipeout.open.bind(app),\n close: Swipeout.close.bind(app),\n delete: Swipeout.delete.bind(app),\n },\n });\n Object.defineProperty(app.swipeout, 'el', {\n enumerable: true,\n configurable: true,\n get: () => Swipeout.el,\n set(el) {\n Swipeout.el = el;\n },\n });\n Object.defineProperty(app.swipeout, 'allow', {\n enumerable: true,\n configurable: true,\n get: () => Swipeout.allow,\n set(allow) {\n Swipeout.allow = allow;\n },\n });\n },\n clicks: {\n '.swipeout-open': function openSwipeout($clickedEl, data = {}) {\n const app = this;\n app.swipeout.open(data.swipeout, data.side);\n },\n '.swipeout-close': function closeSwipeout($clickedEl) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n app.swipeout.close($swipeoutEl);\n },\n '.swipeout-delete': function deleteSwipeout($clickedEl, data = {}) {\n const app = this;\n const $swipeoutEl = $clickedEl.closest('.swipeout');\n if ($swipeoutEl.length === 0) return;\n const { confirm, confirmTitle } = data;\n if (data.confirm) {\n app.dialog.confirm(confirm, confirmTitle, () => {\n app.swipeout.delete($swipeoutEl);\n });\n } else {\n app.swipeout.delete($swipeoutEl);\n }\n },\n },\n on: {\n init() {\n const app = this;\n if (!app.params.swipeout) return;\n app.swipeout.init();\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Accordion = {\n toggleClicked($clickedEl) {\n const app = this;\n let $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);\n if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);\n\n const $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);\n if ($accordionContent.length) {\n if ($accordionContent.parents($accordionItemEl).length) return;\n }\n\n if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;\n app.accordion.toggle($accordionItemEl);\n },\n open(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeopen', { prevent }, prevent);\n app.emit('accordionBeforeOpen', $el[0], prevent);\n if (prevented) return;\n const $list = $el.parents('.accordion-list').eq(0);\n let $contentEl = $el.children('.accordion-item-content');\n $contentEl.removeAttr('aria-hidden');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n if ($contentEl.length === 0) return;\n const $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');\n if ($openedItem.length > 0) {\n app.accordion.close($openedItem);\n }\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n $el.trigger('accordion:open');\n $el.addClass('accordion-item-opened');\n app.emit('accordionOpen', $el[0]);\n },\n close(el) {\n const app = this;\n const $el = $(el);\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n $el.trigger('accordion:beforeclose', { prevent }, prevent);\n app.emit('accordionBeforeClose', $el[0], prevent);\n if (prevented) return;\n let $contentEl = $el.children('.accordion-item-content');\n if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');\n $el.removeClass('accordion-item-opened');\n $contentEl.attr('aria-hidden', true);\n $contentEl.transition(0);\n $contentEl.css('height', `${$contentEl[0].scrollHeight}px`);\n // Close\n $contentEl.transitionEnd(() => {\n if ($el.hasClass('accordion-item-opened')) {\n $contentEl.transition(0);\n $contentEl.css('height', 'auto');\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $el.trigger('accordion:opened');\n app.emit('accordionOpened', $el[0]);\n });\n } else {\n $contentEl.css('height', '');\n $el.trigger('accordion:closed');\n app.emit('accordionClosed', $el[0]);\n }\n });\n Utils.nextFrame(() => {\n $contentEl.transition('');\n $contentEl.css('height', '');\n $el.trigger('accordion:close');\n app.emit('accordionClose', $el[0]);\n });\n },\n toggle(el) {\n const app = this;\n const $el = $(el);\n if ($el.length === 0) return;\n if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);\n else app.accordion.open(el);\n },\n};\n\nexport default {\n name: 'accordion',\n create() {\n const app = this;\n Utils.extend(app, {\n accordion: {\n open: Accordion.open.bind(app),\n close: Accordion.close.bind(app),\n toggle: Accordion.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {\n const app = this;\n Accordion.toggleClicked.call(app, $clickedEl);\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Device from '../../utils/device';\n\nclass VirtualList extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const vl = this;\n\n let defaultHeight;\n if (app.theme === 'md') {\n defaultHeight = 48;\n } else if (app.theme === 'ios') {\n defaultHeight = 44;\n } else if (app.theme === 'aurora') {\n defaultHeight = 38;\n }\n\n const defaults = {\n cols: 1,\n height: defaultHeight,\n cache: true,\n dynamicHeightBufferSize: 1,\n showFilteredItemsOnly: false,\n renderExternal: undefined,\n setListHeight: true,\n searchByItem: undefined,\n searchAll: undefined,\n itemTemplate: undefined,\n ul: null,\n createUl: true,\n scrollableParentEl: undefined,\n renderItem(item) {\n return `\n <li>\n <div class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">${item}</div>\n </div>\n </div>\n </li>\n `.trim();\n },\n on: {},\n };\n\n // Extend defaults with modules params\n vl.useModulesParams(defaults);\n\n vl.params = Utils.extend(defaults, params);\n if (vl.params.height === undefined || !vl.params.height) {\n vl.params.height = defaultHeight;\n }\n\n vl.$el = $(params.el);\n vl.el = vl.$el[0];\n\n if (vl.$el.length === 0) return undefined;\n vl.$el[0].f7VirtualList = vl;\n\n vl.items = vl.params.items;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n }\n if (vl.params.itemTemplate) {\n if (typeof vl.params.itemTemplate === 'string') vl.renderItem = app.t7.compile(vl.params.itemTemplate);\n else if (typeof vl.params.itemTemplate === 'function') vl.renderItem = vl.params.itemTemplate;\n } else if (vl.params.renderItem) {\n vl.renderItem = vl.params.renderItem;\n }\n vl.$pageContentEl = vl.$el.parents('.page-content');\n vl.pageContentEl = vl.$pageContentEl[0];\n\n vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;\n if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {\n vl.$scrollableParentEl = vl.$pageContentEl;\n }\n vl.scrollableParentEl = vl.$scrollableParentEl[0];\n\n // Bad scroll\n if (typeof vl.params.updatableScroll !== 'undefined') {\n vl.updatableScroll = vl.params.updatableScroll;\n } else {\n vl.updatableScroll = true;\n if (Device.ios && Device.osVersion.split('.')[0] < 8) {\n vl.updatableScroll = false;\n }\n }\n\n // Append <ul>\n const ul = vl.params.ul;\n vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');\n if (vl.$ul.length === 0 && vl.params.createUl) {\n vl.$el.append('<ul></ul>');\n vl.$ul = vl.$el.children('ul');\n }\n vl.ul = vl.$ul[0];\n\n let $itemsWrapEl;\n if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;\n else $itemsWrapEl = vl.$ul;\n\n Utils.extend(vl, {\n $itemsWrapEl,\n itemsWrapEl: $itemsWrapEl[0],\n // DOM cached items\n domCache: {},\n displayDomCache: {},\n // Temporary DOM Element\n tempDomElement: document.createElement('ul'),\n // Last repain position\n lastRepaintY: null,\n // Fragment\n fragment: document.createDocumentFragment(),\n // Props\n pageHeight: undefined,\n rowsPerScreen: undefined,\n rowsBefore: undefined,\n rowsAfter: undefined,\n rowsToRender: undefined,\n maxBufferHeight: 0,\n listHeight: undefined,\n dynamicHeight: typeof vl.params.height === 'function',\n });\n\n // Install Modules\n vl.useModules();\n\n // Attach events\n const handleScrollBound = vl.handleScroll.bind(vl);\n const handleResizeBound = vl.handleResize.bind(vl);\n let $pageEl;\n let $tabEl;\n let $panelEl;\n let $popupEl;\n vl.attachEvents = function attachEvents() {\n $pageEl = vl.$el.parents('.page').eq(0);\n $tabEl = vl.$el.parents('.tab').eq(0);\n $panelEl = vl.$el.parents('.panel').eq(0);\n $popupEl = vl.$el.parents('.popup').eq(0);\n\n vl.$scrollableParentEl.on('scroll', handleScrollBound);\n if ($pageEl) $pageEl.on('page:reinit', handleResizeBound);\n if ($tabEl) $tabEl.on('tab:show', handleResizeBound);\n if ($panelEl) $panelEl.on('panel:open', handleResizeBound);\n if ($popupEl) $popupEl.on('popup:open', handleResizeBound);\n app.on('resize', handleResizeBound);\n };\n vl.detachEvents = function attachEvents() {\n vl.$scrollableParentEl.off('scroll', handleScrollBound);\n if ($pageEl) $pageEl.off('page:reinit', handleResizeBound);\n if ($tabEl) $tabEl.off('tab:show', handleResizeBound);\n if ($panelEl) $panelEl.off('panel:open', handleResizeBound);\n if ($popupEl) $popupEl.off('popup:open', handleResizeBound);\n app.off('resize', handleResizeBound);\n };\n // Init\n vl.init();\n\n return vl;\n }\n\n setListSize() {\n const vl = this;\n const items = vl.filteredItems || vl.items;\n vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;\n if (vl.dynamicHeight) {\n vl.listHeight = 0;\n vl.heights = [];\n for (let i = 0; i < items.length; i += 1) {\n const itemHeight = vl.params.height(items[i]);\n vl.listHeight += itemHeight;\n vl.heights.push(itemHeight);\n }\n } else {\n vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;\n vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);\n vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;\n vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;\n vl.rowsToRender = (vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter);\n vl.maxBufferHeight = (vl.rowsBefore / 2) * vl.params.height;\n }\n\n if (vl.updatableScroll || vl.params.setListHeight) {\n vl.$itemsWrapEl.css({ height: `${vl.listHeight}px` });\n }\n }\n\n render(force, forceScrollTop) {\n const vl = this;\n if (force) vl.lastRepaintY = null;\n\n let scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);\n\n if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;\n if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || (!vl.updatableScroll && (vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight))) {\n vl.lastRepaintY = scrollTop;\n } else {\n return;\n }\n\n const items = vl.filteredItems || vl.items;\n let fromIndex;\n let toIndex;\n let heightBeforeFirstItem = 0;\n let heightBeforeLastItem = 0;\n if (vl.dynamicHeight) {\n let itemTop = 0;\n let itemHeight;\n vl.maxBufferHeight = vl.pageHeight;\n\n for (let j = 0; j < vl.heights.length; j += 1) {\n itemHeight = vl.heights[j];\n if (typeof fromIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop - (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize)) fromIndex = j;\n else heightBeforeFirstItem += itemHeight;\n }\n\n if (typeof toIndex === 'undefined') {\n if (itemTop + itemHeight >= scrollTop + (vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) || j === vl.heights.length - 1) toIndex = j + 1;\n heightBeforeLastItem += itemHeight;\n }\n itemTop += itemHeight;\n }\n toIndex = Math.min(toIndex, items.length);\n } else {\n fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;\n if (fromIndex < 0) {\n fromIndex = 0;\n }\n toIndex = Math.min(fromIndex + (vl.rowsToRender * vl.params.cols), items.length);\n }\n\n let topPosition;\n const renderExternalItems = [];\n vl.reachEnd = false;\n let i;\n for (i = fromIndex; i < toIndex; i += 1) {\n let itemEl;\n // Define real item index\n const index = vl.items.indexOf(items[i]);\n\n if (i === fromIndex) vl.currentFromIndex = index;\n if (i === toIndex - 1) vl.currentToIndex = index;\n if (vl.filteredItems) {\n if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;\n } else if (index === vl.items.length - 1) vl.reachEnd = true;\n\n // Find items\n if (vl.params.renderExternal) {\n renderExternalItems.push(items[i]);\n } else if (vl.domCache[index]) {\n itemEl = vl.domCache[index];\n itemEl.f7VirtualListIndex = index;\n } else {\n if (vl.renderItem) {\n vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();\n } else {\n vl.tempDomElement.innerHTML = items[i].toString().trim();\n }\n itemEl = vl.tempDomElement.childNodes[0];\n if (vl.params.cache) vl.domCache[index] = itemEl;\n itemEl.f7VirtualListIndex = index;\n }\n\n // Set item top position\n if (i === fromIndex) {\n if (vl.dynamicHeight) {\n topPosition = heightBeforeFirstItem;\n } else {\n topPosition = ((i * vl.params.height) / vl.params.cols);\n }\n }\n if (!vl.params.renderExternal) {\n itemEl.style.top = `${topPosition}px`;\n\n // Before item insert\n vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);\n\n // Append item to fragment\n vl.fragment.appendChild(itemEl);\n }\n }\n\n // Update list height with not updatable scroll\n if (!vl.updatableScroll) {\n if (vl.dynamicHeight) {\n vl.itemsWrapEl.style.height = `${heightBeforeLastItem}px`;\n } else {\n vl.itemsWrapEl.style.height = `${(i * vl.params.height) / vl.params.cols}px`;\n }\n }\n\n // Update list html\n if (vl.params.renderExternal) {\n if (items && items.length === 0) {\n vl.reachEnd = true;\n }\n } else {\n vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);\n vl.itemsWrapEl.innerHTML = '';\n\n vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);\n\n if (items && items.length === 0) {\n vl.reachEnd = true;\n if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;\n } else {\n vl.itemsWrapEl.appendChild(vl.fragment);\n }\n\n vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);\n }\n\n if (typeof forceScrollTop !== 'undefined' && force) {\n vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);\n }\n if (vl.params.renderExternal) {\n vl.params.renderExternal(vl, {\n fromIndex,\n toIndex,\n listHeight: vl.listHeight,\n topPosition,\n items: renderExternalItems,\n });\n }\n }\n\n // Filter\n filterItems(indexes, resetScrollTop = true) {\n const vl = this;\n vl.filteredItems = [];\n for (let i = 0; i < indexes.length; i += 1) {\n vl.filteredItems.push(vl.items[indexes[i]]);\n }\n if (resetScrollTop) {\n vl.$scrollableParentEl[0].scrollTop = 0;\n }\n vl.update();\n }\n\n resetFilter() {\n const vl = this;\n if (vl.params.showFilteredItemsOnly) {\n vl.filteredItems = [];\n } else {\n vl.filteredItems = null;\n delete vl.filteredItems;\n }\n vl.update();\n }\n\n scrollToItem(index) {\n const vl = this;\n if (index > vl.items.length) return false;\n let itemTop = 0;\n if (vl.dynamicHeight) {\n for (let i = 0; i < index; i += 1) {\n itemTop += vl.heights[i];\n }\n } else {\n itemTop = index * vl.params.height;\n }\n const listTop = vl.$el[0].offsetTop;\n vl.render(true, (listTop + itemTop) - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));\n return true;\n }\n\n handleScroll() {\n const vl = this;\n vl.render();\n }\n\n // Handle resize event\n isVisible() {\n const vl = this;\n return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);\n }\n\n handleResize() {\n const vl = this;\n if (vl.isVisible()) {\n vl.setListSize();\n vl.render(true);\n }\n }\n\n // Append\n appendItems(items) {\n const vl = this;\n for (let i = 0; i < items.length; i += 1) {\n vl.items.push(items[i]);\n }\n vl.update();\n }\n\n appendItem(item) {\n const vl = this;\n vl.appendItems([item]);\n }\n\n // Replace\n replaceAllItems(items) {\n const vl = this;\n vl.items = items;\n delete vl.filteredItems;\n vl.domCache = {};\n vl.update();\n }\n\n replaceItem(index, item) {\n const vl = this;\n vl.items[index] = item;\n if (vl.params.cache) delete vl.domCache[index];\n vl.update();\n }\n\n // Prepend\n prependItems(items) {\n const vl = this;\n for (let i = items.length - 1; i >= 0; i -= 1) {\n vl.items.unshift(items[i]);\n }\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n prependItem(item) {\n const vl = this;\n vl.prependItems([item]);\n }\n\n // Move\n moveItem(from, to) {\n const vl = this;\n const fromIndex = from;\n let toIndex = to;\n if (fromIndex === toIndex) return;\n // remove item from array\n const item = vl.items.splice(fromIndex, 1)[0];\n if (toIndex >= vl.items.length) {\n // Add item to the end\n vl.items.push(item);\n toIndex = vl.items.length - 1;\n } else {\n // Add item to new index\n vl.items.splice(toIndex, 0, item);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n const leftIndex = fromIndex < toIndex ? fromIndex : toIndex;\n const rightIndex = fromIndex < toIndex ? toIndex : fromIndex;\n const indexShift = fromIndex < toIndex ? -1 : 1;\n if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];\n if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];\n if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Insert before\n insertItemBefore(index, item) {\n const vl = this;\n if (index === 0) {\n vl.prependItem(item);\n return;\n }\n if (index >= vl.items.length) {\n vl.appendItem(item);\n return;\n }\n vl.items.splice(index, 0, item);\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex >= index) {\n newCache[cachedIndex + 1] = vl.domCache[cachedIndex];\n }\n });\n vl.domCache = newCache;\n }\n vl.update();\n }\n\n // Delete\n deleteItems(indexes) {\n const vl = this;\n let prevIndex;\n let indexShift = 0;\n for (let i = 0; i < indexes.length; i += 1) {\n let index = indexes[i];\n if (typeof prevIndex !== 'undefined') {\n if (index > prevIndex) {\n indexShift = -i;\n }\n }\n index += indexShift;\n prevIndex = indexes[i];\n // Delete item\n const deletedItem = vl.items.splice(index, 1)[0];\n\n // Delete from filtered\n if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {\n vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);\n }\n // Update cache\n if (vl.params.cache) {\n const newCache = {};\n Object.keys(vl.domCache).forEach((cached) => {\n const cachedIndex = parseInt(cached, 10);\n if (cachedIndex === index) {\n delete vl.domCache[index];\n } else if (parseInt(cached, 10) > index) {\n newCache[cachedIndex - 1] = vl.domCache[cached];\n } else {\n newCache[cachedIndex] = vl.domCache[cached];\n }\n });\n vl.domCache = newCache;\n }\n }\n vl.update();\n }\n\n deleteAllItems() {\n const vl = this;\n vl.items = [];\n delete vl.filteredItems;\n if (vl.params.cache) vl.domCache = {};\n vl.update();\n }\n\n deleteItem(index) {\n const vl = this;\n vl.deleteItems([index]);\n }\n\n // Clear cache\n clearCache() {\n const vl = this;\n vl.domCache = {};\n }\n\n // Update Virtual List\n update(deleteCache) {\n const vl = this;\n if (deleteCache && vl.params.cache) {\n vl.domCache = {};\n }\n vl.setListSize();\n vl.render(true);\n }\n\n init() {\n const vl = this;\n vl.attachEvents();\n vl.setListSize();\n vl.render();\n }\n\n destroy() {\n let vl = this;\n vl.detachEvents();\n vl.$el[0].f7VirtualList = null;\n delete vl.$el[0].f7VirtualList;\n Utils.deleteProps(vl);\n vl = null;\n }\n}\n\nexport default VirtualList;\n","import VirtualList from './virtual-list-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'virtualList',\n static: {\n VirtualList,\n },\n create() {\n const app = this;\n app.virtualList = ConstructorMethods({\n defaultSelector: '.virtual-list',\n constructor: VirtualList,\n app,\n domProp: 'f7VirtualList',\n });\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass ListIndex extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const index = this;\n\n const defaults = {\n el: null, // where to render indexes\n listEl: null, // list el to generate indexes\n indexes: 'auto', // or array of indexes\n iosItemHeight: 14,\n mdItemHeight: 14,\n auroraItemHeight: 14,\n scrollList: true,\n label: false,\n // eslint-disable-next-line\n renderItem(itemContent, itemIndex) {\n return `\n <li>${itemContent}</li>\n `.trim();\n },\n renderSkipPlaceholder() {\n return '<li class=\"list-index-skip-placeholder\"></li>';\n },\n on: {},\n };\n\n // Extend defaults with modules params\n index.useModulesParams(defaults);\n\n index.params = Utils.extend(defaults, params);\n\n let $el;\n let $listEl;\n let $pageContentEl;\n let $ul;\n\n if (index.params.el) {\n $el = $(index.params.el);\n } else {\n return index;\n }\n\n if ($el[0].f7ListIndex) {\n return $el[0].f7ListIndex;\n }\n\n $ul = $el.find('ul');\n if ($ul.length === 0) {\n $ul = $('<ul></ul>');\n $el.append($ul);\n }\n\n if (index.params.listEl) {\n $listEl = $(index.params.listEl);\n }\n\n if (index.params.indexes === 'auto' && !$listEl) {\n return index;\n }\n\n if ($listEl) {\n $pageContentEl = $listEl.parents('.page-content').eq(0);\n } else {\n $pageContentEl = $el.siblings('.page-content').eq(0);\n if ($pageContentEl.length === 0) {\n $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);\n }\n }\n\n $el[0].f7ListIndex = index;\n\n Utils.extend(index, {\n app,\n $el,\n el: $el && $el[0],\n $ul,\n ul: $ul && $ul[0],\n $listEl,\n listEl: $listEl && $listEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl && $pageContentEl[0],\n indexes: params.indexes,\n height: 0,\n skipRate: 0,\n });\n\n // Install Modules\n index.useModules();\n\n // Attach events\n function handleResize() {\n const height = { index };\n index.calcSize();\n if (height !== index.height) {\n index.render();\n }\n }\n\n function handleClick(e) {\n const $clickedLi = $(e.target).closest('li');\n if (!$clickedLi.length) return;\n\n let itemIndex = $clickedLi.index();\n if (index.skipRate > 0) {\n const percentage = itemIndex / ($clickedLi.siblings('li').length - 1);\n itemIndex = Math.round((index.indexes.length - 1) * percentage);\n }\n const itemContent = index.indexes[itemIndex];\n\n index.$el.trigger('listindex:click', { content: itemContent, index: itemIndex });\n index.emit('local::click listIndexClick', index, itemContent, itemIndex);\n index.$el.trigger('listindex:select', { content: itemContent, index: itemIndex });\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n const touchesStart = {};\n let isTouched;\n let isMoved;\n let topPoint;\n let bottomPoint;\n let $labelEl;\n let previousIndex = null;\n function handleTouchStart(e) {\n const $children = $ul.children();\n if (!$children.length) return;\n topPoint = $children[0].getBoundingClientRect().top;\n bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isMoved = false;\n previousIndex = null;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n if (!isMoved && index.params.label) {\n $labelEl = $('<span class=\"list-index-label\"></span>');\n $el.append($labelEl);\n }\n isMoved = true;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n\n let percentage = (pageY - topPoint) / (bottomPoint - topPoint);\n percentage = Math.min(Math.max(percentage, 0), 1);\n\n const itemIndex = Math.round((index.indexes.length - 1) * percentage);\n const itemContent = index.indexes[itemIndex];\n\n\n const ulHeight = bottomPoint - topPoint;\n const bubbleBottom = ((index.height - ulHeight) / 2) + ((1 - percentage) * ulHeight);\n\n if (itemIndex !== previousIndex) {\n if (index.params.label) {\n $labelEl.html(itemContent).transform(`translateY(-${bubbleBottom}px)`);\n }\n\n if (index.$listEl && index.params.scrollList) {\n index.scrollListToIndex(itemContent, itemIndex);\n }\n }\n\n previousIndex = itemIndex;\n\n index.$el.trigger('listindex:select');\n index.emit('local::select listIndexSelect', index, itemContent, itemIndex);\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n isMoved = false;\n if (index.params.label) {\n if ($labelEl) $labelEl.remove();\n $labelEl = undefined;\n }\n }\n const passiveListener = app.support.passiveListener ? { passive: true } : false;\n index.attachEvents = function attachEvents() {\n $el.parents('.tab').on('tab:show', handleResize);\n $el.parents('.page').on('page:reinit', handleResize);\n $el.parents('.panel').on('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .on('modal:open', handleResize);\n app.on('resize', handleResize);\n\n $el.on('click', handleClick);\n $el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n };\n index.detachEvents = function attachEvents() {\n $el.parents('.tab').off('tab:show', handleResize);\n $el.parents('.page').off('page:reinit', handleResize);\n $el.parents('.panel').off('panel:open', handleResize);\n $el\n .parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast')\n .off('modal:open', handleResize);\n app.off('resize', handleResize);\n\n $el.off('click', handleClick);\n $el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n };\n // Init\n index.init();\n\n return index;\n }\n // eslint-disable-next-line\n scrollListToIndex(itemContent, itemIndex) {\n const index = this;\n const { $listEl, $pageContentEl, app } = index;\n if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;\n\n let $scrollToEl;\n $listEl.find('.list-group-title, .item-divider').each((elIndex, el) => {\n if ($scrollToEl) return;\n const $el = $(el);\n if ($el.text() === itemContent) {\n $scrollToEl = $el;\n }\n });\n if (!$scrollToEl || $scrollToEl.length === 0) return index;\n\n const parentTop = $scrollToEl.parent().offset().top;\n let paddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const scrollTop = $pageContentEl[0].scrollTop;\n const scrollToElTop = $scrollToEl.offset().top;\n if ($pageContentEl.parents('.page-with-navbar-large').length) {\n const navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));\n const $titleLargeEl = $(navbarInnerEl).find('.title-large');\n if ($titleLargeEl.length) {\n paddingTop -= $titleLargeEl[0].offsetHeight || 0;\n }\n }\n\n if (parentTop <= paddingTop) {\n $pageContentEl.scrollTop((parentTop + scrollTop) - paddingTop);\n } else {\n $pageContentEl.scrollTop((scrollToElTop + scrollTop) - paddingTop);\n }\n return index;\n }\n\n renderSkipPlaceholder() {\n const index = this;\n return index.params.renderSkipPlaceholder.call(index);\n }\n\n renderItem(itemContent, itemIndex) {\n const index = this;\n return index.params.renderItem.call(index, itemContent, itemIndex);\n }\n\n render() {\n const index = this;\n const { $ul, indexes, skipRate } = index;\n let wasSkipped;\n\n const html = indexes.map((itemContent, itemIndex) => {\n if (itemIndex % skipRate !== 0 && skipRate > 0) {\n wasSkipped = true;\n return '';\n }\n let itemHtml = index.renderItem(itemContent, itemIndex);\n if (wasSkipped) {\n itemHtml = index.renderSkipPlaceholder() + itemHtml;\n }\n wasSkipped = false;\n return itemHtml;\n }).join('');\n\n $ul.html(html);\n\n return index;\n }\n\n calcSize() {\n const index = this;\n const { app, params, el, indexes } = index;\n const height = el.offsetHeight;\n const itemHeight = params[`${app.theme}ItemHeight`];\n const maxItems = Math.floor(height / itemHeight);\n const items = indexes.length;\n let skipRate = 0;\n if (items > maxItems) {\n skipRate = Math.ceil(((items * 2) - 1) / maxItems);\n }\n\n index.height = height;\n index.skipRate = skipRate;\n\n return index;\n }\n\n calcIndexes() {\n const index = this;\n if (index.params.indexes === 'auto') {\n index.indexes = [];\n\n index.$listEl.find('.list-group-title, .item-divider').each((elIndex, el) => {\n const elContent = $(el).text();\n if (index.indexes.indexOf(elContent) < 0) {\n index.indexes.push(elContent);\n }\n });\n } else {\n index.indexes = index.params.indexes;\n }\n return index;\n }\n\n update() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n\n return index;\n }\n\n init() {\n const index = this;\n index.calcIndexes();\n index.calcSize();\n index.render();\n index.attachEvents();\n }\n\n destroy() {\n let index = this;\n index.$el.trigger('listindex:beforedestroy', index);\n index.emit('local::beforeDestroy listIndexBeforeDestroy');\n index.detachEvents();\n if (index.$el[0]) {\n index.$el[0].f7ListIndex = null;\n delete index.$el[0].f7ListIndex;\n }\n Utils.deleteProps(index);\n index = null;\n }\n}\n\nexport default ListIndex;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport ListIndex from './list-index-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'listIndex',\n static: {\n ListIndex,\n },\n create() {\n const app = this;\n app.listIndex = ConstructorMethods({\n defaultSelector: '.list-index',\n constructor: ListIndex,\n app,\n domProp: 'f7ListIndex',\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.list-index-init').each((index, listIndexEl) => {\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.list-index-init').each((index, listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.list-index-init').each((index, listIndexEl) => {\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.list-index-init').each((index, listIndexEl) => {\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n });\n },\n },\n vnode: {\n 'list-index-init': {\n insert(vnode) {\n const app = this;\n const listIndexEl = vnode.elm;\n const params = Utils.extend($(listIndexEl).dataset(), { el: listIndexEl });\n app.listIndex.create(params);\n },\n destroy(vnode) {\n const listIndexEl = vnode.elm;\n if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Tab = {\n show(...args) {\n const app = this;\n\n let tabEl;\n let tabLinkEl;\n let animate;\n let tabRoute;\n if (args.length === 1 && args[0].constructor === Object) {\n tabEl = args[0].tabEl;\n tabLinkEl = args[0].tabLinkEl;\n animate = args[0].animate;\n tabRoute = args[0].tabRoute;\n } else {\n [tabEl, tabLinkEl, animate, tabRoute] = args;\n if (typeof args[1] === 'boolean') {\n [tabEl, animate, tabLinkEl, tabRoute] = args;\n if (args.length > 2 && tabLinkEl.constructor === Object) {\n [tabEl, animate, tabRoute, tabLinkEl] = args;\n }\n }\n }\n if (typeof animate === 'undefined') animate = true;\n\n const $newTabEl = $(tabEl);\n if (tabRoute && $newTabEl[0]) {\n $newTabEl[0].f7TabRoute = tabRoute;\n }\n\n if ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active')) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n let $tabLinkEl;\n if (tabLinkEl) $tabLinkEl = $(tabLinkEl);\n\n const $tabsEl = $newTabEl.parent('.tabs');\n if ($tabsEl.length === 0) {\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n };\n }\n\n // Release swipeouts in hidden tabs\n if (app.swipeout) app.swipeout.allowOpen = true;\n\n // Animated tabs\n const tabsChangedCallbacks = [];\n\n function onTabsChanged(callback) {\n tabsChangedCallbacks.push(callback);\n }\n function tabsChanged() {\n tabsChangedCallbacks.forEach((callback) => {\n callback();\n });\n }\n\n let animated = false;\n\n if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {\n $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');\n\n const transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));\n if (animate && transitionDuration) {\n $tabsEl.transitionEnd(tabsChanged);\n animated = true;\n }\n\n const tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;\n $tabsEl.transform(`translate3d(${tabsTranslate}%,0,0)`);\n }\n\n // Swipeable tabs\n let swiper;\n if ($tabsEl.parent().hasClass('tabs-swipeable-wrap') && app.swiper) {\n swiper = $tabsEl.parent()[0].swiper;\n if (swiper && swiper.activeIndex !== $newTabEl.index()) {\n animated = true;\n swiper\n .once('slideChangeTransitionEnd', () => {\n tabsChanged();\n })\n .slideTo($newTabEl.index(), animate ? undefined : 0);\n } else if (swiper && swiper.animating) {\n animated = true;\n swiper\n .once('slideChangeTransitionEnd', () => {\n tabsChanged();\n });\n }\n }\n\n // Remove active class from old tabs\n const $oldTabEl = $tabsEl.children('.tab-active');\n $oldTabEl.removeClass('tab-active');\n if (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute)) {\n if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {\n $oldTabEl.children('.page').each((pageIndex, pageEl) => {\n $(pageEl).trigger('page:tabhide');\n app.emit('pageTabHide', pageEl);\n });\n }\n $oldTabEl.trigger('tab:hide');\n app.emit('tabHide', $oldTabEl[0]);\n }\n\n // Trigger 'show' event on new tab\n $newTabEl.addClass('tab-active');\n if (!swiper || (swiper && !swiper.animating) || (swiper && tabRoute)) {\n if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {\n $newTabEl.children('.page').each((pageIndex, pageEl) => {\n $(pageEl).trigger('page:tabshow');\n app.emit('pageTabShow', pageEl);\n });\n }\n $newTabEl.trigger('tab:show');\n app.emit('tabShow', $newTabEl[0]);\n }\n\n // Find related link for new tab\n if (!$tabLinkEl) {\n // Search by id\n if (typeof tabEl === 'string') $tabLinkEl = $(`.tab-link[href=\"${tabEl}\"]`);\n else $tabLinkEl = $(`.tab-link[href=\"#${$newTabEl.attr('id')}\"]`);\n // Search by data-tab\n if (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0)) {\n $('[data-tab]').each((index, el) => {\n if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);\n });\n }\n if (tabRoute && (!$tabLinkEl || ($tabLinkEl && $tabLinkEl.length === 0))) {\n $tabLinkEl = $(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $tabLinkEl = $tabLinkEl.filter((index, tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];\n });\n if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {\n const $pageEl = $newTabEl.parents('.page');\n const $navbarEl = $(app.navbar.getElByPage($pageEl));\n $tabLinkEl = $navbarEl.find(`[data-route-tab-id=\"${tabRoute.route.tab.id}\"]`);\n if ($tabLinkEl.length === 0) {\n $tabLinkEl = $navbarEl.find(`.tab-link[href=\"${tabRoute.url}\"]`);\n }\n }\n }\n }\n if ($tabLinkEl.length > 0) {\n // Find related link for old tab\n let $oldTabLinkEl;\n if ($oldTabEl && $oldTabEl.length > 0) {\n // Search by id\n const oldTabId = $oldTabEl.attr('id');\n if (oldTabId) {\n $oldTabLinkEl = $(`.tab-link[href=\"#${oldTabId}\"]`);\n // Search by data-route-tab-id\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $(`.tab-link[data-route-tab-id=\"${oldTabId}\"]`);\n }\n }\n // Search by data-tab\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $('[data-tab]').each((index, tabLinkElement) => {\n if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);\n });\n }\n if (!$oldTabLinkEl || ($oldTabLinkEl && $oldTabLinkEl.length === 0)) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n } else if (tabRoute) {\n $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');\n }\n\n if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {\n // eslint-disable-next-line\n $oldTabLinkEl = $oldTabLinkEl.filter((index, tabLinkElement) => {\n return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];\n });\n }\n\n if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');\n\n // Update links' classes\n if ($tabLinkEl && $tabLinkEl.length > 0) {\n $tabLinkEl.addClass('tab-link-active');\n // Material Highlight\n if (app.theme === 'md' && app.toolbar) {\n const $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-labels');\n if ($tabbarEl.length > 0) {\n app.toolbar.setHighlight($tabbarEl);\n }\n }\n }\n }\n return {\n $newTabEl,\n newTabEl: $newTabEl[0],\n $oldTabEl,\n oldTabEl: $oldTabEl[0],\n onTabsChanged,\n animated,\n };\n },\n};\nexport default {\n name: 'tabs',\n create() {\n const app = this;\n Utils.extend(app, {\n tab: {\n show: Tab.show.bind(app),\n },\n });\n },\n clicks: {\n '.tab-link': function tabLinkClick($clickedEl, data = {}) {\n const app = this;\n if (($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0) || $clickedEl.attr('data-tab')) {\n app.tab.show({\n tabEl: data.tab || $clickedEl.attr('href'),\n tabLinkEl: $clickedEl,\n animate: data.animate,\n });\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nfunction swipePanel(panel) {\n const app = panel.app;\n if (panel.swipeInitialized) {\n return;\n }\n Utils.extend(panel, {\n swipeable: true,\n swipeInitialized: true,\n });\n const params = panel.params;\n const { $el, $backdropEl, side, effect } = panel;\n let otherPanel;\n\n let isTouched;\n let isGestureStarted;\n let isMoved;\n let isScrolling;\n let isInterrupted;\n const touchesStart = {};\n let touchStartTime;\n let touchesDiff;\n let translate;\n let backdropOpacity;\n let panelWidth;\n let direction;\n\n let $viewEl;\n\n let touchMoves = 0;\n function handleTouchStart(e) {\n if (!panel.swipeable || isGestureStarted) return;\n if (!app.panel.allowOpen || (!params.swipe && !params.swipeOnlyClose) || isTouched) return;\n if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;\n otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};\n const otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');\n if (!panel.opened && otherPanelOpened) {\n return;\n }\n if (!params.swipeOnlyClose) {\n if (otherPanelOpened) return;\n }\n if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;\n if ($(e.target).closest('.range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (params.swipeOnlyClose && !panel.opened) {\n return;\n }\n if (params.swipeActiveArea && !panel.opened) {\n if (side === 'left') {\n if (touchesStart.x > params.swipeActiveArea) return;\n }\n if (side === 'right') {\n if (touchesStart.x < app.width - params.swipeActiveArea) return;\n }\n }\n touchMoves = 0;\n $viewEl = $(panel.getViewEl());\n isMoved = false;\n isTouched = true;\n isScrolling = undefined;\n isInterrupted = false;\n\n touchStartTime = Utils.now();\n direction = undefined;\n }\n function handleTouchMove(e) {\n if (!isTouched || isGestureStarted || isInterrupted) return;\n touchMoves += 1;\n if (touchMoves < 2) return;\n if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {\n isTouched = false;\n return;\n }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n if (!direction) {\n if (pageX > touchesStart.x) {\n direction = 'to-right';\n } else {\n direction = 'to-left';\n }\n\n if (params.swipeActiveArea > 0 && !panel.opened) {\n if (side === 'left' && touchesStart.x > params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {\n isTouched = false;\n return;\n }\n }\n if ($el.hasClass('panel-in-breakpoint')) {\n isTouched = false;\n return;\n }\n\n if (\n (side === 'left'\n && (\n direction === 'to-left' && !$el.hasClass('panel-in')\n )\n )\n || (side === 'right'\n && (\n direction === 'to-right' && !$el.hasClass('panel-in')\n )\n )\n ) {\n isTouched = false;\n return;\n }\n }\n\n let threshold = panel.opened ? 0 : -params.swipeThreshold;\n if (side === 'right') threshold = -threshold;\n\n if (!isMoved) {\n if (!panel.opened) {\n panel.insertToRoot();\n $el.addClass('panel-in-swipe');\n $backdropEl.css('visibility', 'visible');\n $el.trigger('panel:swipeopen');\n panel.emit('local::swipeOpen panelSwipeOpen', panel);\n }\n panelWidth = $el[0].offsetWidth;\n if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {\n panelWidth -= parseFloat($viewEl.css(`margin-${side}`));\n }\n $el.transition(0);\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = (pageX - touchesStart.x) + threshold;\n\n if (side === 'right') {\n if (effect === 'cover') {\n translate = touchesDiff + (panel.opened ? 0 : panelWidth);\n if (translate < 0) translate = 0;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n } else {\n translate = touchesDiff - (panel.opened ? panelWidth : 0);\n if (translate > 0) translate = 0;\n if (translate < -panelWidth) {\n translate = -panelWidth;\n }\n }\n } else {\n translate = touchesDiff + (panel.opened ? panelWidth : 0);\n if (translate < 0) translate = 0;\n if (translate > panelWidth) {\n translate = panelWidth;\n }\n }\n const noFollowProgress = Math.abs(translate / panelWidth);\n if (effect === 'reveal') {\n if (!params.swipeNoFollow) {\n $viewEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n $backdropEl.transform(`translate3d(${translate}px,0,0)`).transition(0);\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n } else {\n if (side === 'left') translate -= panelWidth;\n if (!params.swipeNoFollow) {\n $el.transform(`translate3d(${translate}px,0,0)`).transition(0);\n\n $backdropEl.transition(0);\n backdropOpacity = 1 - Math.abs(translate / panelWidth);\n $backdropEl.css({ opacity: backdropOpacity });\n }\n\n $el.trigger('panel:swipe', Math.abs(translate / panelWidth));\n panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));\n }\n\n if (params.swipeNoFollow) {\n const stateChanged = (panel.opened && noFollowProgress === 0) || (!panel.opened && noFollowProgress === 1);\n if (stateChanged) {\n isInterrupted = true;\n // eslint-disable-next-line\n handleTouchEnd(e);\n }\n }\n }\n function handleTouchEnd(e) {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n const isGesture = e.type === 'gesturestart' || isGestureStarted;\n isTouched = false;\n isMoved = false;\n const timeDiff = (new Date()).getTime() - touchStartTime;\n let action;\n const edge = (translate === 0 || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;\n\n const threshold = params.swipeThreshold || 0;\n\n if (isGesture) {\n action = 'reset';\n } else if (!panel.opened) {\n if (Math.abs(touchesDiff) < threshold) {\n action = 'reset';\n } else if (effect === 'cover') {\n if (translate === 0) {\n action = 'swap'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'swap'; // open\n } else {\n action = 'reset'; // close\n }\n } else if (translate === 0) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) > 0)\n || (timeDiff >= 300 && (Math.abs(translate) >= panelWidth / 2))\n ) {\n action = 'swap';\n } else {\n action = 'reset';\n }\n } else if (effect === 'cover') {\n if (translate === 0) {\n action = 'reset'; // open\n } else if (timeDiff < 300 && Math.abs(translate) > 0) {\n action = 'swap'; // open\n } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {\n action = 'reset'; // open\n } else {\n action = 'swap'; // close\n }\n } else if (translate === -panelWidth) {\n action = 'reset';\n } else if (\n (timeDiff < 300 && Math.abs(translate) >= 0)\n || (timeDiff >= 300 && (Math.abs(translate) <= panelWidth / 2))\n ) {\n if (side === 'left' && translate === panelWidth) action = 'reset';\n else action = 'swap';\n } else {\n action = 'reset';\n }\n if (action === 'swap') {\n if (panel.opened) {\n panel.close(!edge);\n } else {\n panel.open(!edge);\n }\n }\n let removePanelInClass = true;\n if (action === 'reset') {\n if (!panel.opened) {\n if (edge) {\n // edge position\n $el.removeClass('panel-in-swipe');\n } else {\n removePanelInClass = false;\n const target = effect === 'reveal' ? $viewEl : $el;\n $('html').addClass('with-panel-closing');\n target.transitionEnd(() => {\n if ($el.hasClass('panel-in')) return;\n $el.removeClass('panel-in-swipe');\n $('html').removeClass('with-panel-closing');\n });\n }\n }\n }\n if (effect === 'reveal') {\n Utils.nextFrame(() => {\n $viewEl.transition('');\n $viewEl.transform('');\n });\n }\n if (removePanelInClass) {\n $el.removeClass('panel-in-swipe');\n }\n $el.transition('').transform('');\n $backdropEl.transform('').transition('').css({ opacity: '', visibility: '' });\n }\n function handleGestureStart(e) {\n isGestureStarted = true;\n handleTouchEnd(e);\n }\n function handleGestureEnd() {\n isGestureStarted = false;\n }\n\n // Add Events\n app.on('touchstart:passive', handleTouchStart);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('gesturestart', handleGestureStart);\n app.on('gestureend', handleGestureEnd);\n panel.on('panelDestroy', () => {\n app.off('touchstart:passive', handleTouchStart);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('gesturestart', handleGestureStart);\n app.off('gestureend', handleGestureEnd);\n });\n}\n\nexport default swipePanel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nfunction resizablePanel(panel) {\n const app = panel.app;\n if (panel.resizableInitialized) return;\n Utils.extend(panel, {\n resizable: true,\n resizableWidth: null,\n resizableInitialized: true,\n });\n const $htmlEl = $('html');\n const { $el, $backdropEl, side, effect } = panel;\n if (!$el) return;\n\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let touchesDiff;\n let panelWidth;\n\n let $viewEl;\n\n let panelMinWidth;\n let panelMaxWidth;\n let visibleByBreakpoint;\n\n function transformCSSWidth(v) {\n if (!v) return null;\n if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {\n return parseInt(v, 10) / 100 * app.width;\n }\n const newV = parseInt(v, 10);\n if (Number.isNaN(newV)) return null;\n return newV;\n }\n\n function isResizable() {\n return panel.resizable && $el.hasClass('panel-resizable');\n }\n\n function handleTouchStart(e) {\n if (!isResizable()) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isMoved = false;\n isTouched = true;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n\n if (!isMoved) {\n panelWidth = $el[0].offsetWidth;\n $el.transition(0);\n $el.addClass('panel-resizing');\n $htmlEl.css('cursor', 'col-resize');\n if (effect === 'reveal' || visibleByBreakpoint) {\n $viewEl = $(panel.getViewEl());\n }\n if (effect === 'reveal' && !visibleByBreakpoint) {\n $backdropEl.transition(0);\n $viewEl.transition(0);\n }\n }\n\n isMoved = true;\n\n e.preventDefault();\n\n touchesDiff = (pageX - touchesStart.x);\n\n let newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;\n if (panelMinWidth && !Number.isNaN(panelMinWidth)) {\n newPanelWidth = Math.max(newPanelWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {\n newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);\n }\n newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);\n\n panel.resizableWidth = newPanelWidth;\n $el[0].style.width = `${newPanelWidth}px`;\n if (effect === 'reveal' && !visibleByBreakpoint) {\n if ($viewEl) {\n $viewEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n if ($backdropEl) {\n $backdropEl.transform(`translate3d(${side === 'left' ? newPanelWidth : -newPanelWidth}px, 0, 0)`);\n }\n } else if (visibleByBreakpoint && $viewEl) {\n $viewEl.css(`margin-${side}`, `${newPanelWidth}px`);\n }\n\n $el.trigger('panel:resize', newPanelWidth);\n panel.emit('local::resize panelResize', panel, newPanelWidth);\n }\n function handleTouchEnd() {\n $('html').css('cursor', '');\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n $el[0].style.width = '';\n if (effect === 'reveal' && !visibleByBreakpoint) {\n $viewEl.transform('');\n $backdropEl.transform('');\n }\n $el.removeClass('panel-resizing');\n Utils.nextFrame(() => {\n if (visibleByBreakpoint) return;\n $el.transition('');\n if (effect === 'reveal') {\n $backdropEl.transition('');\n if ($viewEl) $viewEl.transition('');\n }\n });\n }\n\n function handleResize() {\n if (!panel.opened || !panel.resizableWidth) return;\n panelMinWidth = transformCSSWidth($el.css('min-width'));\n panelMaxWidth = transformCSSWidth($el.css('max-width'));\n\n if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {\n panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);\n }\n if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {\n panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);\n }\n panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);\n\n $htmlEl[0].style.setProperty(`--f7-panel-${side}-width`, `${panel.resizableWidth}px`);\n }\n\n if (panel.$el.find('.panel-resize-handler').length === 0) {\n panel.$el.append('<div class=\"panel-resize-handler\"></div>');\n }\n panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');\n\n $el.addClass('panel-resizable');\n\n // Add Events\n const passive = Support.passiveListener ? { passive: true } : false;\n\n panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n panel.on('beforeOpen', handleResize);\n\n panel.once('panelDestroy', () => {\n $el.removeClass('panel-resizable');\n panel.$resizeHandlerEl.remove();\n panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n panel.off('beforeOpen', handleResize);\n });\n}\n\nexport default resizablePanel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport swipePanel from './swipe-panel';\nimport resizablePanel from './resizable-panel';\n\nclass Panel extends Framework7Class {\n constructor(app, params = {}) {\n const extendedParams = Utils.extend(\n { on: {} },\n app.params.panel,\n params\n );\n super(extendedParams, [app]);\n\n const panel = this;\n\n panel.params = extendedParams;\n\n let $el;\n if (panel.params.el) {\n $el = $(panel.params.el).eq(0);\n } else if (panel.params.content) {\n $el = $(panel.params.content).filter((elIndex, node) => node.nodeType === 1).eq(0);\n }\n\n if ($el.length === 0) return panel;\n if ($el[0].f7Panel) return $el[0].f7Panel;\n\n $el[0].f7Panel = panel;\n\n let { side, effect, resizable } = panel.params;\n if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';\n if (typeof effect === 'undefined') effect = $el.hasClass('panel-cover') ? 'cover' : 'reveal';\n if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');\n\n let $backdropEl;\n if (panel.params.backdrop && panel.params.backdropEl) {\n $backdropEl = $(panel.params.backdropEl);\n } else if (panel.params.backdrop) {\n $backdropEl = app.root.children('.panel-backdrop');\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"panel-backdrop\"></div>');\n app.root.prepend($backdropEl);\n }\n }\n\n Utils.extend(panel, {\n app,\n side,\n effect,\n resizable,\n $el,\n el: $el[0],\n opened: false,\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n });\n\n // Install Modules\n panel.useModules();\n\n // Init\n panel.init();\n\n return panel;\n }\n\n getViewEl() {\n const panel = this;\n const app = panel.app;\n let viewEl;\n if (app.root.children('.views').length > 0) {\n viewEl = app.root.children('.views')[0];\n } else {\n viewEl = app.root.children('.view')[0];\n }\n return viewEl;\n }\n\n enableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = false;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n disableVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = true;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n toggleVisibleBreakpoint() {\n const panel = this;\n panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;\n panel.setVisibleBreakpoint();\n return panel;\n }\n\n setVisibleBreakpoint(emitEvents = true) {\n const panel = this;\n const app = panel.app;\n if (!panel.visibleBreakpointResizeHandler) {\n panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {\n panel.setVisibleBreakpoint();\n };\n app.on('resize', panel.visibleBreakpointResizeHandler);\n }\n const { side, $el, params, visibleBreakpointDisabled } = panel;\n const breakpoint = params.visibleBreakpoint;\n const $viewEl = $(panel.getViewEl());\n const wasVisible = $el.hasClass('panel-in-breakpoint');\n\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {\n if (!wasVisible) {\n $('html').removeClass(`with-panel-${side}-reveal with-panel-${side}-cover with-panel`);\n $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');\n panel.onOpen(false);\n panel.onOpened();\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n } else {\n $viewEl.css({\n [`margin-${side}`]: `${$el.width()}px`,\n });\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-breakpoint panel-in');\n panel.onClose();\n panel.onClosed();\n $viewEl.css({\n [`margin-${side}`]: '',\n });\n if (emitEvents) {\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n }\n }\n\n enableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = false;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n disableCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = true;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n toggleCollapsedBreakpoint() {\n const panel = this;\n panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;\n panel.setCollapsedBreakpoint();\n return panel;\n }\n\n setCollapsedBreakpoint(emitEvents) {\n const panel = this;\n const app = panel.app;\n if (!panel.collapsedBreakpointResizeHandler) {\n panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {\n panel.setCollapsedBreakpoint();\n };\n app.on('resize', panel.collapsedBreakpointResizeHandler);\n }\n const { side, $el, params, collapsedBreakpointDisabled } = panel;\n if ($el.hasClass('panel-in-breakpoint')) return;\n const breakpoint = params.collapsedBreakpoint;\n const wasVisible = $el.hasClass('panel-in-collapsed');\n\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {\n if (!wasVisible) {\n $('html').removeClass(`with-panel-${side}-reveal with-panel-${side}-cover with-panel`);\n $el.addClass('panel-in-collapsed').removeClass('panel-in');\n panel.collapsed = true;\n app.allowPanelOpen = true;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n } else if (wasVisible) {\n $el.removeClass('panel-in-collapsed panel-in');\n panel.collapsed = false;\n if (emitEvents) {\n panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);\n panel.$el.trigger('panel:collapsedbreakpoint');\n }\n }\n }\n\n enableResizable() {\n const panel = this;\n if (panel.resizableInitialized) {\n panel.resizable = true;\n panel.$el.addClass('panel-resizable');\n } else {\n resizablePanel(panel);\n }\n return panel;\n }\n\n disableResizable() {\n const panel = this;\n panel.resizable = false;\n panel.$el.removeClass('panel-resizable');\n return panel;\n }\n\n enableSwipe() {\n const panel = this;\n if (panel.swipeInitialized) {\n panel.swipeable = true;\n } else {\n swipePanel(panel);\n }\n return panel;\n }\n\n disableSwipe() {\n const panel = this;\n panel.swipeable = false;\n return panel;\n }\n\n onOpen(modifyHtmlClasses = true) {\n const panel = this;\n const app = panel.app;\n\n panel.opened = true;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeopen');\n panel.emit('local::beforeOpen panelBeforeOpen', panel);\n\n if (modifyHtmlClasses) {\n $('html').addClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n }\n\n panel.$el.trigger('panel:open');\n panel.emit('local::open panelOpen', panel);\n }\n\n onOpened() {\n const panel = this;\n const app = panel.app;\n\n app.panel.allowOpen = true;\n\n panel.$el.trigger('panel:opened');\n panel.emit('local::opened panelOpened', panel);\n }\n\n onClose() {\n const panel = this;\n const app = panel.app;\n\n panel.opened = false;\n app.panel.allowOpen = false;\n\n panel.$el.trigger('panel:beforeclose');\n panel.emit('local::beforeClose panelBeforeClose', panel);\n\n $('html').addClass('with-panel-closing');\n $('html').removeClass(`with-panel with-panel-${panel.side}-${panel.effect}`);\n\n panel.$el.trigger('panel:close');\n panel.emit('local::close panelClose', panel);\n }\n\n onClosed() {\n const panel = this;\n const app = panel.app;\n app.panel.allowOpen = true;\n $('html').removeClass('with-panel-closing');\n panel.$el.removeClass('panel-out');\n panel.$el.trigger('panel:closed');\n panel.emit('local::closed panelClosed', panel);\n }\n\n toggle(animate = true) {\n const panel = this;\n const breakpoint = panel.params.visibleBreakpoint;\n const app = panel.app;\n if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {\n return panel.toggleVisibleBreakpoint();\n }\n if (panel.opened) panel.close(animate);\n else panel.open(animate);\n return panel;\n }\n\n insertToRoot() {\n const panel = this;\n const { $el, app, $backdropEl } = panel;\n const $panelParentEl = $el.parent();\n const wasInDom = $el.parents(document).length > 0;\n\n if (!$panelParentEl.is(app.root) || $el.prevAll('.views, .view').length) {\n const $insertBeforeEl = app.root.children('.panel, .views, .view').eq(0);\n const $insertAfterEl = app.root.children('.panel-backdrop').eq(0);\n\n if ($insertBeforeEl.length) {\n $el.insertBefore($insertBeforeEl);\n } else if ($insertAfterEl) {\n $el.insertBefore($insertAfterEl);\n } else {\n app.root.prepend($el);\n }\n\n if ($backdropEl\n && $backdropEl.length\n && (\n (\n !$backdropEl.parent().is(app.root)\n && $backdropEl.nextAll('.panel').length === 0\n )\n || (\n $backdropEl.parent().is(app.root)\n && $backdropEl.nextAll('.panel').length === 0\n )\n )\n ) {\n $backdropEl.insertBefore($el);\n }\n\n panel.once('panelClosed', () => {\n if (wasInDom) {\n $panelParentEl.append($el);\n } else {\n $el.remove();\n }\n });\n }\n }\n\n open(animate = true) {\n const panel = this;\n const app = panel.app;\n\n if (!app.panel.allowOpen) return false;\n\n const { effect, $el, $backdropEl, opened } = panel;\n\n if (!$el || $el.hasClass('panel-in')) {\n return panel;\n }\n\n panel.insertToRoot();\n\n // Ignore if opened\n if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;\n\n // Close if some panel is opened\n const otherOpenedPanel = app.panel.get('.panel-in');\n if (otherOpenedPanel && otherOpenedPanel !== panel) {\n otherOpenedPanel.close(animate);\n }\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $el.addClass('panel-in');\n\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n\n if (panel.effect === 'cover') {\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n panel._clientLeft = $el[0].clientLeft;\n }\n\n // Transitionend\n const transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n function panelTransitionEnd() {\n transitionEndTarget.transitionEnd((e) => {\n if ($(e.target).is(transitionEndTarget)) {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else {\n panel.onOpened();\n }\n } else panelTransitionEnd();\n });\n }\n if (animate) {\n if ($backdropEl) {\n $backdropEl.removeClass('not-animated');\n }\n panelTransitionEnd();\n $el\n .removeClass('panel-out not-animated')\n .addClass('panel-in');\n panel.onOpen();\n } else {\n if ($backdropEl) {\n $backdropEl.addClass('not-animated');\n }\n $el.removeClass('panel-out').addClass('panel-in not-animated');\n panel.onOpen();\n panel.onOpened();\n }\n\n return true;\n }\n\n close(animate = true) {\n const panel = this;\n\n const { effect, $el, $backdropEl, opened } = panel;\n if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;\n\n $el[animate ? 'removeClass' : 'addClass']('not-animated');\n $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');\n\n const transitionEndTarget = effect === 'reveal' ? $el.nextAll('.view, .views').eq(0) : $el;\n\n function transitionEnd() {\n if ($el.hasClass('panel-out')) {\n panel.onClosed();\n } else if ($el.hasClass('panel-in')) {\n panel.onOpened();\n }\n $('html').removeClass('with-panel-closing');\n }\n if (animate) {\n transitionEndTarget\n .transitionEnd(() => {\n transitionEnd();\n });\n $el\n .removeClass('panel-in')\n .addClass('panel-out');\n // Emit close\n panel.onClose();\n } else {\n $el\n .addClass('not-animated')\n .removeClass('panel-in')\n .addClass('panel-out');\n // Emit close\n panel.onClose();\n panel.onClosed();\n }\n\n return panel;\n }\n\n init() {\n const panel = this;\n // const app = panel.app;\n if (typeof panel.params.visibleBreakpoint !== 'undefined') {\n panel.setVisibleBreakpoint();\n }\n if (typeof panel.params.collapsedBreakpoint !== 'undefined') {\n panel.setCollapsedBreakpoint();\n }\n if (panel.params.swipe) {\n panel.enableSwipe();\n }\n if (panel.resizable) {\n panel.enableResizable();\n }\n }\n\n destroy() {\n let panel = this;\n const app = panel.app;\n\n if (!panel.$el) {\n // Panel already destroyed\n return;\n }\n\n panel.emit('local::beforeDestroy panelBeforeDestroy', panel);\n panel.$el.trigger('panel:beforedestroy');\n\n if (panel.visibleBreakpointResizeHandler) {\n app.off('resize', panel.visibleBreakpointResizeHandler);\n }\n if (panel.collapsedBreakpointResizeHandler) {\n app.off('resize', panel.collapsedBreakpointResizeHandler);\n }\n if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {\n const $viewEl = $(panel.getViewEl());\n panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');\n $viewEl.css({\n [`margin-${panel.side}`]: '',\n });\n panel.emit('local::breakpoint panelBreakpoint', panel);\n panel.$el.trigger('panel:breakpoint');\n }\n\n panel.$el.trigger('panel:destroy');\n panel.emit('local::destroy panelDestroy', panel);\n if (panel.el) {\n panel.el.f7Panel = null;\n delete panel.el.f7Panel;\n }\n Utils.deleteProps(panel);\n\n panel = null;\n }\n}\n\nexport default Panel;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Panel from './panel-class';\n\nexport default {\n name: 'panel',\n params: {\n panel: {\n opened: undefined, // default based on panel-in class\n side: undefined, // default based on panel class\n effect: undefined, // default based on panel class\n resizable: undefined, // default based on panel-resizable class\n backdrop: true,\n backdropEl: undefined,\n visibleBreakpoint: undefined,\n collapsedBreakpoint: undefined,\n swipe: false, // or true\n swipeNoFollow: false, // or true\n swipeOnlyClose: false,\n swipeActiveArea: 0,\n swipeThreshold: 0,\n closeByBackdropClick: true,\n },\n },\n static: {\n Panel,\n },\n instance: {\n panel: {\n allowOpen: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app.panel, {\n create(params) {\n return new Panel(app, params);\n },\n get(el = '.panel') {\n if (el instanceof Panel) return el;\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n const $el = $(el);\n if ($el.length === 0 || $el.length > 1) return undefined;\n return $el[0].f7Panel;\n },\n destroy(el = '.panel') {\n const panel = app.panel.get(el);\n if (panel && panel.destroy) return panel.destroy();\n return undefined;\n },\n open(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.open(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.open(animate);\n }\n return undefined;\n },\n close(el = '.panel-in', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.open) return panel.close(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.close(animate);\n }\n return undefined;\n },\n toggle(el = '.panel', animate) {\n if (el === 'left' || el === 'right') el = `.panel-${el}`; // eslint-disable-line\n let panel = app.panel.get(el);\n if (panel && panel.toggle) return panel.toggle(animate);\n if (!panel) {\n panel = app.panel.create({ el });\n return panel.toggle(animate);\n }\n return undefined;\n },\n });\n },\n on: {\n init() {\n const app = this;\n $('.panel-init').each((index, panelEl) => {\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.panel-init').each((index, panelEl) => {\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.panel-init').each((index, panelEl) => {\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n });\n },\n },\n vnode: {\n 'panel-init': {\n insert(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const params = Object.assign(\n { el: panelEl },\n $(panelEl).dataset() || {}\n );\n app.panel.create(params);\n },\n destroy(vnode) {\n const app = this;\n const panelEl = vnode.elm;\n const panel = app.panel.get(panelEl);\n if (panel && panel.destroy) panel.destroy();\n },\n },\n },\n clicks: {\n '.panel-open': function open(clickedEl, data = {}) {\n const app = this;\n app.panel.open(data.panel, data.animate);\n },\n '.panel-close': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.close(data.panel, data.animate);\n },\n '.panel-toggle': function close(clickedEl, data = {}) {\n const app = this;\n app.panel.toggle(data.panel, data.animate);\n },\n '.panel-backdrop': function close() {\n const app = this;\n const $panelEl = $('.panel-in:not(.panel-out)');\n if (!$panelEl.length) return;\n const instance = $panelEl[0] && $panelEl[0].f7Panel;\n $panelEl.trigger('panel:backdrop-click');\n if (instance) {\n instance.emit('backdropClick', instance);\n }\n app.emit('panelBackdropClick', instance || $panelEl[0]);\n if (app.params.panel.closeByBackdropClick) app.panel.close();\n },\n },\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst CardExpandable = {\n open(cardEl = '.card-expandable', animate = true) {\n const app = this;\n\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n if ($pageEl.find('.card-opened').length) {\n return;\n }\n\n let prevented;\n\n function prevent() {\n prevented = true;\n }\n\n $cardEl.trigger('card:beforeopen', { prevent });\n app.emit('cardBeforeOpen', $cardEl[0], prevent);\n\n if (prevented) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n\n const $pageContentEl = $cardEl.parents('.page-content');\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (!$backdropEl && cardParams.backdrop) {\n $backdropEl = $pageContentEl.find('.card-backdrop');\n if (!$backdropEl.length) {\n $backdropEl = $('<div class=\"card-backdrop\"></div>');\n $pageContentEl.append($backdropEl);\n }\n }\n\n let $navbarEl;\n let $toolbarEl;\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n }\n\n const currTransform = $cardEl.css('transform');\n let hasTransform;\n if (currTransform && currTransform.match(/[2-9]/)) {\n hasTransform = true;\n }\n const $cardContentEl = $cardEl.children('.card-content');\n\n const $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');\n $cardEl.append($cardSizeEl);\n\n let cardWidth = $cardEl[0].offsetWidth;\n let cardHeight = $cardEl[0].offsetHeight;\n let pageWidth = $pageEl[0].offsetWidth;\n let pageHeight = $pageEl[0].offsetHeight;\n\n let maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n let maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n let statusbarHeight;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n let scaleX = maxWidth / cardWidth;\n let scaleY = maxHeight / cardHeight;\n\n let offset = $cardEl.offset();\n let pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n\n let cardLeftOffset;\n let cardTopOffset;\n\n if (hasTransform) {\n const transformValues = currTransform\n .replace(/matrix\\(|\\)/g, '')\n .split(',')\n .map(el => el.trim());\n if (transformValues && transformValues.length > 1) {\n const scale = parseFloat(transformValues[0]);\n cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;\n cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n } else {\n cardLeftOffset = $cardEl[0].offsetLeft;\n cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);\n }\n } else {\n cardLeftOffset = offset.left;\n cardTopOffset = offset.top - pageOffset.top;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n }\n\n cardLeftOffset -= (pageWidth - maxWidth) / 2;\n cardTopOffset -= (pageHeight - maxHeight) / 2;\n\n let cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n let cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n let translateX = (cardRightOffset - cardLeftOffset) / 2;\n let translateY = (cardBottomOffset - cardTopOffset) / 2;\n if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {\n if ($navbarEl.closest('.navbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepNavbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepNavbarOnClose;\n app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen);\n }\n }\n if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {\n if ($toolbarEl.closest('.toolbar-hidden').length) {\n // Was hidden\n $cardEl[0].f7KeepToolbarOnClose = true;\n } else {\n delete $cardEl[0].f7KeepToolbarOnClose;\n app.toolbar.hide($toolbarEl, cardParams.animate);\n }\n }\n if ($backdropEl) {\n $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');\n }\n $cardEl.removeClass('card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-opening');\n }\n $cardEl.trigger('card:open');\n app.emit('cardOpen', $cardEl[0]);\n function transitionEnd() {\n $pageEl.addClass('page-with-card-opened');\n if (app.device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n $cardEl.addClass('card-opened');\n $cardEl.removeClass('card-opening');\n $cardEl.trigger('card:opened');\n app.emit('cardOpened', $cardEl[0], $pageEl[0]);\n }\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(`translate3d(${app.rtl ? (cardLeftOffset + translateX) : (-cardLeftOffset - translateX)}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n\n $cardEl\n .transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n if (cardParams.animate) {\n $cardEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n function onResize() {\n $cardEl.removeClass('card-transitioning');\n cardWidth = $cardEl[0].offsetWidth;\n cardHeight = $cardEl[0].offsetHeight;\n pageWidth = $pageEl[0].offsetWidth;\n pageHeight = $pageEl[0].offsetHeight;\n maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;\n maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;\n\n statusbarHeight = 0;\n if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {\n statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);\n if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;\n }\n if (statusbarHeight) {\n maxHeight -= statusbarHeight;\n }\n\n\n scaleX = maxWidth / cardWidth;\n scaleY = maxHeight / cardHeight;\n\n $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');\n offset = $cardEl.offset();\n pageOffset = $pageEl.offset();\n if (statusbarHeight) {\n pageOffset.top += statusbarHeight / 2;\n }\n offset.left -= pageOffset.left;\n offset.top -= pageOffset.top;\n\n cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;\n if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;\n cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;\n\n cardRightOffset = maxWidth - cardWidth - cardLeftOffset;\n cardBottomOffset = maxHeight - cardHeight - cardTopOffset;\n if (app.rtl) {\n [cardLeftOffset, cardRightOffset] = [cardRightOffset, cardLeftOffset];\n }\n translateX = (cardRightOffset - cardLeftOffset) / 2;\n translateY = (cardBottomOffset - cardTopOffset) / 2;\n\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n $cardContentEl\n .css({\n width: `${maxWidth}px`,\n height: `${maxHeight}px`,\n })\n .transform(`translate3d(${app.rtl ? (cardLeftOffset + translateX) : (-cardLeftOffset - translateX)}px, 0px, 0) scale(${1 / scaleX}, ${1 / scaleY})`);\n }\n\n let cardScrollTop;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchEndX;\n let touchEndY;\n let isScrolling;\n let progress;\n let isV;\n let isH;\n let $cardScrollableEl;\n function onTouchStart(e) {\n if (!$(e.target).closest($cardEl).length) return;\n if (!$cardEl.hasClass('card-opened')) return;\n $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n if ($cardScrollableEl[0]\n && $cardScrollableEl[0] !== $cardContentEl[0]\n && !$cardScrollableEl[0].contains(e.target)\n ) {\n cardScrollTop = 0;\n } else {\n cardScrollTop = $cardScrollableEl.scrollTop();\n }\n isTouched = true;\n touchStartX = e.targetTouches[0].pageX;\n touchStartY = e.targetTouches[0].pageY;\n isScrolling = undefined;\n isV = false;\n isH = false;\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n touchEndX = e.targetTouches[0].pageX;\n touchEndY = e.targetTouches[0].pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));\n }\n if (!isH && !isV) {\n if (!isScrolling && e.targetTouches[0].clientX <= 50) {\n isH = true;\n } else {\n isV = true;\n }\n }\n\n if (!(isH || isV) || (isV && cardScrollTop !== 0)) {\n isTouched = true;\n isMoved = true;\n return;\n }\n if (!isMoved) {\n $cardEl.removeClass('card-transitioning');\n }\n\n isMoved = true;\n progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);\n if ((progress > 0 && isV) || isH) {\n if (isV && app.device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');\n $cardScrollableEl.scrollTop(0);\n }\n e.preventDefault();\n }\n\n if (progress > 1) progress **= 0.3;\n if (progress > (isV ? 1.3 : 1.1)) {\n isTouched = false;\n isMoved = false;\n app.card.close($cardEl);\n } else {\n $cardEl.transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX * (1 - progress * 0.2)}, ${scaleY * (1 - progress * 0.2)})`);\n }\n }\n function onTouchEnd() {\n if (!isTouched || !isMoved) return;\n isTouched = false;\n isMoved = false;\n if (app.device.ios) {\n $cardScrollableEl.css('-webkit-overflow-scrolling', '');\n }\n if (progress >= 0.8) {\n app.card.close($cardEl);\n } else {\n $cardEl\n .addClass('card-transitioning')\n .transform(`translate3d(${app.rtl ? -translateX : translateX}px, ${translateY}px, 0) scale(${scaleX}, ${scaleY})`);\n }\n }\n\n $cardEl[0].detachEventHandlers = function detachEventHandlers() {\n app.off('resize', onResize);\n if (Support.touch && cardParams.swipeToClose) {\n app.off('touchstart:passive', onTouchStart);\n app.off('touchmove:active', onTouchMove);\n app.off('touchend:passive', onTouchEnd);\n }\n };\n\n app.on('resize', onResize);\n if (Support.touch && cardParams.swipeToClose) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n },\n close(cardEl = '.card-expandable.card-opened', animate = true) {\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl || !$cardEl.length) return;\n if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;\n\n const $cardContentEl = $cardEl.children('.card-content');\n const $pageContentEl = $cardEl.parents('.page-content');\n\n const $pageEl = $cardEl.parents('.page').eq(0);\n if (!$pageEl.length) return;\n\n const cardParams = Object.assign({ animate }, app.params.card, $cardEl.dataset());\n const $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);\n\n let $navbarEl;\n let $toolbarEl;\n\n let $backdropEl;\n if ($cardEl.attr('data-backdrop-el')) {\n $backdropEl = $($cardEl.attr('data-backdrop-el'));\n }\n if (cardParams.backdrop) {\n $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');\n }\n\n if (cardParams.hideNavbarOnOpen) {\n $navbarEl = $pageEl.children('.navbar');\n if (!$navbarEl.length) {\n if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;\n }\n if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {\n app.navbar.show($navbarEl, cardParams.animate);\n }\n }\n if (cardParams.hideToolbarOnOpen) {\n $toolbarEl = $pageEl.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = $pageEl.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {\n app.toolbar.show($toolbarEl, cardParams.animate);\n }\n }\n\n $pageEl.removeClass('page-with-card-opened');\n\n if (app.device.ios && $pageContentEl.length) {\n $pageContentEl.css('height', `${$pageContentEl[0].offsetHeight + 1}px`);\n setTimeout(() => {\n $pageContentEl.css('height', '');\n });\n }\n\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');\n }\n\n $cardEl.removeClass('card-opened card-transitioning');\n if (cardParams.animate) {\n $cardEl.addClass('card-closing');\n } else {\n $cardEl.addClass('card-no-transition');\n }\n $cardEl.transform('');\n $cardEl.trigger('card:close');\n app.emit('cardClose', $cardEl[0], $pageEl[0]);\n\n const animateWidth = $cardEl.hasClass('card-expandable-animate-width');\n\n function transitionEnd() {\n if (!animateWidth) {\n $cardContentEl\n .css({\n width: '',\n height: '',\n });\n }\n if ($backdropEl && $backdropEl.length) {\n $backdropEl.removeClass('card-backdrop-in card-backdrop-out');\n }\n $cardEl.removeClass('card-closing card-no-transition');\n $cardEl.trigger('card:closed');\n $cardEl.find('.card-expandable-size').remove();\n app.emit('cardClosed', $cardEl[0], $pageEl[0]);\n }\n if (animateWidth) {\n $cardContentEl\n .css({\n width: '',\n height: '',\n });\n }\n\n $cardContentEl\n .transform('')\n .scrollTop(0, animate ? 300 : 0);\n if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {\n $cardScrollableEl.scrollTop(0, animate ? 300 : 0);\n }\n if (animate) {\n $cardContentEl.transitionEnd(() => {\n transitionEnd();\n });\n } else {\n transitionEnd();\n }\n\n if ($cardEl[0].detachEventHandlers) {\n $cardEl[0].detachEventHandlers();\n delete $cardEl[0].detachEventHandlers;\n }\n },\n toggle(cardEl = '.card-expandable', animate) {\n const app = this;\n const $cardEl = $(cardEl).eq(0);\n if (!$cardEl.length) return;\n if ($cardEl.hasClass('card-opened')) {\n app.card.close($cardEl, animate);\n } else {\n app.card.open($cardEl, animate);\n }\n },\n};\n\nexport default {\n name: 'card',\n params: {\n card: {\n hideNavbarOnOpen: true,\n hideStatusbarOnOpen: true,\n hideToolbarOnOpen: true,\n scrollableEl: '.card-content',\n swipeToClose: true,\n closeByBackdropClick: true,\n backdrop: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n card: {\n open: CardExpandable.open.bind(app),\n close: CardExpandable.close.bind(app),\n toggle: CardExpandable.toggle.bind(app),\n },\n });\n },\n on: {\n pageBeforeIn(page) {\n const app = this;\n if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {\n app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen);\n }\n\n if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {\n let $toolbarEl = page.$el.children('.toolbar');\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.view').children('.toolbar');\n }\n if (!$toolbarEl.length) {\n $toolbarEl = page.$el.parents('.views').children('.toolbar');\n }\n if ($toolbarEl && $toolbarEl.length) {\n app.toolbar.hide($toolbarEl);\n }\n }\n },\n },\n clicks: {\n '.card-close': function closeCard($clickedEl, data) {\n const app = this;\n app.card.close(data.card, data.animate);\n },\n '.card-open': function closeCard($clickedEl, data) {\n const app = this;\n app.card.open(data.card, data.animate);\n },\n '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {\n const app = this;\n if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;\n if ($(e.target).closest('.card-prevent-open, .card-close').length) return;\n app.card.open($clickedEl);\n },\n '.card-backdrop-in': function onBackdropClick() {\n const app = this;\n let needToClose = false;\n if (app.params.card.closeByBackdropClick) needToClose = true;\n const $openedCardEl = $('.card-opened');\n if (!$openedCardEl.length) return;\n if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {\n needToClose = true;\n } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {\n needToClose = false;\n }\n if (needToClose) app.card.close($openedCardEl);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\n// Form Data\nconst FormData = {\n store(form, data) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n // Store form data in app.formsData\n app.form.data[`form-${formId}`] = data;\n\n // Store form data in local storage also\n window.localStorage[`f7form-${formId}`] = JSON.stringify(data);\n },\n get(form) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n if (window.localStorage[`f7form-${formId}`]) {\n return JSON.parse(window.localStorage[`f7form-${formId}`]);\n }\n if (app.form.data[`form-${formId}`]) {\n return app.form.data[`form-${formId}`];\n }\n return undefined;\n },\n remove(form) {\n const app = this;\n let formId = form;\n\n const $formEl = $(form);\n if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {\n formId = $formEl.attr('id');\n }\n\n // Delete form data from app.formsData\n if (app.form.data[`form-${formId}`]) {\n app.form.data[`form-${formId}`] = '';\n delete app.form.data[`form-${formId}`];\n }\n\n // Delete form data from local storage also\n if (window.localStorage[`f7form-${formId}`]) {\n window.localStorage[`f7form-${formId}`] = '';\n window.localStorage.removeItem(`f7form-${formId}`);\n }\n },\n};\n\n// Form Storage\nconst FormStorage = {\n init(formEl) {\n const app = this;\n const $formEl = $(formEl);\n const formId = $formEl.attr('id');\n if (!formId) return;\n const initialData = app.form.getFormData(formId);\n if (initialData) {\n app.form.fillFromData($formEl, initialData);\n }\n function store() {\n const data = app.form.convertToData($formEl);\n if (!data) return;\n app.form.storeFormData(formId, data);\n $formEl.trigger('form:storedata', data);\n app.emit('formStoreData', $formEl[0], data);\n }\n $formEl.on('change submit', store);\n },\n destroy(formEl) {\n const $formEl = $(formEl);\n $formEl.off('change submit');\n },\n};\n\n// Form To/From Data\nfunction formToData(formEl) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if ($formEl.length === 0) return undefined;\n\n // Form data\n const data = {};\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n $formEl.find('input, select, textarea').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`select[name=\"${name}\"] option`).each((index, el) => {\n if (el.selected) data[name].push(el.value);\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n data[name] = [];\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n if (el.checked) data[name].push(el.value);\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n if (el.checked) data[name] = el.value;\n });\n break;\n default:\n data[name] = $inputEl.val();\n break;\n }\n }\n });\n $formEl.trigger('form:todata', data);\n app.emit('formToData', $formEl[0], data);\n\n return data;\n}\nfunction formFromData(formEl, formData) {\n const app = this;\n const $formEl = $(formEl).eq(0);\n if (!$formEl.length) return;\n\n let data = formData;\n const formId = $formEl.attr('id');\n\n if (!data && formId) {\n data = app.form.getFormData(formId);\n }\n\n if (!data) return;\n\n // Skip input types\n const skipTypes = ['submit', 'image', 'button', 'file'];\n const skipNames = [];\n\n $formEl.find('input, select, textarea').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {\n return;\n }\n const name = $inputEl.attr('name');\n const type = $inputEl.attr('type');\n const tag = inputEl.nodeName.toLowerCase();\n if (typeof data[name] === 'undefined' || data[name] === null) return;\n if (skipTypes.indexOf(type) >= 0) return;\n if (skipNames.indexOf(name) >= 0 || !name) return;\n if (tag === 'select' && $inputEl.prop('multiple')) {\n skipNames.push(name);\n $formEl.find(`select[name=\"${name}\"] option`).each((index, el) => {\n const selectEl = el;\n if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;\n else selectEl.selected = false;\n });\n } else {\n switch (type) {\n case 'checkbox':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n const checkboxEl = el;\n if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;\n else checkboxEl.checked = false;\n });\n break;\n case 'radio':\n skipNames.push(name);\n $formEl.find(`input[name=\"${name}\"]`).each((index, el) => {\n const radioEl = el;\n if (data[name] === el.value) radioEl.checked = true;\n else radioEl.checked = false;\n });\n break;\n default:\n $inputEl.val(data[name]);\n break;\n }\n }\n if (tag === 'select' || tag === 'input' || tag === 'textarea') {\n $inputEl.trigger('change', 'fromdata');\n }\n });\n $formEl.trigger('form:fromdata', data);\n app.emit('formFromData', $formEl[0], data);\n}\n\nfunction initAjaxForm() {\n const app = this;\n\n function onSubmitChange(e, fromData) {\n const $formEl = $(this);\n if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;\n if (e.type === 'submit') e.preventDefault();\n\n if (e.type === 'change' && fromData === 'fromdata') return;\n\n const method = ($formEl.attr('method') || 'GET').toUpperCase();\n const contentType = $formEl.prop('enctype') || $formEl.attr('enctype');\n\n const url = $formEl.attr('action');\n if (!url) return;\n\n let data;\n if (method === 'POST') {\n if (contentType === 'application/x-www-form-urlencoded') {\n data = app.form.convertToData($formEl[0]);\n } else {\n data = new window.FormData($formEl[0]);\n }\n } else {\n data = Utils.serializeObject(app.form.convertToData($formEl[0]));\n }\n\n app.request({\n method,\n url,\n contentType,\n data,\n beforeSend(xhr) {\n $formEl.trigger('formajax:beforesend', { data, xhr });\n app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);\n },\n error(xhr) {\n $formEl.trigger('formajax:error', { data, xhr });\n app.emit('formAjaxError', $formEl[0], data, xhr);\n },\n complete(xhr) {\n $formEl.trigger('formajax:complete', { data, xhr });\n app.emit('formAjaxComplete', $formEl[0], data, xhr);\n },\n success(response, status, xhr) {\n $formEl.trigger('formajax:success', { data, xhr });\n app.emit('formAjaxSuccess', $formEl[0], data, xhr);\n },\n });\n }\n $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);\n}\n\nexport default {\n name: 'form',\n create() {\n const app = this;\n Utils.extend(app, {\n form: {\n data: {},\n storeFormData: FormData.store.bind(app),\n getFormData: FormData.get.bind(app),\n removeFormData: FormData.remove.bind(app),\n convertToData: formToData.bind(app),\n fillFromData: formFromData.bind(app),\n storage: {\n init: FormStorage.init.bind(app),\n destroy: FormStorage.destroy.bind(app),\n },\n },\n });\n },\n on: {\n init() {\n const app = this;\n initAjaxForm.call(app);\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each((index, formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.form-store-data').each((index, formEl) => {\n app.form.storage.init(formEl);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.form-store-data').each((index, formEl) => {\n app.form.storage.destroy(formEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.form-store-data').each((index, formEl) => {\n app.form.storage.init(formEl);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\n\nconst Input = {\n ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],\n createTextareaResizableShadow() {\n const $shadowEl = $(document.createElement('textarea'));\n $shadowEl.addClass('textarea-resizable-shadow');\n $shadowEl.prop({\n disabled: true,\n readonly: true,\n });\n Input.textareaResizableShadow = $shadowEl;\n },\n textareaResizableShadow: undefined,\n resizeTextarea(textareaEl) {\n const app = this;\n const $textareaEl = $(textareaEl);\n if (!Input.textareaResizableShadow) {\n Input.createTextareaResizableShadow();\n }\n const $shadowEl = Input.textareaResizableShadow;\n if (!$textareaEl.length) return;\n if (!$textareaEl.hasClass('resizable')) return;\n if (Input.textareaResizableShadow.parents().length === 0) {\n app.root.append($shadowEl);\n }\n\n const styles = window.getComputedStyle($textareaEl[0]);\n ('padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display').split(' ').forEach((style) => {\n let styleValue = styles[style];\n if (('font-size line-height letter-spacing width').split(' ').indexOf(style) >= 0) {\n styleValue = styleValue.replace(',', '.');\n }\n $shadowEl.css(style, styleValue);\n });\n const currentHeight = $textareaEl[0].clientHeight;\n\n $shadowEl.val('');\n const initialHeight = $shadowEl[0].scrollHeight;\n\n $shadowEl.val($textareaEl.val());\n $shadowEl.css('height', 0);\n const scrollHeight = $shadowEl[0].scrollHeight;\n\n if (currentHeight !== scrollHeight) {\n if (scrollHeight > initialHeight) {\n $textareaEl.css('height', `${scrollHeight}px`);\n } else if (scrollHeight < currentHeight) {\n $textareaEl.css('height', '');\n }\n if (scrollHeight > initialHeight || scrollHeight < currentHeight) {\n $textareaEl.trigger('textarea:resize', { initialHeight, currentHeight, scrollHeight });\n app.emit('textareaResize', { initialHeight, currentHeight, scrollHeight });\n }\n }\n },\n validate(inputEl) {\n const $inputEl = $(inputEl);\n if (!$inputEl.length) return true;\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n const validity = $inputEl[0].validity;\n const validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';\n if (!validity) return true;\n if (!validity.valid) {\n let $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');\n if (validationMessage) {\n if ($errorEl.length === 0) {\n $errorEl = $(`<div class=\"${$inputWrapEl.length ? 'input-error-message' : 'item-input-error-message'}\"></div>`);\n $errorEl.insertAfter($inputEl);\n }\n $errorEl.text(validationMessage);\n }\n if ($errorEl.length > 0) {\n $itemInputEl.addClass('item-input-with-error-message');\n $inputWrapEl.addClass('input-with-error-message');\n }\n $itemInputEl.addClass('item-input-invalid');\n $inputWrapEl.addClass('input-invalid');\n $inputEl.addClass('input-invalid');\n return false;\n }\n $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');\n $inputWrapEl.removeClass('input-invalid input-with-error-message');\n $inputEl.removeClass('input-invalid');\n return true;\n },\n validateInputs(el) {\n const app = this;\n const validates = $(el)\n .find('input, textarea, select')\n .toArray()\n .map((inputEl) => app.input.validate(inputEl));\n return validates.indexOf(false) < 0;\n },\n focus(inputEl) {\n const $inputEl = $(inputEl);\n const type = $inputEl.attr('type');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n $inputEl.parents('.item-input').addClass('item-input-focused');\n $inputEl.parents('.input').addClass('input-focused');\n $inputEl.addClass('input-focused');\n },\n blur(inputEl) {\n const $inputEl = $(inputEl);\n $inputEl.parents('.item-input').removeClass('item-input-focused');\n $inputEl.parents('.input').removeClass('input-focused');\n $inputEl.removeClass('input-focused');\n },\n checkEmptyState(inputEl) {\n const app = this;\n let $inputEl = $(inputEl);\n if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {\n $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);\n }\n if (!$inputEl.length) return;\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n let value;\n if (isContentEditable) {\n if ($inputEl.find('.text-editor-placeholder').length) value = '';\n else value = $inputEl.html();\n } else {\n value = $inputEl.val();\n }\n const $itemInputEl = $inputEl.parents('.item-input');\n const $inputWrapEl = $inputEl.parents('.input');\n if ((value && (typeof value === 'string' && value.trim() !== '')) || (Array.isArray(value) && value.length > 0)) {\n $itemInputEl.addClass('item-input-with-value');\n $inputWrapEl.addClass('input-with-value');\n $inputEl.addClass('input-with-value');\n $inputEl.trigger('input:notempty');\n app.emit('inputNotEmpty', $inputEl[0]);\n } else {\n $itemInputEl.removeClass('item-input-with-value');\n $inputWrapEl.removeClass('input-with-value');\n $inputEl.removeClass('input-with-value');\n $inputEl.trigger('input:empty');\n app.emit('inputEmpty', $inputEl[0]);\n }\n },\n scrollIntoView(inputEl, duration = 0, centered, force) {\n const $inputEl = $(inputEl);\n const $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);\n if (!$scrollableEl.length) {\n return false;\n }\n const contentHeight = $scrollableEl[0].offsetHeight;\n const contentScrollTop = $scrollableEl[0].scrollTop;\n const contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);\n const contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);\n const contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;\n\n const inputOffsetTop = $inputEl.offset().top - contentOffsetTop;\n const inputHeight = $inputEl[0].offsetHeight;\n\n const min = (inputOffsetTop + contentScrollTop) - contentPaddingTop;\n const max = ((inputOffsetTop + contentScrollTop) - contentHeight) + contentPaddingBottom + inputHeight;\n const centeredPosition = min + ((max - min) / 2);\n\n if (contentScrollTop > min) {\n $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);\n return true;\n }\n if (contentScrollTop < max) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n return true;\n }\n if (force) {\n $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);\n }\n return false;\n },\n init() {\n const app = this;\n Input.createTextareaResizableShadow();\n function onFocus() {\n const inputEl = this;\n if (app.params.input.scrollIntoViewOnFocus) {\n if (Device.android) {\n $(window).once('resize', () => {\n if (document && document.activeElement === inputEl) {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n });\n } else {\n app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);\n }\n }\n app.input.focus(inputEl);\n }\n function onBlur() {\n const $inputEl = $(this);\n const tag = $inputEl[0].nodeName.toLowerCase();\n app.input.blur($inputEl);\n if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {\n app.input.validate($inputEl);\n }\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();\n }\n }\n function onChange() {\n const $inputEl = $(this);\n const type = $inputEl.attr('type');\n const tag = $inputEl[0].nodeName.toLowerCase();\n const isContentEditable = $inputEl[0].hasAttribute('contenteditable');\n if (Input.ignoreTypes.indexOf(type) >= 0) return;\n\n // Check Empty State\n app.input.checkEmptyState($inputEl);\n if (isContentEditable) return;\n\n // Check validation\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n app.input.validate($inputEl);\n }\n\n // Resize textarea\n if (tag === 'textarea' && $inputEl.hasClass('resizable')) {\n app.input.resizeTextarea($inputEl);\n }\n }\n function onInvalid(e) {\n const $inputEl = $(this);\n if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {\n e.preventDefault();\n app.input.validate($inputEl);\n }\n }\n function clearInput() {\n const $clicked = $(this);\n const $inputEl = $clicked.siblings('input, textarea').eq(0);\n const previousValue = $inputEl.val();\n $inputEl\n .val('')\n .trigger('input change')\n .focus()\n .trigger('input:clear', previousValue);\n app.emit('inputClear', previousValue);\n }\n function preventDefault(e) {\n e.preventDefault();\n }\n $(document).on('click', '.input-clear-button', clearInput);\n $(document).on('mousedown', '.input-clear-button', preventDefault);\n $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);\n $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);\n $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);\n $(document).on('invalid', 'input, textarea, select', onInvalid, true);\n },\n};\n\nexport default {\n name: 'input',\n params: {\n input: {\n scrollIntoViewOnFocus: Device.android,\n scrollIntoViewCentered: false,\n scrollIntoViewDuration: 0,\n scrollIntoViewAlways: false,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n input: {\n scrollIntoView: Input.scrollIntoView.bind(app),\n focus: Input.focus.bind(app),\n blur: Input.blur.bind(app),\n validate: Input.validate.bind(app),\n validateInputs: Input.validateInputs.bind(app),\n checkEmptyState: Input.checkEmptyState.bind(app),\n resizeTextarea: Input.resizeTextarea.bind(app),\n init: Input.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n app.input.init();\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n $tabEl.find('.item-input, .input').each((itemInputIndex, itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $tabEl.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n pageInit(page) {\n const app = this;\n const $pageEl = page.$el;\n $pageEl.find('.item-input, .input').each((itemInputIndex, itemInputEl) => {\n const $itemInputEl = $(itemInputEl);\n $itemInputEl.find('input, select, textarea, [contenteditable]').each((inputIndex, inputEl) => {\n const $inputEl = $(inputEl);\n if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;\n app.input.checkEmptyState($inputEl);\n });\n });\n $pageEl.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n },\n 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {\n const app = this;\n if (instance && instance.$el) {\n instance.$el.find('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n } else {\n $('textarea.resizable').each((textareaIndex, textareaEl) => {\n app.input.resizeTextarea(textareaEl);\n });\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\n\nclass Toggle extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const toggle = this;\n\n const defaults = {};\n\n // Extend defaults with modules params\n toggle.useModulesParams(defaults);\n\n toggle.params = Utils.extend(defaults, params);\n\n const el = toggle.params.el;\n if (!el) return toggle;\n\n const $el = $(el);\n if ($el.length === 0) return toggle;\n\n if ($el[0].f7Toggle) return $el[0].f7Toggle;\n\n const $inputEl = $el.children('input[type=\"checkbox\"]');\n\n Utils.extend(toggle, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl[0],\n disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled,\n });\n\n Object.defineProperty(toggle, 'checked', {\n enumerable: true,\n configurable: true,\n set(checked) {\n if (!toggle || typeof toggle.$inputEl === 'undefined') return;\n if (toggle.checked === checked) return;\n $inputEl[0].checked = checked;\n toggle.$inputEl.trigger('change');\n },\n get() {\n return $inputEl[0].checked;\n },\n });\n\n $el[0].f7Toggle = toggle;\n\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let toggleWidth;\n let touchStartTime;\n let touchStartChecked;\n function handleTouchStart(e) {\n if (isTouched || toggle.disabled) return;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchesDiff = 0;\n\n isTouched = true;\n isScrolling = undefined;\n touchStartTime = Utils.now();\n touchStartChecked = toggle.checked;\n\n toggleWidth = $el[0].offsetWidth;\n Utils.nextTick(() => {\n if (isTouched) {\n $el.addClass('toggle-active-state');\n }\n });\n }\n function handleTouchMove(e) {\n if (!isTouched || toggle.disabled) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const inverter = app.rtl ? -1 : 1;\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n touchesDiff = pageX - touchesStart.x;\n\n\n let changed;\n if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n touchesStart.x = pageX;\n toggle.checked = !touchStartChecked;\n touchStartChecked = !touchStartChecked;\n }\n }\n function handleTouchEnd() {\n if (!isTouched || toggle.disabled) {\n if (isScrolling) $el.removeClass('toggle-active-state');\n isTouched = false;\n return;\n }\n const inverter = app.rtl ? -1 : 1;\n isTouched = false;\n\n $el.removeClass('toggle-active-state');\n\n let changed;\n if ((Utils.now() - touchStartTime) < 300) {\n if (touchesDiff * inverter < 0 && touchStartChecked) {\n changed = true;\n }\n if (touchesDiff * inverter > 0 && !touchStartChecked) {\n changed = true;\n }\n if (changed) {\n toggle.checked = !touchStartChecked;\n }\n }\n }\n function handleInputChange() {\n toggle.$el.trigger('toggle:change');\n toggle.emit('local::change toggleChange', toggle);\n }\n toggle.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n toggle.$inputEl.on('change', handleInputChange);\n };\n toggle.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n toggle.$inputEl.off('change', handleInputChange);\n };\n\n // Install Modules\n toggle.useModules();\n\n // Init\n toggle.init();\n }\n\n toggle() {\n const toggle = this;\n toggle.checked = !toggle.checked;\n }\n\n init() {\n const toggle = this;\n toggle.attachEvents();\n }\n\n destroy() {\n let toggle = this;\n toggle.$el.trigger('toggle:beforedestroy');\n toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);\n delete toggle.$el[0].f7Toggle;\n toggle.detachEvents();\n Utils.deleteProps(toggle);\n toggle = null;\n }\n}\n\nexport default Toggle;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Toggle from './toggle-class';\n\nexport default {\n name: 'toggle',\n create() {\n const app = this;\n app.toggle = ConstructorMethods({\n defaultSelector: '.toggle',\n constructor: Toggle,\n app,\n domProp: 'f7Toggle',\n });\n },\n static: {\n Toggle,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.toggle-init').each((index, toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.toggle-init').each((index, toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.toggle-init').each((index, toggleEl) => app.toggle.create({ el: toggleEl }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.toggle-init').each((index, toggleEl) => {\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n });\n },\n },\n vnode: {\n 'toggle-init': {\n insert(vnode) {\n const app = this;\n const toggleEl = vnode.elm;\n app.toggle.create({ el: toggleEl });\n },\n destroy(vnode) {\n const toggleEl = vnode.elm;\n if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\n\nclass Range extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n\n const range = this;\n\n const defaults = {\n el: null,\n inputEl: null,\n dual: false,\n step: 1,\n label: false,\n min: 0,\n max: 100,\n value: 0,\n draggableBar: true,\n vertical: false,\n verticalReversed: false,\n formatLabel: null,\n scale: false,\n scaleSteps: 5,\n scaleSubSteps: 0,\n formatScaleLabel: null,\n limitKnobPosition: app.theme === 'ios',\n };\n\n // Extend defaults with modules params\n range.useModulesParams(defaults);\n\n range.params = Utils.extend(defaults, params);\n\n const el = range.params.el;\n if (!el) return range;\n\n const $el = $(el);\n if ($el.length === 0) return range;\n\n if ($el[0].f7Range) return $el[0].f7Range;\n\n const dataset = $el.dataset();\n\n ('step min max value scaleSteps scaleSubSteps').split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = parseFloat(dataset[paramName]);\n }\n });\n ('dual label vertical verticalReversed scale').split(' ').forEach((paramName) => {\n if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {\n range.params[paramName] = dataset[paramName];\n }\n });\n\n if (!range.params.value) {\n if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;\n if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {\n range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];\n }\n }\n\n let $inputEl;\n if (!range.params.dual) {\n if (range.params.inputEl) {\n $inputEl = $(range.params.inputEl);\n } else if ($el.find('input[type=\"range\"]').length) {\n $inputEl = $el.find('input[type=\"range\"]').eq(0);\n }\n }\n\n const {\n dual, step, label, min, max, value, vertical, verticalReversed, scale, scaleSteps, scaleSubSteps, limitKnobPosition,\n } = range.params;\n\n Utils.extend(range, {\n app,\n $el,\n el: $el[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n dual,\n step,\n label,\n min,\n max,\n value,\n previousValue: value,\n vertical,\n verticalReversed,\n scale,\n scaleSteps,\n scaleSubSteps,\n limitKnobPosition,\n });\n\n if ($inputEl) {\n ('step min max').split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n range.params[paramName] = parseFloat($inputEl.attr(paramName));\n range[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n if (typeof $inputEl.val() !== 'undefined') {\n range.params.value = parseFloat($inputEl.val());\n range.value = parseFloat($inputEl.val());\n }\n }\n\n // Dual\n if (range.dual) {\n $el.addClass('range-slider-dual');\n }\n if (range.label) {\n $el.addClass('range-slider-label');\n }\n\n // Vertical\n if (range.vertical) {\n $el.addClass('range-slider-vertical');\n if (range.verticalReversed) {\n $el.addClass('range-slider-vertical-reversed');\n }\n } else {\n $el.addClass('range-slider-horizontal');\n }\n\n // Check for layout\n const $barEl = $('<div class=\"range-bar\"></div>');\n const $barActiveEl = $('<div class=\"range-bar-active\"></div>');\n $barEl.append($barActiveEl);\n\n // Create Knobs\n const knobHTML = `\n <div class=\"range-knob-wrap\">\n <div class=\"range-knob\"></div>\n ${range.label ? '<div class=\"range-knob-label\"></div>' : ''}\n </div>\n `;\n const knobs = [$(knobHTML)];\n\n if (range.dual) {\n knobs.push($(knobHTML));\n }\n\n $el.append($barEl);\n knobs.forEach(($knobEl) => {\n $el.append($knobEl);\n });\n\n // Labels\n const labels = [];\n if (range.label) {\n labels.push(knobs[0].find('.range-knob-label'));\n if (range.dual) {\n labels.push(knobs[1].find('.range-knob-label'));\n }\n }\n\n // Scale\n let $scaleEl;\n if (range.scale && range.scaleSteps > 1) {\n $scaleEl = $(`\n <div class=\"range-scale\">\n ${range.renderScale()}\n </div>\n `);\n $el.append($scaleEl);\n }\n\n Utils.extend(range, {\n knobs,\n labels,\n $barEl,\n $barActiveEl,\n $scaleEl,\n });\n\n $el[0].f7Range = range;\n\n // Touch Events\n let isTouched;\n const touchesStart = {};\n let isScrolling;\n let rangeOffset;\n let rangeOffsetLeft;\n let rangeOffsetTop;\n let $touchedKnobEl;\n let dualValueIndex;\n let valueChangedByTouch;\n let targetTouchIdentifier;\n function onTouchChange() {\n valueChangedByTouch = true;\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n if (!range.params.draggableBar) {\n if ($(e.target).closest('.range-knob').length === 0) {\n return;\n }\n }\n valueChangedByTouch = false;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n if (e.type === 'touchstart') {\n targetTouchIdentifier = e.targetTouches[0].identifier;\n }\n\n isTouched = true;\n isScrolling = undefined;\n rangeOffset = $el.offset();\n rangeOffsetLeft = rangeOffset.left;\n rangeOffsetTop = rangeOffset.top;\n\n let progress;\n if (range.vertical) {\n progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = ((rangeOffsetLeft + range.rangeWidth) - touchesStart.x) / range.rangeWidth;\n } else {\n progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = (progress * (range.max - range.min)) + range.min;\n if (range.dual) {\n if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {\n dualValueIndex = 0;\n $touchedKnobEl = range.knobs[0];\n newValue = [newValue, range.value[1]];\n } else {\n dualValueIndex = 1;\n $touchedKnobEl = range.knobs[1];\n newValue = [range.value[0], newValue];\n }\n } else {\n $touchedKnobEl = range.knobs[0];\n newValue = (progress * (range.max - range.min)) + range.min;\n }\n Utils.nextTick(() => {\n if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');\n }, 70);\n range.on('change', onTouchChange);\n range.setValue(newValue, true);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n if (e.type === 'touchmove') {\n for (let i = 0; i < e.targetTouches.length; i += 1) {\n if (e.targetTouches[i].identifier === targetTouchIdentifier) {\n pageX = e.targetTouches[i].pageX;\n pageY = e.targetTouches[i].pageY;\n }\n }\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;\n\n if (typeof isScrolling === 'undefined' && !range.vertical) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n\n let progress;\n if (range.vertical) {\n progress = (pageY - rangeOffsetTop) / range.rangeHeight;\n if (!range.verticalReversed) progress = 1 - progress;\n } else if (range.app.rtl) {\n progress = ((rangeOffsetLeft + range.rangeWidth) - pageX) / range.rangeWidth;\n } else {\n progress = (pageX - rangeOffsetLeft) / range.rangeWidth;\n }\n\n let newValue = (progress * (range.max - range.min)) + range.min;\n if (range.dual) {\n let leftValue;\n let rightValue;\n if (dualValueIndex === 0) {\n leftValue = newValue;\n rightValue = range.value[1];\n if (leftValue > rightValue) {\n rightValue = leftValue;\n }\n } else {\n leftValue = range.value[0];\n rightValue = newValue;\n if (rightValue < leftValue) {\n leftValue = rightValue;\n }\n }\n newValue = [leftValue, rightValue];\n }\n range.setValue(newValue, true);\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend') {\n let touchEnded;\n for (let i = 0; i < e.changedTouches.length; i += 1) {\n if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;\n }\n if (!touchEnded) return;\n }\n if (!isTouched) {\n if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');\n isTouched = false;\n return;\n }\n range.off('change', onTouchChange);\n isTouched = false;\n $touchedKnobEl.removeClass('range-knob-active-state');\n if (valueChangedByTouch && range.$inputEl && !range.dual) {\n range.$inputEl.trigger('change');\n }\n valueChangedByTouch = false;\n if (typeof range.previousValue !== 'undefined') {\n if (\n (\n range.dual\n && (\n range.previousValue[0] !== range.value[0]\n || range.previousValue[1] !== range.value[1]\n )\n )\n || (\n !range.dual\n && range.previousValue !== range.value\n )\n ) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n }\n }\n\n function handleResize() {\n range.calcSize();\n range.layout();\n }\n let parentModals;\n let parentPanel;\n let parentPage;\n range.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n range.$el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('tabShow', handleResize);\n app.on('resize', handleResize);\n parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');\n parentModals.on('modal:open', handleResize);\n parentPanel = range.$el.parents('.panel');\n parentPanel.on('panel:open', handleResize);\n parentPage = range.$el.parents('.page').eq(0);\n parentPage.on('page:reinit', handleResize);\n };\n range.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n range.$el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('tabShow', handleResize);\n app.off('resize', handleResize);\n if (parentModals) {\n parentModals.off('modal:open', handleResize);\n }\n if (parentPanel) {\n parentPanel.off('panel:open', handleResize);\n }\n if (parentPage) {\n parentPage.off('page:reinit', handleResize);\n }\n parentModals = null;\n parentPanel = null;\n parentPage = null;\n };\n\n // Install Modules\n range.useModules();\n\n // Init\n range.init();\n\n return range;\n }\n\n calcSize() {\n const range = this;\n if (range.vertical) {\n const height = range.$el.outerHeight();\n if (height === 0) return;\n range.rangeHeight = height;\n range.knobHeight = range.knobs[0].outerHeight();\n } else {\n const width = range.$el.outerWidth();\n if (width === 0) return;\n range.rangeWidth = width;\n range.knobWidth = range.knobs[0].outerWidth();\n }\n }\n\n layout() {\n const range = this;\n const {\n app,\n knobWidth,\n knobHeight,\n rangeWidth,\n rangeHeight,\n min,\n max,\n knobs,\n $barActiveEl,\n value,\n label,\n labels,\n vertical,\n verticalReversed,\n limitKnobPosition,\n } = range;\n const knobSize = vertical ? knobHeight : knobWidth;\n const rangeSize = vertical ? rangeHeight : rangeWidth;\n // eslint-disable-next-line\n const positionProperty = vertical\n ? (verticalReversed ? 'top' : 'bottom')\n : (app.rtl ? 'right' : 'left');\n if (range.dual) {\n const progress = [((value[0] - min) / (max - min)), ((value[1] - min) / (max - min))];\n $barActiveEl.css({\n [positionProperty]: `${progress[0] * 100}%`,\n [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`,\n });\n knobs.forEach(($knobEl, knobIndex) => {\n let startPos = rangeSize * progress[knobIndex];\n if (limitKnobPosition) {\n const realStartPos = (rangeSize * progress[knobIndex]) - (knobSize / 2);\n if (realStartPos < 0) startPos = knobSize / 2;\n if ((realStartPos + knobSize) > rangeSize) startPos = rangeSize - (knobSize / 2);\n }\n $knobEl.css(positionProperty, `${startPos}px`);\n if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));\n });\n } else {\n const progress = ((value - min) / (max - min));\n $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);\n\n let startPos = rangeSize * progress;\n if (limitKnobPosition) {\n const realStartPos = (rangeSize * progress) - (knobSize / 2);\n if (realStartPos < 0) startPos = knobSize / 2;\n if ((realStartPos + knobSize) > rangeSize) startPos = rangeSize - (knobSize / 2);\n }\n knobs[0].css(positionProperty, `${startPos}px`);\n if (label) labels[0].text(range.formatLabel(value, labels[0][0]));\n }\n if ((range.dual && value.indexOf(min) >= 0) || (!range.dual && value === min)) {\n range.$el.addClass('range-slider-min');\n } else {\n range.$el.removeClass('range-slider-min');\n }\n if ((range.dual && value.indexOf(max) >= 0) || (!range.dual && value === max)) {\n range.$el.addClass('range-slider-max');\n } else {\n range.$el.removeClass('range-slider-max');\n }\n }\n\n setValue(newValue, byTouchMove) {\n const range = this;\n const { step, min, max } = range;\n let valueChanged;\n let oldValue;\n if (range.dual) {\n oldValue = [range.value[0], range.value[1]];\n let newValues = newValue;\n if (!Array.isArray(newValues)) newValues = [newValue, newValue];\n if (newValue[0] > newValue[1]) {\n newValues = [newValues[0], newValues[0]];\n }\n newValues = newValues.map(value => Math.max(Math.min(Math.round(value / step) * step, max), min));\n if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {\n return range;\n }\n newValues.forEach((value, valueIndex) => {\n range.value[valueIndex] = value;\n });\n valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];\n range.layout();\n } else {\n oldValue = range.value;\n const value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);\n range.value = value;\n range.layout();\n valueChanged = oldValue !== value;\n }\n\n if (valueChanged) {\n range.previousValue = oldValue;\n }\n // Events\n if (!valueChanged) return range;\n range.$el.trigger('range:change', range.value);\n if (range.$inputEl && !range.dual) {\n range.$inputEl.val(range.value);\n if (!byTouchMove) {\n range.$inputEl.trigger('input change');\n } else {\n range.$inputEl.trigger('input');\n }\n }\n if (!byTouchMove) {\n range.$el.trigger('range:changed', range.value);\n range.emit('local::changed rangeChanged', range, range.value);\n }\n range.emit('local::change rangeChange', range, range.value);\n return range;\n }\n\n getValue() {\n return this.value;\n }\n\n formatLabel(value, labelEl) {\n const range = this;\n if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);\n return value;\n }\n\n formatScaleLabel(value) {\n const range = this;\n if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);\n return value;\n }\n\n renderScale() {\n const range = this;\n const { app, verticalReversed, vertical } = range;\n\n // eslint-disable-next-line\n const positionProperty = vertical\n ? (verticalReversed ? 'top' : 'bottom')\n : (app.rtl ? 'right' : 'left');\n\n let html = '';\n\n Array\n .from({ length: range.scaleSteps + 1 })\n .forEach((scaleEl, index) => {\n const scaleStepValue = (range.max - range.min) / range.scaleSteps;\n const scaleValue = range.min + scaleStepValue * index;\n const progress = ((scaleValue - range.min) / (range.max - range.min));\n html += `<div class=\"range-scale-step\" style=\"${positionProperty}: ${progress * 100}%\">${range.formatScaleLabel(scaleValue)}</div>`;\n\n if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {\n Array\n .from({ length: range.scaleSubSteps - 1 })\n .forEach((subStepEl, subIndex) => {\n const subStep = scaleStepValue / range.scaleSubSteps;\n const scaleSubValue = scaleValue + subStep * (subIndex + 1);\n const subProgress = ((scaleSubValue - range.min) / (range.max - range.min));\n html += `<div class=\"range-scale-step range-scale-substep\" style=\"${positionProperty}: ${subProgress * 100}%\"></div>`;\n });\n }\n });\n\n return html;\n }\n\n updateScale() {\n const range = this;\n if (!range.scale || range.scaleSteps < 2) {\n if (range.$scaleEl) range.$scaleEl.remove();\n delete range.$scaleEl;\n return;\n }\n if (!range.$scaleEl) {\n range.$scaleEl = $('<div class=\"range-scale\"></div>');\n range.$el.append(range.$scaleEl);\n }\n\n range.$scaleEl.html(range.renderScale());\n }\n\n init() {\n const range = this;\n range.calcSize();\n range.layout();\n range.attachEvents();\n return range;\n }\n\n destroy() {\n let range = this;\n range.$el.trigger('range:beforedestroy');\n range.emit('local::beforeDestroy rangeBeforeDestroy', range);\n delete range.$el[0].f7Range;\n range.detachEvents();\n Utils.deleteProps(range);\n range = null;\n }\n}\n\nexport default Range;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Range from './range-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'range',\n create() {\n const app = this;\n app.range = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.range-slider',\n constructor: Range,\n app,\n domProp: 'f7Range',\n }),\n {\n getValue(el = '.range-slider') {\n const range = app.range.get(el);\n if (range) return range.getValue();\n return undefined;\n },\n setValue(el = '.range-slider', value) {\n const range = app.range.get(el);\n if (range) return range.setValue(value);\n return undefined;\n },\n }\n );\n },\n static: {\n Range,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.range-slider-init').each((index, rangeEl) => new Range(app, {\n el: rangeEl,\n }));\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.range-slider-init').each((index, rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.range-slider-init').each((index, rangeEl) => new Range(app, {\n el: rangeEl,\n }));\n },\n pageBeforeRemove(page) {\n page.$el.find('.range-slider-init').each((index, rangeEl) => {\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n });\n },\n },\n vnode: {\n 'range-slider-init': {\n insert(vnode) {\n const rangeEl = vnode.elm;\n const app = this;\n app.range.create({ el: rangeEl });\n },\n destroy(vnode) {\n const rangeEl = vnode.elm;\n if (rangeEl.f7Range) rangeEl.f7Range.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Stepper extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const stepper = this;\n\n const defaults = {\n el: null,\n inputEl: null,\n valueEl: null,\n value: 0,\n formatValue: null,\n step: 1,\n min: 0,\n max: 100,\n watchInput: true,\n autorepeat: false,\n autorepeatDynamic: false,\n wraps: false,\n manualInputMode: false,\n decimalPoint: 4,\n buttonsEndInputMode: true,\n };\n\n // Extend defaults with modules params\n stepper.useModulesParams(defaults);\n\n stepper.params = Utils.extend(defaults, params);\n if (stepper.params.value < stepper.params.min) {\n stepper.params.value = stepper.params.min;\n }\n if (stepper.params.value > stepper.params.max) {\n stepper.params.value = stepper.params.max;\n }\n\n const el = stepper.params.el;\n if (!el) return stepper;\n\n const $el = $(el);\n if ($el.length === 0) return stepper;\n\n if ($el[0].f7Stepper) return $el[0].f7Stepper;\n\n let $inputEl;\n if (stepper.params.inputEl) {\n $inputEl = $(stepper.params.inputEl);\n } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {\n $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);\n }\n\n if ($inputEl && $inputEl.length) {\n ('step min max').split(' ').forEach((paramName) => {\n if (!params[paramName] && $inputEl.attr(paramName)) {\n stepper.params[paramName] = parseFloat($inputEl.attr(paramName));\n }\n });\n\n const decimalPoint = parseInt(stepper.params.decimalPoint, 10);\n if (Number.isNaN(decimalPoint)) {\n stepper.params.decimalPoint = 0;\n } else {\n stepper.params.decimalPoint = decimalPoint;\n }\n\n const inputValue = parseFloat($inputEl.val());\n if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {\n stepper.params.value = inputValue;\n }\n }\n\n let $valueEl;\n if (stepper.params.valueEl) {\n $valueEl = $(stepper.params.valueEl);\n } else if ($el.find('.stepper-value').length) {\n $valueEl = $el.find('.stepper-value').eq(0);\n }\n\n const $buttonPlusEl = $el.find('.stepper-button-plus');\n const $buttonMinusEl = $el.find('.stepper-button-minus');\n\n const { step, min, max, value, decimalPoint } = stepper.params;\n\n Utils.extend(stepper, {\n app,\n $el,\n el: $el[0],\n $buttonPlusEl,\n buttonPlusEl: $buttonPlusEl[0],\n $buttonMinusEl,\n buttonMinusEl: $buttonMinusEl[0],\n $inputEl,\n inputEl: $inputEl ? $inputEl[0] : undefined,\n $valueEl,\n valueEl: $valueEl ? $valueEl[0] : undefined,\n step,\n min,\n max,\n value,\n decimalPoint,\n typeModeChanged: false,\n });\n\n $el[0].f7Stepper = stepper;\n\n // Handle Events\n const touchesStart = {};\n let isTouched;\n let isScrolling;\n let preventButtonClick;\n let intervalId;\n let timeoutId;\n let autorepeatAction = null;\n let autorepeatInAction = false;\n let manualInput = false;\n\n function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n if (current === 1) {\n preventButtonClick = true;\n autorepeatInAction = true;\n }\n clearInterval(intervalId);\n action();\n intervalId = setInterval(() => {\n action();\n }, repeatEvery);\n if (current < progressions) {\n dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);\n }\n }, current === 1 ? startsIn : progressionStep);\n }\n\n function onTouchStart(e) {\n if (isTouched) return;\n if (manualInput) { return; }\n if ($(e.target).closest($buttonPlusEl).length) {\n autorepeatAction = 'increment';\n } else if ($(e.target).closest($buttonMinusEl).length) {\n autorepeatAction = 'decrement';\n }\n if (!autorepeatAction) return;\n\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n isScrolling = undefined;\n\n const progressions = stepper.params.autorepeatDynamic ? 4 : 1;\n dynamicRepeat(1, progressions, 500, 1000, 300, () => {\n stepper[autorepeatAction]();\n });\n }\n function onTouchMove(e) {\n if (!isTouched) return;\n if (manualInput) { return; }\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (typeof isScrolling === 'undefined' && !autorepeatInAction) {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n const distance = (((pageX - touchesStart.x) ** 2) + ((pageY - touchesStart.y) ** 2)) ** 0.5;\n\n if (isScrolling || distance > 20) {\n isTouched = false;\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n }\n }\n function onTouchEnd() {\n clearTimeout(timeoutId);\n clearInterval(intervalId);\n autorepeatAction = null;\n autorepeatInAction = false;\n isTouched = false;\n }\n\n function onMinusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.decrement(true);\n }\n function onPlusClick() {\n if (manualInput) {\n if (stepper.params.buttonsEndInputMode) {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n return;\n }\n if (preventButtonClick) {\n preventButtonClick = false;\n return;\n }\n stepper.increment(true);\n }\n function onInputClick(e) {\n if (!e.target.readOnly && stepper.params.manualInputMode) {\n manualInput = true;\n if (typeof e.target.selectionStart === 'number') {\n e.target.selectionStart = e.target.value.length;\n e.target.selectionEnd = e.target.value.length;\n }\n }\n }\n function onInputKey(e) {\n if (e.keyCode === 13 || e.which === 13) {\n e.preventDefault();\n manualInput = false;\n stepper.endTypeMode();\n }\n }\n function onInputBlur() {\n manualInput = false;\n stepper.endTypeMode(true);\n }\n function onInput(e) {\n if (manualInput) {\n stepper.typeValue(e.target.value);\n return;\n }\n if (e.detail && e.detail.sentByF7Stepper) return;\n stepper.setValue(e.target.value, true);\n }\n stepper.attachEvents = function attachEvents() {\n $buttonMinusEl.on('click', onMinusClick);\n $buttonPlusEl.on('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.on('input', onInput);\n $inputEl.on('click', onInputClick);\n $inputEl.on('blur', onInputBlur);\n $inputEl.on('keyup', onInputKey);\n }\n if (stepper.params.autorepeat) {\n app.on('touchstart:passive', onTouchStart);\n app.on('touchmove:active', onTouchMove);\n app.on('touchend:passive', onTouchEnd);\n }\n };\n stepper.detachEvents = function detachEvents() {\n $buttonMinusEl.off('click', onMinusClick);\n $buttonPlusEl.off('click', onPlusClick);\n if (stepper.params.watchInput && $inputEl && $inputEl.length) {\n $inputEl.off('input', onInput);\n $inputEl.off('click', onInputClick);\n $inputEl.off('blur', onInputBlur);\n $inputEl.off('keyup', onInputKey);\n }\n };\n\n // Install Modules\n stepper.useModules();\n\n // Init\n stepper.init();\n\n return stepper;\n }\n\n minus() {\n return this.decrement();\n }\n\n plus() {\n return this.increment();\n }\n\n decrement() {\n const stepper = this;\n return stepper.setValue(stepper.value - stepper.step, false, true);\n }\n\n increment() {\n const stepper = this;\n return stepper.setValue(stepper.value + stepper.step, false, true);\n }\n\n setValue(newValue, forceUpdate, withWraps) {\n const stepper = this;\n const { step, min, max } = stepper;\n\n const oldValue = stepper.value;\n\n let value = Math.round(newValue / step) * step;\n if (stepper.params.wraps && withWraps) {\n if (value > max) value = min;\n if (value < min) value = max;\n } else {\n value = Math.max(Math.min(value, max), min);\n }\n\n if (Number.isNaN(value)) {\n value = oldValue;\n }\n stepper.value = value;\n\n const valueChanged = oldValue !== value;\n\n // Events\n if (!valueChanged && !forceUpdate) return stepper;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n endTypeMode(noBlur) {\n const stepper = this;\n const { min, max } = stepper;\n let value = parseFloat(stepper.value);\n\n if (Number.isNaN(value)) value = 0;\n\n value = Math.max(Math.min(value, max), min);\n\n stepper.value = value;\n if (!stepper.typeModeChanged) {\n if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {\n stepper.$inputEl.blur();\n }\n return stepper;\n }\n stepper.typeModeChanged = false;\n\n stepper.$el.trigger('stepper:change', stepper.value);\n const formattedValue = stepper.formatValue(stepper.value);\n if (stepper.$inputEl && stepper.$inputEl.length) {\n stepper.$inputEl.val(formattedValue);\n stepper.$inputEl.trigger('input change', { sentByF7Stepper: true });\n if (!noBlur) stepper.$inputEl.blur();\n }\n if (stepper.$valueEl && stepper.$valueEl.length) {\n stepper.$valueEl.html(formattedValue);\n }\n stepper.emit('local::change stepperChange', stepper, stepper.value);\n return stepper;\n }\n\n typeValue(value) {\n const stepper = this;\n stepper.typeModeChanged = true;\n let inputTxt = String(value);\n if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {\n if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {\n inputTxt = inputTxt.slice(0, -1);\n stepper.value = inputTxt;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n } else {\n let newValue = parseFloat(inputTxt.replace(',', '.'));\n if (newValue === 0) {\n stepper.value = inputTxt.replace(',', '.');\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n if (Number.isNaN(newValue)) {\n stepper.value = 0;\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n const powVal = 10 ** stepper.params.decimalPoint;\n newValue = (Math.round((newValue) * powVal)).toFixed(stepper.params.decimalPoint + 1) / powVal;\n stepper.value = parseFloat(String(newValue).replace(',', '.'));\n stepper.$inputEl.val(stepper.value);\n return stepper;\n }\n stepper.value = inputTxt;\n stepper.$inputEl.val(inputTxt);\n return stepper;\n }\n\n getValue() {\n return this.value;\n }\n\n formatValue(value) {\n const stepper = this;\n if (!stepper.params.formatValue) return value;\n return stepper.params.formatValue.call(stepper, value);\n }\n\n init() {\n const stepper = this;\n stepper.attachEvents();\n if (stepper.$valueEl && stepper.$valueEl.length) {\n const formattedValue = stepper.formatValue(stepper.value);\n stepper.$valueEl.html(formattedValue);\n }\n return stepper;\n }\n\n destroy() {\n let stepper = this;\n stepper.$el.trigger('stepper:beforedestroy');\n stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);\n delete stepper.$el[0].f7Stepper;\n stepper.detachEvents();\n Utils.deleteProps(stepper);\n stepper = null;\n }\n}\n\nexport default Stepper;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Stepper from './stepper-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'stepper',\n create() {\n const app = this;\n app.stepper = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.stepper',\n constructor: Stepper,\n app,\n domProp: 'f7Stepper',\n }),\n {\n getValue(el = '.stepper') {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.getValue();\n return undefined;\n },\n setValue(el = '.stepper', value) {\n const stepper = app.stepper.get(el);\n if (stepper) return stepper.setValue(value);\n return undefined;\n },\n }\n );\n },\n static: {\n Stepper,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.stepper-init').each((index, stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.stepper-init').each((index, stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.stepper-init').each((index, stepperEl) => {\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.stepper-init').each((index, stepperEl) => {\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n });\n },\n },\n vnode: {\n 'stepper-init': {\n insert(vnode) {\n const app = this;\n const stepperEl = vnode.elm;\n const dataset = $(stepperEl).dataset();\n app.stepper.create(Utils.extend({ el: stepperEl }, dataset || {}));\n },\n destroy(vnode) {\n const stepperEl = vnode.elm;\n if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass SmartSelect extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const ss = this;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.smartSelect);\n\n if (typeof defaults.searchbarDisableButton === 'undefined') {\n defaults.searchbarDisableButton = app.theme !== 'aurora';\n }\n\n // Extend defaults with modules params\n ss.useModulesParams(defaults);\n\n ss.params = Utils.extend({}, defaults, params);\n\n ss.app = app;\n\n const $el = $(ss.params.el).eq(0);\n if ($el.length === 0) return ss;\n\n if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect;\n\n const $selectEl = $el.find('select').eq(0);\n if ($selectEl.length === 0) return ss;\n\n let $valueEl;\n if (ss.params.setValueText) {\n $valueEl = $(ss.params.valueEl);\n if ($valueEl.length === 0) {\n $valueEl = $el.find('.item-after');\n }\n if ($valueEl.length === 0) {\n $valueEl = $('<div class=\"item-after\"></div>');\n $valueEl.insertAfter($el.find('.item-title'));\n }\n }\n\n // Url\n let url = params.url;\n if (!url) {\n if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');\n else if ($selectEl.attr('name')) url = `${$selectEl.attr('name').toLowerCase()}-select/`;\n }\n if (!url) url = ss.params.url;\n\n const multiple = $selectEl[0].multiple;\n const inputType = multiple ? 'checkbox' : 'radio';\n const id = Utils.id();\n\n Utils.extend(ss, {\n $el,\n el: $el[0],\n $selectEl,\n selectEl: $selectEl[0],\n $valueEl,\n valueEl: $valueEl && $valueEl[0],\n url,\n multiple,\n inputType,\n id,\n inputName: `${inputType}-${id}`,\n selectName: $selectEl.attr('name'),\n maxLength: $selectEl.attr('maxlength') || params.maxLength,\n });\n\n $el[0].f7SmartSelect = ss;\n\n // Events\n function onClick() {\n ss.open();\n }\n function onChange() {\n const value = ss.$selectEl.val();\n ss.$el.trigger('smartselect:change', value);\n ss.emit('local::change smartSelectChange', ss, value);\n if (ss.vl) {\n ss.vl.clearCache();\n }\n ss.setValueText();\n }\n ss.attachEvents = function attachEvents() {\n $el.on('click', onClick);\n $el.on('change', 'select', onChange);\n };\n ss.detachEvents = function detachEvents() {\n $el.off('click', onClick);\n $el.off('change', 'select', onChange);\n };\n\n function handleInputChange() {\n let optionEl;\n let text;\n const inputEl = this;\n const value = inputEl.value;\n let optionText = [];\n let displayAs;\n if (inputEl.type === 'checkbox') {\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (optionEl.value === value) {\n optionEl.selected = inputEl.checked;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${value}\"]`)[0];\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n ss.selectEl.value = value;\n }\n\n ss.$selectEl.trigger('change');\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(optionText));\n }\n if (ss.params.closeOnSelect && ss.inputType === 'radio') {\n ss.close();\n }\n }\n\n ss.attachInputsEvents = function attachInputsEvents() {\n ss.$containerEl.on('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n ss.detachInputsEvents = function detachInputsEvents() {\n ss.$containerEl.off('change', 'input[type=\"checkbox\"], input[type=\"radio\"]', handleInputChange);\n };\n\n // Install Modules\n ss.useModules();\n\n // Init\n ss.init();\n\n return ss;\n }\n\n setValue(value) {\n const ss = this;\n let newValue = value;\n let optionText = [];\n let optionEl;\n let displayAs;\n let text;\n if (ss.multiple) {\n if (!Array.isArray(newValue)) newValue = [newValue];\n for (let i = 0; i < ss.selectEl.options.length; i += 1) {\n optionEl = ss.selectEl.options[i];\n if (newValue.indexOf(optionEl.value) >= 0) {\n optionEl.selected = true;\n } else {\n optionEl.selected = false;\n }\n if (optionEl.selected) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText.push(text.trim());\n }\n }\n } else {\n optionEl = ss.$selectEl.find(`option[value=\"${newValue}\"]`)[0];\n if (optionEl) {\n displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');\n text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;\n optionText = [text];\n }\n ss.selectEl.value = newValue;\n }\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(optionText));\n }\n ss.$selectEl.trigger('change');\n return ss;\n }\n\n unsetValue() {\n const ss = this;\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText([]));\n }\n ss.$selectEl.find('option').each((optionIndex, optionEl) => {\n optionEl.selected = false;\n optionEl.checked = false;\n });\n ss.$selectEl[0].value = null;\n\n if (ss.$containerEl) {\n ss.$containerEl.find(`input[name=\"${ss.inputName}\"][type=\"checkbox\"], input[name=\"${ss.inputName}\"][type=\"radio\"]`).prop('checked', false);\n }\n ss.$selectEl.trigger('change');\n }\n\n getValue() {\n const ss = this;\n return ss.$selectEl.val();\n }\n\n get view() {\n const { params, $el } = this;\n let view;\n if (params.view) {\n view = params.view;\n }\n if (!view) {\n view = $el.parents('.view').length && $el.parents('.view')[0].f7View;\n }\n if (!view && params.openIn === 'page') {\n throw Error('Smart Select requires initialized View');\n }\n return view;\n }\n\n checkMaxLength() {\n const ss = this;\n const $containerEl = ss.$containerEl;\n if (ss.selectEl.selectedOptions.length >= ss.maxLength) {\n $containerEl.find('input[type=\"checkbox\"]').each((index, inputEl) => {\n if (!inputEl.checked) {\n $(inputEl).parents('li').addClass('disabled');\n } else {\n $(inputEl).parents('li').removeClass('disabled');\n }\n });\n } else {\n $containerEl.find('.disabled').removeClass('disabled');\n }\n }\n\n formatValueText(values) {\n const ss = this;\n let textValue;\n if (ss.params.formatValueText) {\n textValue = ss.params.formatValueText.call(ss, values, ss);\n } else {\n textValue = values.join(', ');\n }\n return textValue;\n }\n\n setValueText(value) {\n const ss = this;\n let valueArray = [];\n if (typeof value !== 'undefined') {\n if (Array.isArray(value)) {\n valueArray = value;\n } else {\n valueArray = [value];\n }\n } else {\n ss.$selectEl.find('option').each((optionIndex, optionEl) => {\n const $optionEl = $(optionEl);\n if (optionEl.selected) {\n const displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');\n if (displayAs && typeof displayAs !== 'undefined') {\n valueArray.push(displayAs);\n } else {\n valueArray.push(optionEl.textContent.trim());\n }\n }\n });\n }\n if (ss.params.setValueText) {\n ss.$valueEl.text(ss.formatValueText(valueArray));\n }\n }\n\n getItemsData() {\n const ss = this;\n const theme = ss.app.theme;\n const items = [];\n let previousGroupEl;\n ss.$selectEl.find('option').each((index, optionEl) => {\n const $optionEl = $(optionEl);\n const optionData = $optionEl.dataset();\n const optionImage = optionData.optionImage || ss.params.optionImage;\n const optionIcon = optionData.optionIcon || ss.params.optionIcon;\n const optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);\n const optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);\n const optionIconAurora = theme === 'aurora' && (optionData.optionIconAurora || ss.params.optionIconAurora);\n const optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd || optionIconAurora;\n const optionColor = optionData.optionColor;\n\n let optionClassName = optionData.optionClass || '';\n if ($optionEl[0].disabled) optionClassName += ' disabled';\n\n const optionGroupEl = $optionEl.parent('optgroup')[0];\n const optionGroupLabel = optionGroupEl && optionGroupEl.label;\n let optionIsLabel = false;\n if (optionGroupEl && optionGroupEl !== previousGroupEl) {\n optionIsLabel = true;\n previousGroupEl = optionGroupEl;\n items.push({\n groupLabel: optionGroupLabel,\n isLabel: optionIsLabel,\n });\n }\n items.push({\n value: $optionEl[0].value,\n text: $optionEl[0].textContent.trim(),\n selected: $optionEl[0].selected,\n groupEl: optionGroupEl,\n groupLabel: optionGroupLabel,\n image: optionImage,\n icon: optionIcon,\n iconIos: optionIconIos,\n iconMd: optionIconMd,\n iconAurora: optionIconAurora,\n color: optionColor,\n className: optionClassName,\n disabled: $optionEl[0].disabled,\n id: ss.id,\n hasMedia: optionHasMedia,\n checkbox: ss.inputType === 'checkbox',\n radio: ss.inputType === 'radio',\n inputName: ss.inputName,\n inputType: ss.inputType,\n });\n });\n ss.items = items;\n return items;\n }\n\n renderSearchbar() {\n const ss = this;\n if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);\n const searchbarHTML = `\n <form class=\"searchbar\">\n <div class=\"searchbar-inner\">\n <div class=\"searchbar-input-wrap\">\n <input type=\"search\" placeholder=\"${ss.params.searchbarPlaceholder}\"/>\n <i class=\"searchbar-icon\"></i>\n <span class=\"input-clear-button\"></span>\n </div>\n ${ss.params.searchbarDisableButton ? `\n <span class=\"searchbar-disable-button\">${ss.params.searchbarDisableText}</span>\n ` : ''}\n </div>\n </form>\n `;\n return searchbarHTML;\n }\n\n renderItem(item, index) {\n const ss = this;\n if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);\n\n function getIconContent(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n return iconValue.split(':')[1];\n }\n return '';\n }\n function getIconClass(iconValue = '') {\n if (iconValue.indexOf(':') >= 0) {\n let className = iconValue.split(':')[0];\n if (className === 'f7') className = 'f7-icons';\n if (className === 'material') className = 'material-icons';\n return className;\n }\n return iconValue;\n }\n\n let itemHtml;\n if (item.isLabel) {\n itemHtml = `<li class=\"item-divider\">${item.groupLabel}</li>`;\n } else {\n let selected = item.selected;\n let disabled;\n if (ss.params.virtualList) {\n const ssValue = ss.getValue();\n selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;\n if (ss.multiple) {\n disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);\n }\n }\n\n const { icon, iconIos, iconMd, iconAurora } = item;\n const hasIcon = icon || iconIos || iconMd || iconAurora;\n const iconContent = getIconContent(icon || iconIos || iconMd || iconAurora || '');\n const iconClass = getIconClass(icon || iconIos || iconMd || iconAurora || '');\n\n itemHtml = `\n <li class=\"${item.className || ''}${disabled ? ' disabled' : ''}\">\n <label class=\"item-${item.inputType} item-content\">\n <input type=\"${item.inputType}\" name=\"${item.inputName}\" value=\"${item.value}\" ${selected ? 'checked' : ''}/>\n <i class=\"icon icon-${item.inputType}\"></i>\n ${item.hasMedia ? `\n <div class=\"item-media\">\n ${hasIcon ? `<i class=\"icon ${iconClass}\">${iconContent}</i>` : ''}\n ${item.image ? `<img src=\"${item.image}\">` : ''}\n </div>\n ` : ''}\n <div class=\"item-inner\">\n <div class=\"item-title${item.color ? ` text-color-${item.color}` : ''}\">${item.text}</div>\n </div>\n </label>\n </li>\n `;\n }\n return itemHtml;\n }\n\n renderItems() {\n const ss = this;\n if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);\n const itemsHtml = `\n ${ss.items.map((item, index) => `${ss.renderItem(item, index)}`).join('')}\n `;\n return itemsHtml;\n }\n\n renderPage() {\n const ss = this;\n if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass;\n const pageHtml = `\n <div class=\"page smart-select-page ${cssClass}\" data-name=\"smart-select-page\" data-select-name=\"${ss.selectName}\">\n <div class=\"navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner sliding ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}\">\n <div class=\"left\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">${ss.params.pageBackLinkText}</span>\n </a>\n </div>\n ${pageTitle ? `<div class=\"title\">${pageTitle}</div>` : ''}\n ${ss.params.searchbar ? `<div class=\"subnavbar\">${ss.renderSearchbar()}</div>` : ''}\n </div>\n </div>\n ${ss.params.searchbar ? '<div class=\"searchbar-backdrop\"></div>' : ''}\n <div class=\"page-content\">\n <div class=\"list smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}\">\n <ul>${!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n `;\n return pageHtml;\n }\n\n renderPopup() {\n const ss = this;\n if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);\n let pageTitle = ss.params.pageTitle;\n if (typeof pageTitle === 'undefined') {\n const $itemTitleEl = ss.$el.find('.item-title');\n pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';\n }\n const cssClass = ss.params.cssClass || '';\n const popupHtml = `\n <div class=\"popup smart-select-popup ${cssClass} ${ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''}\" data-select-name=\"${ss.selectName}\">\n <div class=\"view\">\n <div class=\"page smart-select-page ${ss.params.searchbar ? 'page-with-subnavbar' : ''}\" data-name=\"smart-select-page\">\n <div class=\"navbar ${ss.params.navbarColorTheme ? `color-${ss.params.navbarColorTheme}` : ''}\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner sliding\">\n ${pageTitle ? `<div class=\"title\">${pageTitle}</div>` : ''}\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".smart-select-popup[data-select-name='${ss.selectName}']\">${ss.params.popupCloseLinkText}</span></a>\n </div>\n ${ss.params.searchbar ? `<div class=\"subnavbar\">${ss.renderSearchbar()}</div>` : ''}\n </div>\n </div>\n ${ss.params.searchbar ? '<div class=\"searchbar-backdrop\"></div>' : ''}\n <div class=\"page-content\">\n <div class=\"list smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}\">\n <ul>${!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n `;\n return popupHtml;\n }\n\n renderSheet() {\n const ss = this;\n if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n const sheetHtml = `\n <div class=\"sheet-modal smart-select-sheet ${cssClass}\" data-select-name=\"${ss.selectName}\">\n <div class=\"toolbar toolbar-top ${ss.params.toolbarColorTheme ? `color-${ss.params.toolbarColorTheme}` : ''}\">\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a class=\"link sheet-close\">${ss.params.sheetCloseLinkText}</a>\n </div>\n </div>\n </div>\n <div class=\"sheet-modal-inner\">\n <div class=\"page-content\">\n <div class=\"list smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}\">\n <ul>${!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n </div>\n `;\n return sheetHtml;\n }\n\n renderPopover() {\n const ss = this;\n if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);\n const cssClass = ss.params.cssClass;\n const popoverHtml = `\n <div class=\"popover smart-select-popover ${cssClass}\" data-select-name=\"${ss.selectName}\">\n <div class=\"popover-inner\">\n <div class=\"list smart-select-list-${ss.id} ${ss.params.virtualList ? ' virtual-list' : ''} ${ss.params.formColorTheme ? `color-${ss.params.formColorTheme}` : ''}\">\n <ul>${!ss.params.virtualList && ss.renderItems(ss.items)}</ul>\n </div>\n </div>\n </div>\n `;\n return popoverHtml;\n }\n\n scrollToSelectedItem() {\n const ss = this;\n const { params, $containerEl } = ss;\n if (!ss.opened) return ss;\n if (params.virtualList) {\n let selectedIndex;\n ss.vl.items.forEach((item, index) => {\n if (typeof selectedIndex === 'undefined' && item.selected) {\n selectedIndex = index;\n }\n });\n if (typeof selectedIndex !== 'undefined') {\n ss.vl.scrollToItem(selectedIndex);\n }\n } else {\n const $selectedItemEl = $containerEl.find('input:checked').parents('li');\n if (!$selectedItemEl.length) return ss;\n const $pageContentEl = $containerEl.find('.page-content');\n $pageContentEl.scrollTop($selectedItemEl.offset().top - $pageContentEl.offset().top - parseInt($pageContentEl.css('padding-top'), 10));\n }\n return ss;\n }\n\n onOpen(type, containerEl) {\n const ss = this;\n const app = ss.app;\n const $containerEl = $(containerEl);\n ss.$containerEl = $containerEl;\n ss.openedIn = type;\n ss.opened = true;\n\n // Init VL\n if (ss.params.virtualList) {\n ss.vl = app.virtualList.create({\n el: $containerEl.find('.virtual-list'),\n items: ss.items,\n renderItem: ss.renderItem.bind(ss),\n height: ss.params.virtualListHeight,\n searchByItem(query, item) {\n if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;\n return false;\n },\n });\n }\n if (ss.params.scrollToSelectedItem) {\n ss.scrollToSelectedItem();\n }\n\n // Init SB\n if (ss.params.searchbar) {\n let $searchbarEl = $containerEl.find('.searchbar');\n if (type === 'page' && app.theme === 'ios') {\n $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');\n }\n\n if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {\n let $notFoundEl = null;\n\n if (typeof ss.params.appendSearchbarNotFound === 'string') {\n $notFoundEl = $(`<div class=\"block searchbar-not-found\">${ss.params.appendSearchbarNotFound}</div>`);\n } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {\n $notFoundEl = $('<div class=\"block searchbar-not-found\">Nothing found</div>');\n } else {\n $notFoundEl = ss.params.appendSearchbarNotFound;\n }\n\n if ($notFoundEl) {\n $containerEl.find('.page-content').append($notFoundEl[0]);\n }\n }\n\n const searchbarParams = Utils.extend({\n el: $searchbarEl,\n backdropEl: $containerEl.find('.searchbar-backdrop'),\n searchContainer: `.smart-select-list-${ss.id}`,\n searchIn: '.item-title',\n }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});\n\n ss.searchbar = app.searchbar.create(searchbarParams);\n }\n\n // Check for max length\n if (ss.maxLength) {\n ss.checkMaxLength();\n }\n\n // Close on select\n if (ss.params.closeOnSelect) {\n ss.$containerEl.find(`input[type=\"radio\"][name=\"${ss.inputName}\"]:checked`).parents('label').once('click', () => {\n ss.close();\n });\n }\n\n // Attach input events\n ss.attachInputsEvents();\n\n ss.$el.trigger('smartselect:open');\n ss.emit('local::open smartSelectOpen', ss);\n }\n\n onOpened() {\n const ss = this;\n\n ss.$el.trigger('smartselect:opened');\n ss.emit('local::opened smartSelectOpened', ss);\n }\n\n onClose() {\n const ss = this;\n if (ss.destroyed) return;\n\n // Destroy VL\n if (ss.vl && ss.vl.destroy) {\n ss.vl.destroy();\n ss.vl = null;\n delete ss.vl;\n }\n\n // Destroy SB\n if (ss.searchbar && ss.searchbar.destroy) {\n ss.searchbar.destroy();\n ss.searchbar = null;\n delete ss.searchbar;\n }\n // Detach events\n ss.detachInputsEvents();\n\n ss.$el.trigger('smartselect:close');\n ss.emit('local::close smartSelectClose', ss);\n }\n\n onClosed() {\n const ss = this;\n if (ss.destroyed) return;\n ss.opened = false;\n ss.$containerEl = null;\n delete ss.$containerEl;\n\n ss.$el.trigger('smartselect:closed');\n ss.emit('local::closed smartSelectClosed', ss);\n }\n\n openPage() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const pageHtml = ss.renderPage(ss.items);\n\n ss.view.router.navigate({\n url: ss.url,\n route: {\n content: pageHtml,\n path: ss.url,\n on: {\n pageBeforeIn(e, page) {\n ss.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ss.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ss.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ss.onClosed('page', page.el);\n },\n },\n },\n });\n return ss;\n }\n\n openPopup() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popupHtml = ss.renderPopup(ss.items);\n\n const popupParams = {\n content: popupHtml,\n push: ss.params.popupPush,\n swipeToClose: ss.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ss.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ss.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ss.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ss.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popup: popupParams,\n },\n });\n } else {\n ss.modal = ss.app.popup.create(popupParams).open();\n }\n return ss;\n }\n\n openSheet() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const sheetHtml = ss.renderSheet(ss.items);\n\n const sheetParams = {\n content: sheetHtml,\n backdrop: false,\n scrollToEl: ss.$el,\n closeByOutsideClick: true,\n push: ss.params.sheetPush,\n swipeToClose: ss.params.sheetSwipeToClose,\n on: {\n sheetOpen(sheet) {\n ss.onOpen('sheet', sheet.el);\n },\n sheetOpened(sheet) {\n ss.onOpened('sheet', sheet.el);\n },\n sheetClose(sheet) {\n ss.onClose('sheet', sheet.el);\n },\n sheetClosed(sheet) {\n ss.onClosed('sheet', sheet.el);\n },\n },\n };\n\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n sheet: sheetParams,\n },\n });\n } else {\n ss.modal = ss.app.sheet.create(sheetParams).open();\n }\n return ss;\n }\n\n openPopover() {\n const ss = this;\n if (ss.opened) return ss;\n ss.getItemsData();\n const popoverHtml = ss.renderPopover(ss.items);\n const popoverParams = {\n content: popoverHtml,\n targetEl: ss.$el,\n on: {\n popoverOpen(popover) {\n ss.onOpen('popover', popover.el);\n },\n popoverOpened(popover) {\n ss.onOpened('popover', popover.el);\n },\n popoverClose(popover) {\n ss.onClose('popover', popover.el);\n },\n popoverClosed(popover) {\n ss.onClosed('popover', popover.el);\n },\n },\n };\n if (ss.params.routableModals && ss.view) {\n ss.view.router.navigate({\n url: ss.url,\n route: {\n path: ss.url,\n popover: popoverParams,\n },\n });\n } else {\n ss.modal = ss.app.popover.create(popoverParams).open();\n }\n return ss;\n }\n\n open(type) {\n const ss = this;\n if (ss.opened) return ss;\n let prevented = false;\n function prevent() {\n prevented = true;\n }\n if (ss.$el) {\n ss.$el.trigger('smartselect:beforeopen', { prevent });\n }\n ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);\n if (prevented) return ss;\n const openIn = type || ss.params.openIn;\n ss[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ss;\n }\n\n close() {\n const ss = this;\n if (!ss.opened) return ss;\n if ((ss.params.routableModals && ss.view) || ss.openedIn === 'page') {\n ss.view.router.back();\n } else {\n ss.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (ss.destroyed) return;\n ss.modal.destroy();\n delete ss.modal;\n });\n });\n ss.modal.close();\n }\n return ss;\n }\n\n init() {\n const ss = this;\n ss.attachEvents();\n ss.setValueText();\n }\n\n destroy() {\n const ss = this;\n ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);\n ss.$el.trigger('smartselect:beforedestroy');\n ss.detachEvents();\n delete ss.$el[0].f7SmartSelect;\n Utils.deleteProps(ss);\n ss.destroyed = true;\n }\n}\n\nexport default SmartSelect;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport SmartSelect from './smart-select-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'smartSelect',\n params: {\n smartSelect: {\n el: undefined,\n valueEl: undefined,\n setValueText: true,\n formatValueText: null,\n openIn: 'page', // or 'popup' or 'sheet' or 'popover'\n popupPush: false,\n popupSwipeToClose: undefined, // defaults to app\n sheetPush: false,\n sheetSwipeToClose: undefined, // defaults to app\n pageTitle: undefined,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n popupTabletFullscreen: false,\n sheetCloseLinkText: 'Done',\n searchbar: false,\n searchbarPlaceholder: 'Search',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: undefined,\n closeOnSelect: false,\n virtualList: false,\n virtualListHeight: undefined,\n scrollToSelectedItem: false,\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n routableModals: true,\n url: 'select/',\n cssClass: '',\n /*\n Custom render functions\n */\n renderPage: undefined,\n renderPopup: undefined,\n renderSheet: undefined,\n renderPopover: undefined,\n renderItems: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n },\n },\n static: {\n SmartSelect,\n },\n create() {\n const app = this;\n app.smartSelect = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.smart-select',\n constructor: SmartSelect,\n app,\n domProp: 'f7SmartSelect',\n }),\n {\n open(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.open) return ss.open();\n return undefined;\n },\n close(smartSelectEl) {\n const ss = app.smartSelect.get(smartSelectEl);\n if (ss && ss.close) return ss.close();\n return undefined;\n },\n }\n );\n },\n\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.smart-select-init').each((index, smartSelectEl) => {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.smart-select-init').each((index, smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.smart-select-init').each((index, smartSelectEl) => {\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.smart-select-init').each((index, smartSelectEl) => {\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n });\n },\n },\n clicks: {\n '.smart-select': function open($clickedEl, data) {\n const app = this;\n if (!$clickedEl[0].f7SmartSelect) {\n const ss = app.smartSelect.create(Utils.extend({ el: $clickedEl }, data));\n ss.open();\n }\n },\n },\n vnode: {\n 'smart-select-init': {\n insert(vnode) {\n const app = this;\n const smartSelectEl = vnode.elm;\n app.smartSelect.create(Utils.extend({ el: smartSelectEl }, $(smartSelectEl).dataset()));\n },\n destroy(vnode) {\n const smartSelectEl = vnode.elm;\n if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {\n smartSelectEl.f7SmartSelect.destroy();\n }\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nfunction getElMinSize(dimension, $el) {\n let minSize = $el.css(`min-${dimension}`);\n if (minSize === 'auto' || minSize === 'none') {\n minSize = 0;\n } else if (minSize.indexOf('px') >= 0) {\n minSize = parseFloat(minSize);\n } else if (minSize.indexOf('%') >= 0) {\n minSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(minSize) / 100;\n }\n return minSize;\n}\nfunction getElMaxSize(dimension, $el) {\n let maxSize = $el.css(`max-${dimension}`);\n if (maxSize === 'auto' || maxSize === 'none') {\n maxSize = null;\n } else if (maxSize.indexOf('px') >= 0) {\n maxSize = parseFloat(maxSize);\n } else if (maxSize.indexOf('%') >= 0) {\n maxSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(maxSize) / 100;\n }\n return maxSize;\n}\n\nconst Grid = {\n init() {\n const app = this;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let $resizeHandlerEl;\n let $prevResizableEl;\n let $nextResizableEl;\n let prevElSize;\n let prevElMinSize;\n let prevElMaxSize;\n let nextElSize;\n let nextElMinSize;\n let nextElMaxSize;\n let parentSize;\n let itemsInFlow;\n let gapSize;\n let isScrolling;\n\n function handleTouchStart(e) {\n if (isTouched || isMoved) return;\n $resizeHandlerEl = $(e.target).closest('.resize-handler');\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n isTouched = true;\n $prevResizableEl = undefined;\n $nextResizableEl = undefined;\n isScrolling = undefined;\n }\n\n function handleTouchMove(e) {\n if (!isTouched) return;\n const isRow = $resizeHandlerEl.parent('.row').length === 1;\n const sizeProp = isRow ? 'height' : 'width';\n const getSizeProp = isRow ? 'offsetHeight' : 'offsetWidth';\n if (!isMoved) {\n $prevResizableEl = $resizeHandlerEl.parent(isRow ? '.row' : '.col');\n if ($prevResizableEl.length && (!$prevResizableEl.hasClass('resizable') || $prevResizableEl.hasClass('resizable-fixed'))) {\n $prevResizableEl = $prevResizableEl.prevAll('.resizable:not(.resizable-fixed)').eq(0);\n }\n $nextResizableEl = $prevResizableEl.next(isRow ? '.row' : '.col');\n if ($nextResizableEl.length && (!$nextResizableEl.hasClass('resizable') || $nextResizableEl.hasClass('resizable-fixed'))) {\n $nextResizableEl = $nextResizableEl.nextAll('.resizable:not(.resizable-fixed)').eq(0);\n }\n\n if ($prevResizableEl.length) {\n prevElSize = $prevResizableEl[0][getSizeProp];\n prevElMinSize = getElMinSize(sizeProp, $prevResizableEl);\n prevElMaxSize = getElMaxSize(sizeProp, $prevResizableEl);\n parentSize = $prevResizableEl.parent()[0][getSizeProp];\n itemsInFlow = $prevResizableEl.parent().children(isRow ? '.row' : '[class*=\"col-\"], .col').length;\n gapSize = parseFloat($prevResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));\n }\n if ($nextResizableEl.length) {\n nextElSize = $nextResizableEl[0][getSizeProp];\n nextElMinSize = getElMinSize(sizeProp, $nextResizableEl);\n nextElMaxSize = getElMaxSize(sizeProp, $nextResizableEl);\n if (!$prevResizableEl.length) {\n parentSize = $nextResizableEl.parent()[0][getSizeProp];\n itemsInFlow = $nextResizableEl.parent().children(isRow ? '.row' : '[class*=\"col-\"], .col').length;\n gapSize = parseFloat($nextResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));\n }\n }\n }\n\n isMoved = true;\n const touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined' && !isRow) {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isScrolling) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n const isAbsolute = $prevResizableEl.hasClass('resizable-absolute') || $nextResizableEl.hasClass('resizable-absolute');\n const resizeNextEl = !isRow || (isRow && !isAbsolute);\n\n if ((resizeNextEl && !$nextResizableEl.length) || !$prevResizableEl.length) {\n isTouched = false;\n isMoved = false;\n return;\n }\n\n e.preventDefault();\n\n let diff = isRow\n ? touchCurrentY - touchStartY\n : touchCurrentX - touchStartX;\n\n let prevElNewSize;\n let nextElNewSize;\n if ($prevResizableEl.length) {\n prevElNewSize = prevElSize + diff;\n if (prevElNewSize < prevElMinSize) {\n prevElNewSize = prevElMinSize;\n diff = prevElNewSize - prevElSize;\n }\n if (prevElMaxSize && prevElNewSize > prevElMaxSize) {\n prevElNewSize = prevElMaxSize;\n diff = prevElNewSize - prevElSize;\n }\n }\n if ($nextResizableEl.length && resizeNextEl) {\n nextElNewSize = nextElSize - diff;\n if (nextElNewSize < nextElMinSize) {\n nextElNewSize = nextElMinSize;\n diff = nextElSize - nextElNewSize;\n prevElNewSize = prevElSize + diff;\n }\n if (nextElMaxSize && nextElNewSize > nextElMaxSize) {\n nextElNewSize = nextElMaxSize;\n diff = nextElSize - nextElNewSize;\n prevElNewSize = prevElSize + diff;\n }\n }\n\n if (isAbsolute) {\n $prevResizableEl[0].style[sizeProp] = `${prevElNewSize}px`;\n if (resizeNextEl) {\n $nextResizableEl[0].style[sizeProp] = `${nextElNewSize}px`;\n }\n $prevResizableEl.trigger('grid:resize');\n $nextResizableEl.trigger('grid:resize');\n app.emit('gridResize', $prevResizableEl[0]);\n app.emit('gridResize', $nextResizableEl[0]);\n return;\n }\n\n const gapAddSize = (itemsInFlow - 1) * gapSize / itemsInFlow;\n const gapAddSizeCSS = isRow\n ? `${itemsInFlow - 1} * var(--f7-grid-row-gap) / ${itemsInFlow}`\n : '(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)';\n const prevElNewSizeNormalized = prevElNewSize + gapAddSize;\n const nextElNewSizeNormalized = nextElNewSize + gapAddSize;\n $prevResizableEl[0].style[sizeProp] = `calc(${prevElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;\n $nextResizableEl[0].style[sizeProp] = `calc(${nextElNewSizeNormalized / parentSize * 100}% - ${gapAddSizeCSS})`;\n $prevResizableEl.trigger('grid:resize');\n $nextResizableEl.trigger('grid:resize');\n app.emit('gridResize', $prevResizableEl[0]);\n app.emit('gridResize', $nextResizableEl[0]);\n }\n\n function handleTouchEnd() {\n if (!isTouched) return;\n if (!isMoved) {\n isTouched = false;\n }\n isTouched = false;\n isMoved = false;\n }\n\n $(document).on(app.touchEvents.start, '.col > .resize-handler, .row > .resize-handler', handleTouchStart);\n app.on('touchmove', handleTouchMove);\n app.on('touchend', handleTouchEnd);\n },\n};\n\nexport default {\n name: 'grid',\n create() {\n const app = this;\n Utils.extend(app, {\n grid: {\n init: Grid.init.bind(app),\n },\n });\n },\n on: {\n init() {\n const app = this;\n app.grid.init();\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Calendar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const calendar = this;\n\n calendar.params = Utils.extend({}, app.params.calendar, params);\n\n let $containerEl;\n if (calendar.params.containerEl) {\n $containerEl = $(calendar.params.containerEl);\n if ($containerEl.length === 0) return calendar;\n }\n\n let $inputEl;\n if (calendar.params.inputEl) {\n $inputEl = $(calendar.params.inputEl);\n }\n\n const isHorizontal = calendar.params.direction === 'horizontal';\n\n let inverter = 1;\n if (isHorizontal) {\n inverter = app.rtl ? -1 : 1;\n }\n\n Utils.extend(calendar, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n initialized: false,\n opened: false,\n url: calendar.params.url,\n isHorizontal,\n inverter,\n animating: false,\n hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple,\n });\n calendar.dayFormatter = new Intl.DateTimeFormat(calendar.params.locale, { day: 'numeric' });\n calendar.monthFormatter = new Intl.DateTimeFormat(calendar.params.locale, { month: 'long' });\n calendar.yearFormatter = new Intl.DateTimeFormat(calendar.params.locale, { year: 'numeric' });\n calendar.timeSelectorFormatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);\n\n // Auto names\n let { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar.params;\n const { monthNamesIntl, monthNamesShortIntl, dayNamesIntl, dayNamesShortIntl } = calendar.getIntlNames();\n if (monthNames === 'auto') monthNames = monthNamesIntl;\n if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;\n if (dayNames === 'auto') dayNames = dayNamesIntl;\n if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;\n\n Utils.extend(calendar, {\n monthNames,\n monthNamesShort,\n dayNames,\n dayNamesShort,\n });\n\n function onInputClick() {\n calendar.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onInputClear() {\n calendar.setValue([]);\n if (calendar.opened) {\n calendar.update();\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if (calendar.destroyed || !calendar.params) return;\n if (calendar.isPopover()) return;\n if (!calendar.opened || calendar.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {\n calendar.close();\n }\n }\n\n // Events\n Utils.extend(calendar, {\n attachInputEvents() {\n calendar.$inputEl.on('click', onInputClick);\n calendar.$inputEl.on('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.on('focus mousedown', onInputFocus);\n }\n },\n detachInputEvents() {\n calendar.$inputEl.off('click', onInputClick);\n calendar.$inputEl.off('input:clear', onInputClear);\n if (calendar.params.inputReadOnly) {\n calendar.$inputEl.off('focus mousedown', onInputFocus);\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n calendar.attachCalendarEvents = function attachCalendarEvents() {\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let currentTranslate;\n let wrapperWidth;\n let wrapperHeight;\n let percentage;\n let touchesDiff;\n let isScrolling;\n\n const { $el, $wrapperEl } = calendar;\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n isTouched = true;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new Date()).getTime();\n percentage = 0;\n allowItemClick = true;\n isScrolling = undefined;\n currentTranslate = calendar.monthsTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const { isHorizontal: isH } = calendar;\n\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));\n }\n if (isH && isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (calendar.animating) {\n isTouched = false;\n return;\n }\n allowItemClick = false;\n if (!isMoved) {\n // First move\n isMoved = true;\n wrapperWidth = $wrapperEl[0].offsetWidth;\n wrapperHeight = $wrapperEl[0].offsetHeight;\n $wrapperEl.transition(0);\n }\n\n touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;\n percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);\n currentTranslate = ((calendar.monthsTranslate * calendar.inverter) + percentage) * 100;\n\n // Transform wrapper\n $wrapperEl.transform(`translate3d(${isH ? currentTranslate : 0}%, ${isH ? 0 : currentTranslate}%, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n\n touchEndTime = new Date().getTime();\n if (touchEndTime - touchStartTime < 300) {\n if (Math.abs(touchesDiff) < 10) {\n calendar.resetMonth();\n } else if (touchesDiff >= 10) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage <= -0.5) {\n if (app.rtl) calendar.prevMonth();\n else calendar.nextMonth();\n } else if (percentage >= 0.5) {\n if (app.rtl) calendar.nextMonth();\n else calendar.prevMonth();\n } else {\n calendar.resetMonth();\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n\n function handleDayClick(e) {\n if (!allowItemClick) return;\n let $dayEl = $(e.target).parents('.calendar-day');\n if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {\n $dayEl = $(e.target);\n }\n if ($dayEl.length === 0) return;\n if ($dayEl.hasClass('calendar-day-disabled')) return;\n if (!calendar.params.rangePicker) {\n if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();\n if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();\n }\n const dateYear = parseInt($dayEl.attr('data-year'), 10);\n const dateMonth = parseInt($dayEl.attr('data-month'), 10);\n const dateDay = parseInt($dayEl.attr('data-day'), 10);\n calendar.emit(\n 'local::dayClick calendarDayClick',\n calendar,\n $dayEl[0],\n dateYear,\n dateMonth,\n dateDay\n );\n if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {\n const valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);\n if (calendar.hasTimePicker) {\n if (calendar.value && calendar.value[0]) {\n valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());\n } else {\n valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());\n }\n }\n calendar.addValue(valueToAdd);\n }\n if (calendar.params.closeOnSelect) {\n if (\n (calendar.params.rangePicker && calendar.value.length === 2)\n || !calendar.params.rangePicker\n ) {\n calendar.close();\n }\n }\n }\n\n function onNextMonthClick() {\n calendar.nextMonth();\n }\n\n function onPrevMonthClick() {\n calendar.prevMonth();\n }\n\n function onNextYearClick() {\n calendar.nextYear();\n }\n\n function onPrevYearClick() {\n calendar.prevYear();\n }\n\n function onMonthSelectorClick() {\n $el.append(calendar.renderMonthPicker());\n }\n function onMonthSelectorItemClick() {\n const $clickedEl = $(this);\n if ($clickedEl.hasClass('calendar-month-picker-item-current')) {\n $el.find('.calendar-month-picker').remove();\n return;\n }\n $el.find('.calendar-month-picker-item-current').add($clickedEl).toggleClass('calendar-month-picker-item-current');\n const index = $clickedEl.index();\n const localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n const monthIndex = calendar.currentMonth;\n const diff = localeMonthIndex - monthIndex;\n const diffIndex = index - diff;\n calendar.setYearMonth(calendar.currentYear, diffIndex, 0);\n setTimeout(() => {\n $el.find('.calendar-month-picker').remove();\n }, 200);\n }\n\n function onYearSelectorClick() {\n $el.append(calendar.renderYearPicker());\n const $currentEl = $el.find('.calendar-year-picker-item-current');\n const $yearPickerEl = $el.find('.calendar-year-picker');\n if (!$currentEl || !$currentEl.length) return;\n $yearPickerEl.scrollTop(\n $currentEl[0].offsetTop\n - $yearPickerEl[0].offsetHeight / 2\n + $currentEl[0].offsetHeight / 2\n );\n }\n\n function onYearSelectorItemClick() {\n const $clickedEl = $(this);\n if ($clickedEl.hasClass('calendar-year-picker-item-current')) {\n $el.find('.calendar-year-picker').remove();\n return;\n }\n $el.find('.calendar-year-picker-item-current').add($clickedEl).toggleClass('calendar-year-picker-item-current');\n const year = parseInt($clickedEl.attr('data-year'), 10);\n calendar.setYearMonth(year, undefined, 0);\n setTimeout(() => {\n $el.find('.calendar-year-picker').remove();\n }, 200);\n }\n\n function onTimeSelectorClick() {\n calendar.openTimePicker();\n }\n function onTimePickerCloseClick() {\n calendar.closeTimePicker();\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n // Selectors clicks\n $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').on('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').on('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').on('click', onMonthSelectorClick);\n $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').on('click', onYearSelectorClick);\n $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);\n $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);\n }\n // Day clicks\n $wrapperEl.on('click', handleDayClick);\n // Touch events\n if (calendar.params.touchMove) {\n $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n\n calendar.detachCalendarEvents = function detachCalendarEvents() {\n $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);\n $el.find('.calendar-next-month-button').off('click', onNextMonthClick);\n $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);\n $el.find('.calendar-next-year-button').off('click', onNextYearClick);\n if (calendar.params.monthPicker) {\n $el.find('.current-month-value').off('click', onMonthSelectorClick);\n $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);\n }\n if (calendar.params.yearPicker) {\n $el.find('.current-year-value').off('click', onYearSelectorClick);\n $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);\n }\n if (calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);\n $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);\n }\n $wrapperEl.off('click', handleDayClick);\n if (calendar.params.touchMove) {\n $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n };\n };\n\n calendar.init();\n\n return calendar;\n }\n\n get view() {\n const { $inputEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n getIntlNames() {\n const calendar = this;\n const locale = calendar.params.locale;\n\n const monthNamesIntl = [];\n const monthNamesShortIntl = [];\n const dayNamesIntl = [];\n const dayNamesShortIntl = [];\n const formatterMonthNames = new Intl.DateTimeFormat(locale, { month: 'long' });\n const formatterMonthNamesShort = new Intl.DateTimeFormat(locale, { month: 'short' });\n const formatterDayNames = new Intl.DateTimeFormat(locale, { weekday: 'long' });\n const formatterDayNamesShort = new Intl.DateTimeFormat(locale, { weekday: 'short' });\n let year;\n let yearStarted;\n let yearEnded;\n for (let i = 0; i < 24; i += 1) {\n const date = new Date().setMonth(i, 1);\n const currentYear = calendar.yearFormatter.format(date);\n\n if (year && currentYear !== year) {\n if (yearStarted) yearEnded = true;\n yearStarted = true;\n year = currentYear;\n }\n if (!year) {\n year = currentYear;\n }\n if (yearStarted && year === currentYear && !yearEnded) {\n monthNamesIntl.push(formatterMonthNames.format(date));\n monthNamesShortIntl.push(formatterMonthNamesShort.format(date));\n }\n }\n const weekDay = new Date().getDay();\n for (let i = 0; i < 7; i += 1) {\n const date = new Date().getTime() + (i - weekDay) * 24 * 60 * 60 * 1000;\n dayNamesIntl.push(formatterDayNames.format(date));\n dayNamesShortIntl.push(formatterDayNamesShort.format(date));\n }\n\n return {\n monthNamesIntl,\n monthNamesShortIntl,\n dayNamesIntl,\n dayNamesShortIntl,\n };\n }\n\n normalizeDate(date) {\n const calendar = this;\n const d = new Date(date);\n if (calendar.hasTimePicker) {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());\n }\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n\n normalizeValues(values) {\n const calendar = this;\n let newValues = [];\n if (values && Array.isArray(values)) {\n newValues = values.map(val => calendar.normalizeDate(val));\n }\n return newValues;\n }\n\n initInput() {\n const calendar = this;\n if (!calendar.$inputEl) return;\n if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);\n }\n\n isPopover() {\n const calendar = this;\n const { app, modal, params } = calendar;\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!calendar.inline && calendar.inputEl) {\n if (params.openIn === 'popover') return true;\n if (app.device.ios) {\n return !!app.device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n if (app.device.desktop && app.theme === 'aurora') {\n return true;\n }\n }\n return false;\n }\n\n formatDate(d) {\n const calendar = this;\n const date = new Date(d);\n const year = date.getFullYear();\n const month = date.getMonth();\n const month1 = month + 1;\n const day = date.getDate();\n const weekDay = date.getDay();\n const { monthNames, monthNamesShort, dayNames, dayNamesShort } = calendar;\n const { dateFormat, locale } = calendar.params;\n\n function twoDigits(number) {\n return (number < 10) ? `0${number}` : number;\n }\n if (typeof dateFormat === 'string') {\n const tokens = {\n yyyy: year,\n yy: String(year).substring(2),\n mm: twoDigits(month1),\n m: month1,\n MM: monthNames[month],\n M: monthNamesShort[month],\n dd: twoDigits(day),\n d: day,\n DD: dayNames[weekDay],\n D: dayNamesShort[weekDay],\n };\n if (calendar.params.timePicker) {\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n let hours12 = hours;\n if (hours > 12) hours12 = hours - 12;\n if (hours === 0) hours12 = 12;\n const a = hours >= 12 && hours !== 0 ? 'pm' : 'am';\n\n Object.assign(tokens, {\n HH: twoDigits(hours),\n H: hours,\n hh: twoDigits(hours12),\n h: hours12,\n ss: twoDigits(seconds),\n s: seconds,\n ':mm': twoDigits(minutes),\n ':m': minutes,\n a,\n A: a.toUpperCase(),\n });\n }\n const regexp = new RegExp(\n Object.keys(tokens).map(t => `(${t})`).join('|'),\n 'g',\n );\n return dateFormat.replace(regexp, (token) => {\n if (token in tokens) return tokens[token];\n return token;\n });\n }\n if (typeof dateFormat === 'function') {\n return dateFormat(date);\n }\n // Intl Object\n const formatter = new Intl.DateTimeFormat(locale, dateFormat);\n return formatter.format(date);\n }\n\n formatValue() {\n const calendar = this;\n const { value } = calendar;\n if (calendar.params.formatValue) {\n return calendar.params.formatValue.call(calendar, value);\n }\n return value\n .map(v => calendar.formatDate(v))\n .join(calendar.params.rangePicker ? ' - ' : ', ');\n }\n\n addValue(newValue) {\n const calendar = this;\n const { multiple, rangePicker, rangePickerMinDays, rangePickerMaxDays } = calendar.params;\n if (multiple) {\n if (!calendar.value) calendar.value = [];\n let inValuesIndex;\n for (let i = 0; i < calendar.value.length; i += 1) {\n if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {\n inValuesIndex = i;\n }\n }\n if (typeof inValuesIndex === 'undefined') {\n calendar.value.push(newValue);\n } else {\n calendar.value.splice(inValuesIndex, 1);\n }\n calendar.updateValue();\n } else if (rangePicker) {\n if (!calendar.value) calendar.value = [];\n if (calendar.value.length === 2 || calendar.value.length === 0) {\n calendar.value = [];\n }\n\n if ((calendar.value.length === 0\n || ((Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000) && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)))) calendar.value.push(newValue);\n else calendar.value = [];\n\n calendar.value.sort((a, b) => a - b);\n calendar.updateValue();\n } else {\n calendar.value = [newValue];\n calendar.updateValue();\n }\n }\n\n setValue(values) {\n const calendar = this;\n const currentValue = calendar.value;\n if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {\n let equal = true;\n currentValue.forEach((v, index) => {\n if (v !== values[index]) equal = false;\n });\n if (equal) return;\n }\n calendar.value = values;\n calendar.updateValue();\n }\n\n getValue() {\n const calendar = this;\n return calendar.value;\n }\n\n updateValue(onlyHeader) {\n const calendar = this;\n const {\n $el,\n $wrapperEl,\n $inputEl,\n value,\n params,\n } = calendar;\n let i;\n if ($el && $el.length > 0) {\n $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected');\n let valueDate;\n if (params.rangePicker && value.length === 2) {\n for (i = new Date(value[0]).getTime(); i <= new Date(value[1]).getTime(); i += 24 * 60 * 60 * 1000) {\n valueDate = new Date(i);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n } else {\n for (i = 0; i < calendar.value.length; i += 1) {\n valueDate = new Date(value[i]);\n $wrapperEl.find(`.calendar-day[data-date=\"${valueDate.getFullYear()}-${valueDate.getMonth()}-${valueDate.getDate()}\"]`).addClass('calendar-day-selected');\n }\n }\n }\n if (!onlyHeader) {\n calendar.emit('local::change calendarChange', calendar, value);\n }\n\n if ($el && $el.length > 0 && calendar.hasTimePicker) {\n $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter.format(value[0]) : calendar.params.timePickerPlaceholder);\n }\n\n if (($inputEl && $inputEl.length) || params.header) {\n const inputValue = calendar.formatValue(value);\n if (params.header && $el && $el.length) {\n $el.find('.calendar-selected-date').text(inputValue);\n }\n if ($inputEl && $inputEl.length && !onlyHeader) {\n $inputEl.val(inputValue);\n $inputEl.trigger('change');\n }\n }\n }\n\n updateCurrentMonthYear(dir) {\n const calendar = this;\n const { $months, $el, monthNames } = calendar;\n let currentLocaleMonth;\n let currentLocaleYear;\n if (typeof dir === 'undefined') {\n calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(1).attr('data-locale-month');\n currentLocaleYear = $months.eq(1).attr('data-locale-year');\n } else {\n calendar.currentMonth = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-month'), 10);\n calendar.currentYear = parseInt($months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-year'), 10);\n currentLocaleMonth = $months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-locale-month');\n currentLocaleYear = $months.eq(dir === 'next' ? ($months.length - 1) : 0).attr('data-locale-year');\n }\n $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);\n $el.find('.current-year-value').text(currentLocaleYear);\n }\n\n update() {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl } = calendar;\n const currentDate = new Date(currentYear, currentMonth);\n const prevMonthHtml = calendar.renderMonth(currentDate, 'prev');\n const currentMonthHtml = calendar.renderMonth(currentDate);\n const nextMonthHtml = calendar.renderMonth(currentDate, 'next');\n\n $wrapperEl\n .transition(0)\n .html(`${prevMonthHtml}${currentMonthHtml}${nextMonthHtml}`)\n .transform('translate3d(0,0,0)');\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n calendar.$months.each((index, monthEl) => {\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n monthEl\n );\n });\n }\n\n onMonthChangeStart(dir) {\n const calendar = this;\n const { $months, currentYear, currentMonth } = calendar;\n calendar.updateCurrentMonthYear(dir);\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const currentIndex = dir === 'next' ? $months.length - 1 : 0;\n\n $months.eq(currentIndex).addClass('calendar-month-current');\n $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');\n\n calendar.emit(\n 'local::monthYearChangeStart calendarMonthYearChangeStart',\n calendar,\n currentYear,\n currentMonth\n );\n }\n\n onMonthChangeEnd(dir, rebuildBoth) {\n const calendar = this;\n const { currentYear, currentMonth, $wrapperEl, monthsTranslate } = calendar;\n calendar.animating = false;\n let nextMonthHtml;\n let prevMonthHtml;\n let currentMonthHtml;\n $wrapperEl\n .find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)')\n .remove();\n\n if (typeof dir === 'undefined') {\n dir = 'next'; // eslint-disable-line\n rebuildBoth = true; // eslint-disable-line\n }\n if (!rebuildBoth) {\n currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);\n } else {\n $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();\n prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');\n nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');\n }\n if (dir === 'next' || rebuildBoth) {\n $wrapperEl.append(currentMonthHtml || nextMonthHtml);\n }\n if (dir === 'prev' || rebuildBoth) {\n $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);\n }\n const $months = $wrapperEl.find('.calendar-month');\n calendar.$months = $months;\n calendar.setMonthsTranslate(monthsTranslate);\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar,\n dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]\n );\n calendar.emit(\n 'local::monthYearChangeEnd calendarMonthYearChangeEnd',\n calendar,\n currentYear,\n currentMonth\n );\n }\n\n setMonthsTranslate(translate) {\n const calendar = this;\n const { $months, isHorizontal: isH, inverter } = calendar;\n // eslint-disable-next-line\n translate = translate || calendar.monthsTranslate || 0;\n if (typeof calendar.monthsTranslate === 'undefined') {\n calendar.monthsTranslate = translate;\n }\n $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');\n const prevMonthTranslate = -(translate + 1) * 100 * inverter;\n const currentMonthTranslate = -translate * 100 * inverter;\n const nextMonthTranslate = -(translate - 1) * 100 * inverter;\n $months.eq(0)\n .transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n $months.eq(1)\n .transform(`translate3d(${isH ? currentMonthTranslate : 0}%, ${isH ? 0 : currentMonthTranslate}%, 0)`)\n .addClass('calendar-month-current');\n $months.eq(2)\n .transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n }\n\n nextMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);\n const nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);\n const nextDate = new Date(nextYear, nextMonth);\n const nextDateTime = nextDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.maxDate) {\n if (nextDateTime > new Date(params.maxDate).getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate -= 1;\n if (nextMonth === calendar.currentMonth) {\n const nextMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n const nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next'))\n .transform(`translate3d(${isH ? nextMonthTranslate : 0}%, ${isH ? 0 : nextMonthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n $wrapperEl.append(nextMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(calendar.$months.length - 1)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('next');\n const translate = (calendar.monthsTranslate * 100) * inverter;\n\n $wrapperEl.transition(transition).transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('next');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('next');\n }\n }\n\n prevMonth(transition) {\n const calendar = this;\n const { params, $wrapperEl, inverter, isHorizontal: isH } = calendar;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n transition = ''; // eslint-disable-line\n if (!params.animate) transition = 0; // eslint-disable-line\n }\n const prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);\n const prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);\n const prevDate = new Date(prevYear, prevMonth + 1, -1);\n const prevDateTime = prevDate.getTime();\n const transitionEndCallback = !calendar.animating;\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (prevDateTime < minDate.getTime()) {\n calendar.resetMonth();\n return;\n }\n }\n calendar.monthsTranslate += 1;\n if (prevMonth === calendar.currentMonth) {\n const prevMonthTranslate = -(calendar.monthsTranslate) * 100 * inverter;\n const prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev'))\n .transform(`translate3d(${isH ? prevMonthTranslate : 0}%, ${isH ? 0 : prevMonthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n $wrapperEl.prepend(prevMonthHtml[0]);\n calendar.$months = $wrapperEl.find('.calendar-month');\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n calendar.$months.eq(0)[0]\n );\n }\n calendar.animating = true;\n calendar.onMonthChangeStart('prev');\n const translate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd('prev');\n });\n }\n if (!params.animate) {\n calendar.onMonthChangeEnd('prev');\n }\n }\n\n resetMonth(transition = '') {\n const calendar = this;\n const { $wrapperEl, inverter, isHorizontal: isH, monthsTranslate } = calendar;\n const translate = (monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? translate : 0}%, ${isH ? 0 : translate}%, 0)`);\n }\n // eslint-disable-next-line\n setYearMonth(year, month, transition) {\n const calendar = this;\n const { params, isHorizontal: isH, $wrapperEl, inverter } = calendar;\n // eslint-disable-next-line\n if (typeof year === 'undefined') year = calendar.currentYear;\n // eslint-disable-next-line\n if (typeof month === 'undefined') month = calendar.currentMonth;\n if (typeof transition === 'undefined' || typeof transition === 'object') {\n // eslint-disable-next-line\n transition = '';\n // eslint-disable-next-line\n if (!params.animate) transition = 0;\n }\n let targetDate;\n if (year < calendar.currentYear) {\n targetDate = new Date(year, month + 1, -1).getTime();\n } else {\n targetDate = new Date(year, month).getTime();\n }\n if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {\n return false;\n }\n if (params.minDate) {\n let minDate = new Date(params.minDate);\n minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);\n if (targetDate < minDate.getTime()) {\n return false;\n }\n }\n const currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();\n const dir = targetDate > currentDate ? 'next' : 'prev';\n const newMonthHTML = calendar.renderMonth(new Date(year, month));\n calendar.monthsTranslate = calendar.monthsTranslate || 0;\n const prevTranslate = calendar.monthsTranslate;\n let monthTranslate;\n const transitionEndCallback = !calendar.animating && transition !== 0;\n if (targetDate > currentDate) {\n // To next\n calendar.monthsTranslate -= 1;\n if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();\n $wrapperEl.append(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate - 1) * 100 * inverter;\n calendar.$months\n .eq(calendar.$months.length - 1)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-next');\n } else {\n // To prev\n calendar.monthsTranslate += 1;\n if (!calendar.animating) calendar.$months.eq(0).remove();\n $wrapperEl.prepend(newMonthHTML);\n calendar.$months = $wrapperEl.find('.calendar-month');\n monthTranslate = -(prevTranslate + 1) * 100 * inverter;\n calendar.$months\n .eq(0)\n .transform(`translate3d(${isH ? monthTranslate : 0}%, ${isH ? 0 : monthTranslate}%, 0)`)\n .addClass('calendar-month-prev');\n }\n calendar.emit(\n 'local::monthAdd calendarMonthAdd',\n dir === 'next'\n ? calendar.$months.eq(calendar.$months.length - 1)[0]\n : calendar.$months.eq(0)[0]\n );\n\n calendar.animating = true;\n calendar.onMonthChangeStart(dir);\n const wrapperTranslate = (calendar.monthsTranslate * 100) * inverter;\n $wrapperEl\n .transition(transition)\n .transform(`translate3d(${isH ? wrapperTranslate : 0}%, ${isH ? 0 : wrapperTranslate}%, 0)`);\n if (transitionEndCallback) {\n $wrapperEl.transitionEnd(() => {\n calendar.onMonthChangeEnd(dir, true);\n });\n }\n if (!params.animate || transition === 0) {\n calendar.onMonthChangeEnd(dir, true);\n }\n }\n\n nextYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear + 1);\n }\n\n prevYear() {\n const calendar = this;\n calendar.setYearMonth(calendar.currentYear - 1);\n }\n // eslint-disable-next-line\n dateInRange(dayDate, range) {\n let match = false;\n let i;\n if (!range) return false;\n if (Array.isArray(range)) {\n for (i = 0; i < range.length; i += 1) {\n if (range[i].from || range[i].to) {\n if (range[i].from && range[i].to) {\n if ((dayDate <= new Date(range[i].to).getTime()) && (dayDate >= new Date(range[i].from).getTime())) {\n match = true;\n }\n } else if (range[i].from) {\n if (dayDate >= new Date(range[i].from).getTime()) {\n match = true;\n }\n } else if (range[i].to) {\n if (dayDate <= new Date(range[i].to).getTime()) {\n match = true;\n }\n }\n } else if (range[i].date) {\n if (dayDate === new Date(range[i].date).getTime()) {\n match = true;\n }\n } else if (dayDate === new Date(range[i]).getTime()) {\n match = true;\n }\n }\n } else if (range.from || range.to) {\n if (range.from && range.to) {\n if ((dayDate <= new Date(range.to).getTime()) && (dayDate >= new Date(range.from).getTime())) {\n match = true;\n }\n } else if (range.from) {\n if (dayDate >= new Date(range.from).getTime()) {\n match = true;\n }\n } else if (range.to) {\n if (dayDate <= new Date(range.to).getTime()) {\n match = true;\n }\n }\n } else if (range.date) {\n match = dayDate === new Date(range.date).getTime();\n } else if (typeof range === 'function') {\n match = range(new Date(dayDate));\n }\n return match;\n }\n // eslint-disable-next-line\n daysInMonth(date) {\n const d = new Date(date);\n return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\n }\n\n renderMonths(date) {\n const calendar = this;\n if (calendar.params.renderMonths) {\n return calendar.params.renderMonths.call(calendar, date);\n }\n return `\n <div class=\"calendar-months-wrapper\">\n ${calendar.renderMonth(date, 'prev')}\n ${calendar.renderMonth(date)}\n ${calendar.renderMonth(date, 'next')}\n </div>\n `.trim();\n }\n\n renderMonth(d, offset) {\n const calendar = this;\n const { params, value } = calendar;\n if (params.renderMonth) {\n return params.renderMonth.call(calendar, d, offset);\n }\n let date = new Date(d);\n let year = date.getFullYear();\n let month = date.getMonth();\n let localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));\n if (localeMonth < 0) localeMonth = month;\n let localeYear = calendar.yearFormatter.format(date);\n\n if (offset === 'next') {\n if (month === 11) date = new Date(year + 1, 0);\n else date = new Date(year, month + 1, 1);\n }\n if (offset === 'prev') {\n if (month === 0) date = new Date(year - 1, 11);\n else date = new Date(year, month - 1, 1);\n }\n if (offset === 'next' || offset === 'prev') {\n month = date.getMonth();\n year = date.getFullYear();\n localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));\n if (localeMonth < 0) localeMonth = month;\n localeYear = calendar.yearFormatter.format(date);\n }\n\n const currentValues = [];\n const today = new Date().setHours(0, 0, 0, 0);\n const minDate = params.minDate ? new Date(params.minDate).getTime() : null;\n const maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;\n const rows = 6;\n const cols = 7;\n const daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - (10 * 24 * 60 * 60 * 1000));\n const daysInMonth = calendar.daysInMonth(date);\n const minDayNumber = params.firstDay === 6 ? 0 : 1;\n\n let monthHtml = '';\n let dayIndex = 0 + (params.firstDay - 1);\n let disabled;\n let hasEvents;\n let firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();\n if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;\n\n if (value && value.length) {\n for (let i = 0; i < value.length; i += 1) {\n currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));\n }\n }\n\n for (let row = 1; row <= rows; row += 1) {\n let rowHtml = '';\n for (let col = 1; col <= cols; col += 1) {\n dayIndex += 1;\n let dayDate;\n let dayNumber = dayIndex - firstDayOfMonthIndex;\n let addClass = '';\n if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {\n dayIndex -= 7;\n dayNumber = dayIndex - firstDayOfMonthIndex;\n }\n\n const weekDayIndex = ((col - 1) + params.firstDay > 6)\n ? ((col - 1 - 7) + params.firstDay)\n : ((col - 1) + params.firstDay);\n\n if (dayNumber < 0) {\n dayNumber = daysInPrevMonth + dayNumber + 1;\n addClass += ' calendar-day-prev';\n dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();\n } else {\n dayNumber += 1;\n if (dayNumber > daysInMonth) {\n dayNumber -= daysInMonth;\n addClass += ' calendar-day-next';\n dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();\n } else {\n dayDate = new Date(year, month, dayNumber).getTime();\n }\n }\n // Today\n if (dayDate === today) addClass += ' calendar-day-today';\n\n // Selected\n if (params.rangePicker && currentValues.length === 2) {\n if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) addClass += ' calendar-day-selected';\n } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';\n // Weekend\n if (params.weekendDays.indexOf(weekDayIndex) >= 0) {\n addClass += ' calendar-day-weekend';\n }\n // Events\n let eventsHtml = '';\n hasEvents = false;\n if (params.events) {\n if (calendar.dateInRange(dayDate, params.events)) {\n hasEvents = true;\n }\n }\n if (hasEvents) {\n addClass += ' calendar-day-has-events';\n eventsHtml = `\n <span class=\"calendar-day-events\">\n <span class=\"calendar-day-event\"></span>\n </span>\n `;\n if (Array.isArray(params.events)) {\n const eventDots = [];\n params.events.forEach((ev) => {\n const color = ev.color || '';\n if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {\n eventDots.push(color);\n }\n });\n eventsHtml = `\n <span class=\"calendar-day-events\">\n ${eventDots.map(color => `\n <span class=\"calendar-day-event\" style=\"${color ? `background-color: ${color}` : ''}\"></span>\n `.trim()).join('')}\n </span>\n `;\n }\n }\n // Custom Ranges\n if (params.rangesClasses) {\n for (let k = 0; k < params.rangesClasses.length; k += 1) {\n if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {\n addClass += ` ${params.rangesClasses[k].cssClass}`;\n }\n }\n }\n // Disabled\n disabled = false;\n if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) {\n disabled = true;\n }\n if (params.disabled) {\n if (calendar.dateInRange(dayDate, params.disabled)) {\n disabled = true;\n }\n }\n if (disabled) {\n addClass += ' calendar-day-disabled';\n }\n\n dayDate = new Date(dayDate);\n const dayYear = dayDate.getFullYear();\n const dayMonth = dayDate.getMonth();\n const dayNumberDisplay = calendar.dayFormatter.format(dayDate);\n rowHtml += `\n <div data-year=\"${dayYear}\" data-month=\"${dayMonth}\" data-day=\"${dayNumber}\" class=\"calendar-day${addClass}\" data-date=\"${dayYear}-${dayMonth}-${dayNumber}\">\n <span class=\"calendar-day-number\">${dayNumberDisplay}${eventsHtml}</span>\n </div>`.trim();\n }\n monthHtml += `<div class=\"calendar-row\">${rowHtml}</div>`;\n }\n monthHtml = `<div class=\"calendar-month\" data-year=\"${year}\" data-month=\"${month}\" data-locale-year=\"${localeYear}\" data-locale-month=\"${localeMonth}\">${monthHtml}</div>`;\n return monthHtml;\n }\n\n renderWeekHeader() {\n const calendar = this;\n if (calendar.params.renderWeekHeader) {\n return calendar.params.renderWeekHeader.call(calendar);\n }\n const { params } = calendar;\n let weekDaysHtml = '';\n for (let i = 0; i < 7; i += 1) {\n const dayIndex = (i + params.firstDay > 6)\n ? ((i - 7) + params.firstDay)\n : (i + params.firstDay);\n const dayName = calendar.dayNamesShort[dayIndex];\n weekDaysHtml += `<div class=\"calendar-week-day\">${dayName}</div>`;\n }\n return `\n <div class=\"calendar-week-header\">\n ${weekDaysHtml}\n </div>\n `.trim();\n }\n\n renderMonthSelector() {\n const calendar = this;\n if (calendar.params.renderMonthSelector) {\n return calendar.params.renderMonthSelector.call(calendar);\n }\n\n return `\n <div class=\"calendar-month-selector\">\n <a class=\"link icon-only calendar-prev-month-button\">\n <i class=\"icon icon-prev\"></i>\n </a>\n ${calendar.params.monthPicker ? `\n <a class=\"current-month-value link\"></a>\n ` : `\n <span class=\"current-month-value\"></span>\n `}\n <a class=\"link icon-only calendar-next-month-button\">\n <i class=\"icon icon-next\"></i>\n </a>\n </div>\n `.trim();\n }\n\n renderMonthPicker() {\n const calendar = this;\n const localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);\n return `\n <div class=\"calendar-month-picker\">\n ${calendar.monthNames.map((m, index) => `\n <div class=\"calendar-month-picker-item ${localeMonth === index ? 'calendar-month-picker-item-current' : ''}\">\n <span>${m}</span>\n </div>\n `).join('')}\n </div>\n `;\n }\n\n renderYearSelector() {\n const calendar = this;\n if (calendar.params.renderYearSelector) {\n return calendar.params.renderYearSelector.call(calendar);\n }\n return `\n <div class=\"calendar-year-selector\">\n <a class=\"link icon-only calendar-prev-year-button\">\n <i class=\"icon icon-prev\"></i>\n </a>\n ${calendar.params.yearPicker ? `\n <a class=\"current-year-value link\"></a>\n ` : `\n <span class=\"current-year-value\"></span>\n `}\n <a class=\"link icon-only calendar-next-year-button\">\n <i class=\"icon icon-next\"></i>\n </a>\n </div>\n `.trim();\n }\n\n renderYearPicker() {\n const calendar = this;\n const currentYear = calendar.currentYear;\n let yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;\n if (calendar.params.minDate) {\n yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());\n }\n let yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;\n if (calendar.params.maxDate) {\n yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());\n }\n const years = [];\n for (let i = yearMin; i <= yearMax; i += 1) {\n years.push(i);\n }\n return `\n <div class=\"calendar-year-picker\">\n ${years.map(year => `\n <div data-year=\"${year}\" class=\"calendar-year-picker-item ${year === currentYear ? 'calendar-year-picker-item-current' : ''}\">\n <span>${calendar.yearFormatter.format(new Date().setFullYear(year))}</span>\n </div>\n `).join('')}\n </div>\n `;\n }\n\n // eslint-disable-next-line\n renderTimeSelector() {\n const calendar = this;\n const value = calendar.value && calendar.value[0];\n let timeString;\n if (value) timeString = calendar.timeSelectorFormatter.format(value);\n return `\n <div class=\"calendar-time-selector\"><a class=\"link\">${timeString || calendar.params.timePickerPlaceholder}</a></div>\n `;\n }\n\n renderHeader() {\n const calendar = this;\n if (calendar.params.renderHeader) {\n return calendar.params.renderHeader.call(calendar);\n }\n return `\n <div class=\"calendar-header\">\n <div class=\"calendar-selected-date\">${calendar.params.headerPlaceholder}</div>\n </div>\n `.trim();\n }\n\n renderFooter() {\n const calendar = this;\n const app = calendar.app;\n if (calendar.params.renderFooter) {\n return calendar.params.renderFooter.call(calendar);\n }\n return `\n <div class=\"calendar-footer\">\n <a class=\"${app.theme === 'md' ? 'button' : 'link'} calendar-close sheet-close popover-close\">${calendar.params.toolbarCloseText}</a>\n </div>\n `.trim();\n }\n\n renderToolbar() {\n const calendar = this;\n if (calendar.params.renderToolbar) {\n return calendar.params.renderToolbar.call(calendar, calendar);\n }\n return `\n <div class=\"toolbar toolbar-top no-shadow\">\n <div class=\"toolbar-inner\">\n ${calendar.params.monthSelector ? calendar.renderMonthSelector() : ''}\n ${calendar.params.yearSelector ? calendar.renderYearSelector() : ''}\n </div>\n </div>\n `.trim();\n }\n // eslint-disable-next-line\n renderInline() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const inlineHtml = `\n <div class=\"calendar calendar-inline ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}\">\n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n <div class=\"calendar-months\">\n ${calendar.renderMonths(date)}\n </div>\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n </div>\n `.trim();\n\n return inlineHtml;\n }\n\n renderCustomModal() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const sheetHtml = `\n <div class=\"calendar calendar-modal ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}\">\n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n <div class=\"calendar-months\">\n ${calendar.renderMonths(date)}\n </div>\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n </div>\n `.trim();\n\n return sheetHtml;\n }\n\n renderSheet() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const sheetHtml = `\n <div class=\"sheet-modal calendar calendar-sheet ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}\">\n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n <div class=\"sheet-modal-inner calendar-months\">\n ${calendar.renderMonths(date)}\n </div>\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n </div>\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const calendar = this;\n const { cssClass, toolbar, header, footer, rangePicker, weekHeader } = calendar.params;\n const { value, hasTimePicker } = calendar;\n const date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);\n const popoverHtml = `\n <div class=\"popover calendar-popover\">\n <div class=\"popover-inner\">\n <div class=\"calendar ${rangePicker ? 'calendar-range' : ''} ${cssClass || ''}\">\n ${header ? calendar.renderHeader() : ''}\n ${toolbar ? calendar.renderToolbar() : ''}\n ${weekHeader ? calendar.renderWeekHeader() : ''}\n <div class=\"calendar-months\">\n ${calendar.renderMonths(date)}\n </div>\n ${hasTimePicker ? calendar.renderTimeSelector() : ''}\n ${footer ? calendar.renderFooter() : ''}\n </div>\n </div>\n </div>\n `.trim();\n\n return popoverHtml;\n }\n\n render() {\n const calendar = this;\n const { params } = calendar;\n if (params.render) return params.render.call(calendar);\n if (!calendar.inline) {\n let modalType = params.openIn;\n if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';\n\n if (modalType === 'popover') return calendar.renderPopover();\n if (modalType === 'sheet') return calendar.renderSheet();\n return calendar.renderCustomModal();\n }\n return calendar.renderInline();\n }\n\n openTimePicker() {\n const calendar = this;\n const { $el, app } = calendar;\n if (!$el || !$el.length) return;\n $el.append('<div class=\"calendar-time-picker\"></div>');\n const hoursArr = [];\n const minutesArr = [];\n for (let i = 0; i <= 23; i += 1) { hoursArr.push(i); }\n for (let i = 0; i <= 59; i += 1) { minutesArr.push(i); }\n let value;\n if (calendar.value && calendar.value.length) {\n value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];\n } else {\n value = [new Date().getHours(), new Date().getMinutes()];\n }\n calendar.timePickerInstance = app.picker.create({\n containerEl: $el.find('.calendar-time-picker'),\n value,\n toolbar: true,\n rotateEffect: false,\n toolbarCloseText: calendar.params.toolbarCloseText,\n cols: [\n {\n values: hoursArr,\n },\n {\n divider: true,\n content: ':',\n },\n {\n values: minutesArr,\n displayValues: minutesArr.map(m => (m < 10 ? `0${m}` : m)),\n },\n ],\n });\n calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');\n }\n\n closeTimePicker() {\n const calendar = this;\n if (calendar.timePickerInstance) {\n const [hours, minutes] = calendar.timePickerInstance.value.map(v => parseInt(v, 10));\n let value = calendar.value && calendar.value.length && calendar.value[0];\n if (!value) {\n value = new Date();\n value.setHours(hours, minutes, 0, 0);\n } else {\n value = new Date(value);\n value.setHours(hours, minutes);\n }\n calendar.setValue([value]);\n calendar.timePickerInstance.close();\n calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el && calendar.$el.length) {\n calendar.$el.find('.calendar-time-picker').remove();\n }\n }\n\n onOpen() {\n const calendar = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = calendar;\n calendar.closing = false;\n calendar.opened = true;\n calendar.opening = true;\n\n // Init main events\n calendar.attachCalendarEvents();\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) calendar.setValue(value, 0);\n else if (params.value) {\n calendar.setValue(calendar.normalizeValues(params.value), 0);\n }\n } else if (value) {\n calendar.setValue(value, 0);\n }\n\n // Update current month and year\n calendar.updateCurrentMonthYear();\n\n // Set initial translate\n calendar.monthsTranslate = 0;\n calendar.setMonthsTranslate();\n\n // Update input value\n if (updateValue) calendar.updateValue();\n else if (params.header && value) {\n calendar.updateValue(true);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n calendar.initialized = true;\n\n calendar.$months.each((index, monthEl) => {\n calendar.emit('local::monthAdd calendarMonthAdd', monthEl);\n });\n\n // Trigger events\n if ($el) {\n $el.trigger('calendar:open');\n }\n if ($inputEl) {\n $inputEl.trigger('calendar:open');\n }\n calendar.emit('local::open calendarOpen', calendar);\n }\n\n onOpened() {\n const calendar = this;\n calendar.opening = false;\n if (calendar.$el) {\n calendar.$el.trigger('calendar:opened');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:opened');\n }\n calendar.emit('local::opened calendarOpened', calendar);\n }\n\n onClose() {\n const calendar = this;\n const app = calendar.app;\n calendar.opening = false;\n calendar.closing = true;\n\n if (calendar.$inputEl && app.theme === 'md') {\n calendar.$inputEl.trigger('blur');\n }\n if (calendar.detachCalendarEvents) {\n calendar.detachCalendarEvents();\n }\n\n if (calendar.$el) {\n calendar.$el.trigger('calendar:close');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:close');\n }\n calendar.emit('local::close calendarClose', calendar);\n }\n\n onClosed() {\n const calendar = this;\n calendar.opened = false;\n calendar.closing = false;\n\n if (!calendar.inline) {\n Utils.nextTick(() => {\n if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {\n if (!calendar.params.routableModals) {\n calendar.modal.destroy();\n }\n }\n delete calendar.modal;\n });\n }\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n if (calendar.$el) {\n calendar.$el.trigger('calendar:closed');\n }\n if (calendar.$inputEl) {\n calendar.$inputEl.trigger('calendar:closed');\n }\n calendar.emit('local::closed calendarClosed', calendar);\n }\n\n open() {\n const calendar = this;\n const { app, opened, inline, $inputEl, params } = calendar;\n if (opened) return;\n\n if (inline) {\n calendar.$el = $(calendar.render());\n calendar.$el[0].f7Calendar = calendar;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$containerEl.append(calendar.$el);\n calendar.onOpen();\n calendar.onOpened();\n return;\n }\n let modalType = params.openIn;\n if (modalType === 'auto') {\n modalType = calendar.isPopover() ? 'popover' : 'sheet';\n }\n const modalContent = calendar.render();\n\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: params.scrollToInput ? $inputEl : undefined,\n content: modalContent,\n backdrop: params.backdrop === true || (modalType === 'popover' && app.params.popover.backdrop !== false && params.backdrop !== false),\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n calendar.modal = modal;\n calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;\n calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');\n calendar.$months = calendar.$wrapperEl.find('.calendar-month');\n calendar.$el[0].f7Calendar = calendar;\n if (modalType === 'customModal') {\n $(calendar.$el).find('.calendar-close').once('click', () => {\n calendar.close();\n });\n }\n calendar.onOpen();\n },\n opened() { calendar.onOpened(); },\n close() { calendar.onClose(); },\n closed() { calendar.onClosed(); },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && calendar.view) {\n calendar.view.router.navigate({\n url: calendar.url,\n route: {\n path: calendar.url,\n [modalType]: modalParams,\n },\n });\n } else {\n calendar.modal = app[modalType].create(modalParams);\n calendar.modal.open();\n }\n }\n\n close() {\n const calendar = this;\n const { opened, inline } = calendar;\n if (!opened) return;\n if (inline) {\n calendar.onClose();\n calendar.onClosed();\n return;\n }\n if (calendar.params.routableModals && calendar.view) {\n calendar.view.router.back();\n } else {\n calendar.modal.close();\n }\n }\n\n init() {\n const calendar = this;\n\n calendar.initInput();\n\n if (calendar.inline) {\n calendar.open();\n calendar.emit('local::init calendarInit', calendar);\n return;\n }\n\n if (!calendar.initialized && calendar.params.value) {\n calendar.setValue(calendar.normalizeValues(calendar.params.value));\n }\n\n // Attach input Events\n if (calendar.$inputEl) {\n calendar.attachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.attachHtmlEvents();\n }\n calendar.emit('local::init calendarInit', calendar);\n }\n\n destroy() {\n const calendar = this;\n if (calendar.destroyed) return;\n const { $el } = calendar;\n calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);\n if ($el) $el.trigger('calendar:beforedestroy');\n\n calendar.close();\n\n // Detach Events\n if (calendar.$inputEl) {\n calendar.detachInputEvents();\n }\n if (calendar.params.closeByOutsideClick) {\n calendar.detachHtmlEvents();\n }\n\n if (calendar.timePickerInstance) {\n if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();\n delete calendar.timePickerInstance;\n }\n\n if ($el && $el.length) delete calendar.$el[0].f7Calendar;\n Utils.deleteProps(calendar);\n calendar.destroyed = true;\n }\n}\n\nexport default Calendar;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Calendar from './calendar-class';\n\nexport default {\n name: 'calendar',\n static: {\n Calendar,\n },\n create() {\n const app = this;\n app.calendar = ConstructorMethods({\n defaultSelector: '.calendar',\n constructor: Calendar,\n app,\n domProp: 'f7Calendar',\n });\n app.calendar.close = function close(el = '.calendar') {\n const $el = $(el);\n if ($el.length === 0) return;\n const calendar = $el[0].f7Calendar;\n if (!calendar || (calendar && !calendar.opened)) return;\n calendar.close();\n };\n },\n params: {\n calendar: {\n // Calendar settings\n dateFormat: undefined,\n monthNames: 'auto',\n monthNamesShort: 'auto',\n dayNames: 'auto',\n dayNamesShort: 'auto',\n locale: undefined,\n firstDay: 1, // First day of the week, Monday\n weekendDays: [0, 6], // Sunday and Saturday\n multiple: false,\n rangePicker: false,\n rangePickerMinDays: 1, // when calendar is used as rangePicker\n rangePickerMaxDays: 0, // when calendar is used as rangePicker, 0 means unlimited\n direction: 'horizontal', // or 'vertical'\n minDate: null,\n maxDate: null,\n disabled: null, // dates range of disabled days\n events: null, // dates range of days with events\n rangesClasses: null, // array with custom classes date ranges\n touchMove: true,\n animate: true,\n closeOnSelect: false,\n monthSelector: true,\n monthPicker: true,\n yearSelector: true,\n yearPicker: true,\n yearPickerMin: undefined,\n yearPickerMax: undefined,\n timePicker: false,\n timePickerFormat: { hour: 'numeric', minute: 'numeric' },\n timePickerPlaceholder: 'Select time',\n weekHeader: true,\n value: null,\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet' or 'customModal'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n header: false,\n headerPlaceholder: 'Select date',\n toolbar: true,\n toolbarCloseText: 'Done',\n footer: false,\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'date/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderWeekHeader: null,\n renderMonths: null,\n renderMonth: null,\n renderMonthSelector: null,\n renderYearSelector: null,\n renderHeader: null,\n renderFooter: null,\n renderToolbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nexport default function (colEl, updateItems) {\n const picker = this;\n const app = picker.app;\n const $colEl = $(colEl);\n const colIndex = $colEl.index();\n const col = picker.cols[colIndex];\n if (col.divider) return;\n\n col.$el = $colEl;\n col.el = $colEl[0];\n col.$itemsEl = col.$el.find('.picker-items');\n col.items = col.$itemsEl.find('.picker-item');\n\n let itemHeight;\n let itemsHeight;\n let minTranslate;\n let maxTranslate;\n let animationFrameId;\n\n function updateDuringScroll() {\n animationFrameId = Utils.requestAnimationFrame(() => {\n col.updateItems(undefined, undefined, 0);\n updateDuringScroll();\n });\n }\n\n col.replaceValues = function replaceColValues(values, displayValues) {\n col.detachEvents();\n col.values = values;\n col.displayValues = displayValues;\n col.$itemsEl.html(picker.renderColumn(col, true));\n col.items = col.$itemsEl.find('.picker-item');\n col.calcSize();\n col.setValue(col.values[0], 0, true);\n col.attachEvents();\n };\n col.calcSize = function calcColSize() {\n if (picker.params.rotateEffect) {\n col.$el.removeClass('picker-column-absolute');\n if (!col.width) col.$el.css({ width: '' });\n }\n let colWidth = 0;\n const colHeight = col.$el[0].offsetHeight;\n itemHeight = col.items[0].offsetHeight;\n itemsHeight = itemHeight * col.items.length;\n minTranslate = ((colHeight / 2) - itemsHeight) + (itemHeight / 2);\n maxTranslate = (colHeight / 2) - (itemHeight / 2);\n if (col.width) {\n colWidth = col.width;\n if (parseInt(colWidth, 10) === colWidth) colWidth += 'px';\n col.$el.css({ width: colWidth });\n }\n if (picker.params.rotateEffect) {\n if (!col.width) {\n col.items.each((index, itemEl) => {\n const item = $(itemEl).children('span');\n colWidth = Math.max(colWidth, item[0].offsetWidth);\n });\n col.$el.css({ width: `${colWidth + 2}px` });\n }\n col.$el.addClass('picker-column-absolute');\n }\n };\n\n col.setValue = function setColValue(newValue, transition = '', valueCallbacks) {\n const newActiveIndex = col.$itemsEl.find(`.picker-item[data-picker-value=\"${newValue}\"]`).index();\n if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {\n return;\n }\n const newTranslate = (-newActiveIndex * itemHeight) + maxTranslate;\n // Update wrapper\n col.$itemsEl.transition(transition);\n col.$itemsEl.transform(`translate3d(0,${newTranslate}px,0)`);\n\n // Watch items\n if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {\n Utils.cancelAnimationFrame(animationFrameId);\n col.$itemsEl.transitionEnd(() => {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n updateDuringScroll();\n }\n\n // Update items\n col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);\n };\n\n col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {\n if (typeof translate === 'undefined') {\n // eslint-disable-next-line\n translate = Utils.getTranslate(col.$itemsEl[0], 'y');\n }\n // eslint-disable-next-line\n if (typeof activeIndex === 'undefined') activeIndex = -Math.round((translate - maxTranslate) / itemHeight);\n // eslint-disable-next-line\n if (activeIndex < 0) activeIndex = 0;\n // eslint-disable-next-line\n if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;\n const previousActiveIndex = col.activeIndex;\n col.activeIndex = activeIndex;\n col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');\n\n col.items.transition(transition);\n\n const selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform('');\n\n // Set 3D rotate effect\n if (picker.params.rotateEffect) {\n col.items.each((index, itemEl) => {\n const $itemEl = $(itemEl);\n const itemOffsetTop = $itemEl.index() * itemHeight;\n const translateOffset = maxTranslate - translate;\n const itemOffset = itemOffsetTop - translateOffset;\n const percentage = itemOffset / itemHeight;\n const itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;\n\n let angle = (-18 * percentage);\n if (angle > 180) angle = 180;\n if (angle < -180) angle = -180;\n if (Math.abs(percentage) > itemsFit) {\n $itemEl.addClass('picker-item-far');\n } else {\n $itemEl.removeClass('picker-item-far');\n }\n $itemEl.transform(`translate3d(0, ${-translate + maxTranslate}px, ${picker.needsOriginFix ? -110 : 0}px) rotateX(${angle}deg)`);\n });\n }\n\n if (valueCallbacks || typeof valueCallbacks === 'undefined') {\n // Update values\n col.value = selectedItem.attr('data-picker-value');\n col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;\n // On change callback\n if (previousActiveIndex !== activeIndex) {\n if (col.onChange) {\n col.onChange(picker, col.value, col.displayValue);\n }\n picker.updateValue();\n }\n }\n };\n\n let allowItemClick = true;\n let isTouched;\n let isMoved;\n let touchStartY;\n let touchCurrentY;\n let touchStartTime;\n let touchEndTime;\n let startTranslate;\n let returnTo;\n let currentTranslate;\n let prevTranslate;\n let velocityTranslate;\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n e.preventDefault();\n isTouched = true;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n touchStartTime = (new Date()).getTime();\n\n allowItemClick = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n e.preventDefault();\n allowItemClick = false;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (!isMoved) {\n // First move\n Utils.cancelAnimationFrame(animationFrameId);\n isMoved = true;\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n currentTranslate = startTranslate;\n col.$itemsEl.transition(0);\n }\n\n const diff = touchCurrentY - touchStartY;\n currentTranslate = startTranslate + diff;\n returnTo = undefined;\n\n // Normalize translate\n if (currentTranslate < minTranslate) {\n currentTranslate = minTranslate - ((minTranslate - currentTranslate) ** 0.8);\n returnTo = 'min';\n }\n if (currentTranslate > maxTranslate) {\n currentTranslate = maxTranslate + ((currentTranslate - maxTranslate) ** 0.8);\n returnTo = 'max';\n }\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`);\n\n // Update items\n col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove);\n\n // Calc velocity\n velocityTranslate = currentTranslate - prevTranslate || currentTranslate;\n prevTranslate = currentTranslate;\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n col.$itemsEl.transition('');\n if (returnTo) {\n if (returnTo === 'min') {\n col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);\n } else {\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);\n }\n }\n touchEndTime = new Date().getTime();\n let newTranslate;\n if (touchEndTime - touchStartTime > 300) {\n newTranslate = currentTranslate;\n } else {\n newTranslate = currentTranslate + (velocityTranslate * picker.params.momentumRatio);\n }\n\n newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n // Active Index\n const activeIndex = Math.round(Math.abs(((newTranslate - maxTranslate) / itemHeight)));\n\n // Normalize translate\n if (!picker.params.freeMode) newTranslate = (-activeIndex * itemHeight) + maxTranslate;\n\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`);\n\n // Update items\n col.updateItems(activeIndex, newTranslate, '', true);\n\n // Watch items\n if (picker.params.updateValuesOnMomentum) {\n updateDuringScroll();\n col.$itemsEl.transitionEnd(() => {\n Utils.cancelAnimationFrame(animationFrameId);\n });\n }\n\n // Allow click\n setTimeout(() => {\n allowItemClick = true;\n }, 100);\n }\n\n let mousewheelTimeout;\n function handleMouseWheel(e) {\n const { deltaX, deltaY } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n clearTimeout(mousewheelTimeout);\n\n e.preventDefault();\n\n Utils.cancelAnimationFrame(animationFrameId);\n startTranslate = Utils.getTranslate(col.$itemsEl[0], 'y');\n col.$itemsEl.transition(0);\n\n currentTranslate = startTranslate - deltaY;\n returnTo = undefined;\n\n // Normalize translate\n if (currentTranslate < minTranslate) {\n currentTranslate = minTranslate;\n returnTo = 'min';\n }\n if (currentTranslate > maxTranslate) {\n currentTranslate = maxTranslate;\n returnTo = 'max';\n }\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${currentTranslate}px,0)`);\n\n // Update items\n col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnMousewheel);\n\n // On end\n mousewheelTimeout = setTimeout(() => {\n col.$itemsEl.transition('');\n if (returnTo) {\n if (returnTo === 'min') {\n col.$itemsEl.transform(`translate3d(0,${minTranslate}px,0)`);\n } else {\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`);\n }\n }\n touchEndTime = new Date().getTime();\n let newTranslate = currentTranslate;\n newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);\n\n // Active Index\n const activeIndex = Math.round(Math.abs(((newTranslate - maxTranslate) / itemHeight)));\n\n // Normalize translate\n if (!picker.params.freeMode) newTranslate = (-activeIndex * itemHeight) + maxTranslate;\n\n // Transform wrapper\n col.$itemsEl.transform(`translate3d(0,${parseInt(newTranslate, 10)}px,0)`);\n\n // Update items\n col.updateItems(activeIndex, newTranslate, '', true);\n }, 200);\n }\n\n function handleClick() {\n if (!allowItemClick) return;\n Utils.cancelAnimationFrame(animationFrameId);\n const value = $(this).attr('data-picker-value');\n col.setValue(value);\n }\n\n const activeListener = app.support.passiveListener ? { passive: false, capture: false } : false;\n col.attachEvents = function attachColEvents() {\n col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (picker.params.mousewheel) {\n col.$el.on('wheel', handleMouseWheel);\n }\n col.items.on('click', handleClick);\n };\n col.detachEvents = function detachColEvents() {\n col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (picker.params.mousewheel) {\n col.$el.off('wheel', handleMouseWheel);\n }\n col.items.off('click', handleClick);\n };\n\n col.init = function initCol() {\n col.calcSize();\n col.$itemsEl.transform(`translate3d(0,${maxTranslate}px,0)`).transition(0);\n if (colIndex === 0) col.$el.addClass('picker-column-first');\n if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');\n // Update items on init\n if (updateItems) col.updateItems(0, maxTranslate, 0);\n\n col.attachEvents();\n };\n\n col.destroy = function destroyCol() {\n col.detachEvents();\n };\n\n col.init();\n}\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport pickerColumn from './picker-column';\n\nclass Picker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const picker = this;\n picker.params = Utils.extend({}, app.params.picker, params);\n\n let $containerEl;\n if (picker.params.containerEl) {\n $containerEl = $(picker.params.containerEl);\n if ($containerEl.length === 0) return picker;\n }\n\n let $inputEl;\n if (picker.params.inputEl) {\n $inputEl = $(picker.params.inputEl);\n }\n\n\n let $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;\n if (picker.params.scrollToEl) {\n const scrollToEl = $(picker.params.scrollToEl);\n if (scrollToEl.length > 0) {\n $scrollToEl = scrollToEl;\n }\n }\n\n Utils.extend(picker, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n needsOriginFix: app.device.ios || ((window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0) && !app.device.android),\n cols: [],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $scrollToEl,\n initialized: false,\n opened: false,\n url: picker.params.url,\n });\n\n function onResize() {\n picker.resizeCols();\n }\n function onInputClick() {\n picker.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onHtmlClick(e) {\n if (picker.destroyed || !picker.params) return;\n const $targetEl = $(e.target);\n if (picker.isPopover()) return;\n if (!picker.opened || picker.closing) return;\n if ($targetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {\n picker.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n picker.close();\n }\n }\n\n // Events\n Utils.extend(picker, {\n attachResizeEvent() {\n app.on('resize', onResize);\n },\n detachResizeEvent() {\n app.off('resize', onResize);\n },\n attachInputEvents() {\n picker.$inputEl.on('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.on('focus mousedown', onInputFocus);\n }\n },\n detachInputEvents() {\n picker.$inputEl.off('click', onInputClick);\n if (picker.params.inputReadOnly) {\n picker.$inputEl.off('focus mousedown', onInputFocus);\n }\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n picker.init();\n\n return picker;\n }\n\n get view() {\n const { app, params, $inputEl } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n initInput() {\n const picker = this;\n if (!picker.$inputEl) return;\n if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);\n }\n\n resizeCols() {\n const picker = this;\n if (!picker.opened) return;\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n picker.cols[i].calcSize();\n picker.cols[i].setValue(picker.cols[i].value, 0, false);\n }\n }\n }\n\n isPopover() {\n const picker = this;\n const { app, modal, params } = picker;\n if (params.openIn === 'sheet') return false;\n if (modal && modal.type !== 'popover') return false;\n\n if (!picker.inline && picker.inputEl) {\n if (params.openIn === 'popover') return true;\n if (app.device.ios) {\n return !!app.device.ipad;\n }\n if (app.width >= 768) {\n return true;\n }\n if (app.device.desktop && app.theme === 'aurora') {\n return true;\n }\n }\n return false;\n }\n\n formatValue() {\n const picker = this;\n const { value, displayValue } = picker;\n if (picker.params.formatValue) {\n return picker.params.formatValue.call(picker, value, displayValue);\n }\n return value.join(' ');\n }\n\n setValue(values, transition) {\n const picker = this;\n let valueIndex = 0;\n if (picker.cols.length === 0) {\n picker.value = values;\n picker.updateValue(values);\n return;\n }\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (picker.cols[i] && !picker.cols[i].divider) {\n picker.cols[i].setValue(values[valueIndex], transition);\n valueIndex += 1;\n }\n }\n }\n\n getValue() {\n const picker = this;\n return picker.value;\n }\n\n updateValue(forceValues) {\n const picker = this;\n const newValue = forceValues || [];\n const newDisplayValue = [];\n let column;\n if (picker.cols.length === 0) {\n const noDividerColumns = picker.params.cols.filter(c => !c.divider);\n for (let i = 0; i < noDividerColumns.length; i += 1) {\n column = noDividerColumns[i];\n if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {\n newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);\n } else {\n newDisplayValue.push(newValue[i]);\n }\n }\n } else {\n for (let i = 0; i < picker.cols.length; i += 1) {\n if (!picker.cols[i].divider) {\n newValue.push(picker.cols[i].value);\n newDisplayValue.push(picker.cols[i].displayValue);\n }\n }\n }\n\n if (newValue.indexOf(undefined) >= 0) {\n return;\n }\n picker.value = newValue;\n picker.displayValue = newDisplayValue;\n picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);\n if (picker.inputEl) {\n picker.$inputEl.val(picker.formatValue());\n picker.$inputEl.trigger('change');\n }\n }\n\n initColumn(colEl, updateItems) {\n const picker = this;\n pickerColumn.call(picker, colEl, updateItems);\n }\n // eslint-disable-next-line\n destroyColumn(colEl) {\n const picker = this;\n const $colEl = $(colEl);\n const index = $colEl.index();\n if (picker.cols[index] && picker.cols[index].destroy) {\n picker.cols[index].destroy();\n }\n }\n\n renderToolbar() {\n const picker = this;\n if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);\n return `\n <div class=\"toolbar toolbar-top no-shadow\">\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a class=\"link sheet-close popover-close\">${picker.params.toolbarCloseText}</a>\n </div>\n </div>\n </div>\n `.trim();\n }\n // eslint-disable-next-line\n renderColumn(col, onlyItems) {\n const colClasses = `picker-column ${col.textAlign ? `picker-column-${col.textAlign}` : ''} ${col.cssClass || ''}`;\n let columnHtml;\n let columnItemsHtml;\n\n if (col.divider) {\n columnHtml = `\n <div class=\"${colClasses} picker-column-divider\">${col.content}</div>\n `;\n } else {\n columnItemsHtml = col.values.map((value, index) => `\n <div class=\"picker-item\" data-picker-value=\"${value}\">\n <span>${col.displayValues ? col.displayValues[index] : value}</span>\n </div>\n `).join('');\n columnHtml = `\n <div class=\"${colClasses}\">\n <div class=\"picker-items\">${columnItemsHtml}</div>\n </div>\n `;\n }\n\n return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();\n }\n\n renderInline() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const inlineHtml = `\n <div class=\"picker picker-inline ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}\">\n ${toolbar ? picker.renderToolbar() : ''}\n <div class=\"picker-columns\">\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n `.trim();\n\n return inlineHtml;\n }\n\n renderSheet() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const sheetHtml = `\n <div class=\"sheet-modal picker picker-sheet ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}\">\n ${toolbar ? picker.renderToolbar() : ''}\n <div class=\"sheet-modal-inner picker-columns\">\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const picker = this;\n const { rotateEffect, cssClass, toolbar } = picker.params;\n const popoverHtml = `\n <div class=\"popover picker-popover\">\n <div class=\"popover-inner\">\n <div class=\"picker ${rotateEffect ? 'picker-3d' : ''} ${cssClass || ''}\">\n ${toolbar ? picker.renderToolbar() : ''}\n <div class=\"picker-columns\">\n ${picker.cols.map(col => picker.renderColumn(col)).join('')}\n <div class=\"picker-center-highlight\"></div>\n </div>\n </div>\n </div>\n </div>\n `.trim();\n\n return popoverHtml;\n }\n\n render() {\n const picker = this;\n if (picker.params.render) return picker.params.render.call(picker);\n if (!picker.inline) {\n if (picker.isPopover()) return picker.renderPopover();\n return picker.renderSheet();\n }\n return picker.renderInline();\n }\n\n onOpen() {\n const picker = this;\n const { initialized, $el, app, $inputEl, inline, value, params } = picker;\n picker.opened = true;\n picker.closing = false;\n picker.opening = true;\n\n // Init main events\n picker.attachResizeEvent();\n\n // Init cols\n $el.find('.picker-column').each((index, colEl) => {\n let updateItems = true;\n if (\n (!initialized && params.value)\n || (initialized && value)\n ) {\n updateItems = false;\n }\n picker.initColumn(colEl, updateItems);\n });\n\n // Set value\n if (!initialized) {\n if (value) picker.setValue(value, 0);\n else if (params.value) {\n picker.setValue(params.value, 0);\n }\n } else if (value) {\n picker.setValue(value, 0);\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n picker.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('picker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('picker:open');\n }\n picker.emit('local::open pickerOpen', picker);\n }\n\n onOpened() {\n const picker = this;\n picker.opening = false;\n\n if (picker.$el) {\n picker.$el.trigger('picker:opened');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:opened');\n }\n picker.emit('local::opened pickerOpened', picker);\n }\n\n onClose() {\n const picker = this;\n const app = picker.app;\n picker.opening = false;\n picker.closing = true;\n\n // Detach events\n picker.detachResizeEvent();\n\n picker.cols.forEach((col) => {\n if (col.destroy) col.destroy();\n });\n if (picker.$inputEl && app.theme === 'md') {\n picker.$inputEl.trigger('blur');\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:close');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:close');\n }\n picker.emit('local::close pickerClose', picker);\n }\n\n onClosed() {\n const picker = this;\n picker.opened = false;\n picker.closing = false;\n\n if (!picker.inline) {\n Utils.nextTick(() => {\n if (picker.modal && picker.modal.el && picker.modal.destroy) {\n if (!picker.params.routableModals) {\n picker.modal.destroy();\n }\n }\n delete picker.modal;\n });\n }\n\n if (picker.$el) {\n picker.$el.trigger('picker:closed');\n }\n if (picker.$inputEl) {\n picker.$inputEl.trigger('picker:closed');\n }\n picker.emit('local::closed pickerClosed', picker);\n }\n\n open() {\n const picker = this;\n const { app, opened, inline, $inputEl, $scrollToEl, params } = picker;\n if (opened) return;\n if (picker.cols.length === 0 && params.cols.length) {\n params.cols.forEach((col) => {\n picker.cols.push(col);\n });\n }\n if (inline) {\n picker.$el = $(picker.render());\n picker.$el[0].f7Picker = picker;\n picker.$containerEl.append(picker.$el);\n picker.onOpen();\n picker.onOpened();\n return;\n }\n const isPopover = picker.isPopover();\n const modalType = isPopover ? 'popover' : 'sheet';\n const modalParams = {\n targetEl: $inputEl,\n scrollToEl: $scrollToEl,\n content: picker.render(),\n backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,\n on: {\n open() {\n const modal = this;\n picker.modal = modal;\n picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;\n picker.$el[0].f7Picker = picker;\n picker.onOpen();\n },\n opened() { picker.onOpened(); },\n close() { picker.onClose(); },\n closed() { picker.onClosed(); },\n },\n };\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && picker.view) {\n picker.view.router.navigate({\n url: picker.url,\n route: {\n path: picker.url,\n [modalType]: modalParams,\n },\n });\n } else {\n picker.modal = app[modalType].create(modalParams);\n picker.modal.open();\n }\n }\n\n close() {\n const picker = this;\n const { opened, inline } = picker;\n if (!opened) return;\n if (inline) {\n picker.onClose();\n picker.onClosed();\n return;\n }\n if (picker.params.routableModals && picker.view) {\n picker.view.router.back();\n } else {\n picker.modal.close();\n }\n }\n\n init() {\n const picker = this;\n\n picker.initInput();\n\n if (picker.inline) {\n picker.open();\n picker.emit('local::init pickerInit', picker);\n return;\n }\n\n if (!picker.initialized && picker.params.value) {\n picker.setValue(picker.params.value);\n }\n\n // Attach input Events\n if (picker.$inputEl) {\n picker.attachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.attachHtmlEvents();\n }\n picker.emit('local::init pickerInit', picker);\n }\n\n destroy() {\n const picker = this;\n if (picker.destroyed) return;\n const { $el } = picker;\n picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);\n if ($el) $el.trigger('picker:beforedestroy');\n\n picker.close();\n\n // Detach Events\n if (picker.$inputEl) {\n picker.detachInputEvents();\n }\n if (picker.params.closeByOutsideClick) {\n picker.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete picker.$el[0].f7Picker;\n Utils.deleteProps(picker);\n picker.destroyed = true;\n }\n}\n\nexport default Picker;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Picker from './picker-class';\n\nexport default {\n name: 'picker',\n static: {\n Picker,\n },\n create() {\n const app = this;\n app.picker = ConstructorMethods({\n defaultSelector: '.picker',\n constructor: Picker,\n app,\n domProp: 'f7Picker',\n });\n app.picker.close = function close(el = '.picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const picker = $el[0].f7Picker;\n if (!picker || (picker && !picker.opened)) return;\n picker.close();\n };\n },\n params: {\n picker: {\n // Picker settings\n updateValuesOnMomentum: false,\n updateValuesOnTouchmove: true,\n updateValuesOnMousewheel: true,\n mousewheel: true,\n rotateEffect: false,\n momentumRatio: 7,\n freeMode: false,\n cols: [],\n // Common opener settings\n containerEl: null,\n openIn: 'auto', // or 'popover' or 'sheet'\n sheetPush: false,\n sheetSwipeToClose: undefined,\n backdrop: undefined, // uses Popover or Sheet defaults\n formatValue: null,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n scrollToEl: undefined,\n toolbar: true,\n toolbarCloseText: 'Done',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'select/',\n // Render functions\n renderToolbar: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst InfiniteScroll = {\n handleScroll(el, e) {\n const app = this;\n const $el = $(el);\n const scrollTop = $el[0].scrollTop;\n const scrollHeight = $el[0].scrollHeight;\n const height = $el[0].offsetHeight;\n let distance = $el[0].getAttribute('data-infinite-distance');\n\n const virtualListContainer = $el.find('.virtual-list');\n let virtualList;\n\n const onTop = $el.hasClass('infinite-scroll-top');\n if (!distance) distance = 50;\n if (typeof distance === 'string' && distance.indexOf('%') >= 0) {\n distance = (parseInt(distance, 10) / 100) * height;\n }\n if (distance > height) distance = height;\n if (onTop) {\n if (scrollTop < distance) {\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n } else if (scrollTop + height >= scrollHeight - distance) {\n if (virtualListContainer.length > 0) {\n virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;\n if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {\n return;\n }\n }\n $el.trigger('infinite', e);\n app.emit('infinite', $el[0], e);\n }\n },\n create(el) {\n const $el = $(el);\n const app = this;\n function scrollHandler(e) {\n app.infiniteScroll.handle(this, e);\n }\n $el.each((index, element) => {\n element.f7InfiniteScrollHandler = scrollHandler;\n element.addEventListener('scroll', element.f7InfiniteScrollHandler);\n });\n },\n destroy(el) {\n const $el = $(el);\n $el.each((index, element) => {\n element.removeEventListener('scroll', element.f7InfiniteScrollHandler);\n delete element.f7InfiniteScrollHandler;\n });\n },\n};\nexport default {\n name: 'infiniteScroll',\n create() {\n const app = this;\n Utils.extend(app, {\n infiniteScroll: {\n handle: InfiniteScroll.handleScroll.bind(app),\n create: InfiniteScroll.create.bind(app),\n destroy: InfiniteScroll.destroy.bind(app),\n },\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((index, el) => {\n app.infiniteScroll.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $isEls = $tabEl.find('.infinite-scroll-content');\n if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);\n $isEls.each((index, el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((index, el) => {\n app.infiniteScroll.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.infinite-scroll-content').each((index, el) => {\n app.infiniteScroll.destroy(el);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\nimport Support from '../../utils/support';\nimport Device from '../../utils/device';\n\nclass PullToRefresh extends Framework7Class {\n constructor(app, el) {\n super({}, [app]);\n const ptr = this;\n const $el = $(el);\n const $preloaderEl = $el.find('.ptr-preloader');\n\n ptr.$el = $el;\n ptr.el = $el[0];\n ptr.app = app;\n\n ptr.bottom = ptr.$el.hasClass('ptr-bottom');\n\n // Extend defaults with modules params\n ptr.useModulesParams({});\n\n const isMaterial = app.theme === 'md';\n const isIos = app.theme === 'ios';\n const isAurora = app.theme === 'aurora';\n\n // Done\n ptr.done = function done() {\n const $transitionTarget = isMaterial ? $preloaderEl : $el;\n $transitionTarget.transitionEnd(() => {\n $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');\n $el.trigger('ptr:done');\n ptr.emit('local::done ptrDone', $el[0]);\n });\n $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');\n return ptr;\n };\n\n ptr.refresh = function refresh() {\n if ($el.hasClass('ptr-refreshing')) return ptr;\n $el.addClass('ptr-transitioning ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n return ptr;\n };\n\n // Mousewheel\n ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';\n\n // Events handling\n let touchId;\n let isTouched;\n let isMoved;\n const touchesStart = {};\n let isScrolling;\n let touchesDiff;\n let refresh = false;\n let useTranslate = false;\n let forceUseTranslate = false;\n let startTranslate = 0;\n let translate;\n let scrollTop;\n let wasScrolled;\n let triggerDistance;\n let dynamicTriggerDistance;\n let pullStarted;\n let hasNavbar = false;\n let scrollHeight;\n let offsetHeight;\n let maxScrollTop;\n const $pageEl = $el.parents('.page');\n\n if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;\n if ($pageEl.hasClass('no-navbar')) hasNavbar = false;\n if (!ptr.bottom) {\n const pageNavbarEl = app.navbar.getElByPage($pageEl[0]);\n if (pageNavbarEl) {\n const $pageNavbarEl = $(pageNavbarEl);\n const isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent')\n || (\n $pageNavbarEl.hasClass('navbar-large')\n && $pageNavbarEl.hasClass('navbar-transparent')\n );\n const isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');\n if (isLargeTransparent) {\n $el.addClass('ptr-with-navbar-large-transparent');\n } else if (isTransparent) {\n $el.addClass('ptr-with-navbar-transparent');\n }\n }\n }\n if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');\n\n // Define trigger distance\n if ($el.attr('data-ptr-distance')) {\n dynamicTriggerDistance = true;\n } else if (isMaterial) {\n triggerDistance = 66;\n } else if (isIos) {\n triggerDistance = 44;\n } else if (isAurora) {\n triggerDistance = 38;\n }\n\n function handleTouchStart(e) {\n if (isTouched) {\n if (Device.os === 'android') {\n if ('targetTouches' in e && e.targetTouches.length > 1) return;\n } else return;\n }\n\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n\n isMoved = false;\n pullStarted = false;\n isTouched = true;\n isScrolling = undefined;\n wasScrolled = undefined;\n if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function handleTouchMove(e) {\n if (!isTouched) return;\n let pageX;\n let pageY;\n let touch;\n if (e.type === 'touchmove') {\n if (touchId && e.touches) {\n for (let i = 0; i < e.touches.length; i += 1) {\n if (e.touches[i].identifier === touchId) {\n touch = e.touches[i];\n }\n }\n }\n if (!touch) touch = e.targetTouches[0];\n pageX = touch.pageX;\n pageY = touch.pageY;\n } else {\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if (!pageX || !pageY) return;\n\n\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));\n }\n if (!isScrolling) {\n isTouched = false;\n return;\n }\n\n scrollTop = $el[0].scrollTop;\n\n if (!isMoved) {\n $el.removeClass('ptr-transitioning');\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n isTouched = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableIndex, ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight)\n && $(ptrScrollableEl).css('overflow') === 'auto'\n && (\n (!ptr.bottom && ptrScrollableEl.scrollTop > 0)\n || (ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)\n )\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n isTouched = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;\n if (scrollHeight === offsetHeight || Device.os !== 'ios' || isMaterial) {\n useTranslate = true;\n } else {\n useTranslate = false;\n }\n forceUseTranslate = false;\n }\n isMoved = true;\n touchesDiff = pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n // iOS 8 fix\n if (Device.os === 'ios' && parseInt(Device.osVersion.split('.')[0], 10) > 7) {\n if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;\n if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', 'auto');\n $el.scrollTop(maxScrollTop);\n forceUseTranslate = true;\n }\n\n if (useTranslate || forceUseTranslate) {\n if (e.cancelable) {\n e.preventDefault();\n }\n translate = (ptr.bottom ? -1 * (Math.abs(touchesDiff) ** 0.85) : touchesDiff ** 0.85) + startTranslate;\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow').transform(`rotate(${(180 * (Math.abs(touchesDiff) / 66)) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n }\n }\n\n if (((useTranslate || forceUseTranslate) && (Math.abs(touchesDiff) ** 0.85) > triggerDistance) || (!useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2)) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n }\n function handleTouchEnd(e) {\n if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {\n if (e.changedTouches[0].identifier !== touchId) {\n isTouched = false;\n isScrolling = false;\n isMoved = false;\n touchId = null;\n return;\n }\n }\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('')\n .find('.ptr-arrow').transform('');\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (!useTranslate && ptr.bottom && !isMaterial) {\n $el.css('-webkit-overflow-scrolling', '');\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n isTouched = false;\n isMoved = false;\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n\n let mousewheelTimeout;\n let mousewheelMoved;\n let mousewheelAllow = true;\n let mousewheelTranslate = 0;\n\n function handleMouseWheelRelease() {\n mousewheelAllow = true;\n mousewheelMoved = false;\n mousewheelTranslate = 0;\n if (translate) {\n $el.addClass('ptr-transitioning');\n translate = 0;\n }\n if (isMaterial) {\n $preloaderEl.transform('')\n .find('.ptr-arrow').transform('');\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform('');\n } else {\n $el.transform('');\n }\n }\n\n if (refresh) {\n $el.addClass('ptr-refreshing');\n $el.trigger('ptr:refresh', ptr.done);\n ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);\n } else {\n $el.removeClass('ptr-pull-down');\n }\n if (pullStarted) {\n $el.trigger('ptr:pullend');\n ptr.emit('local::pullEnd ptrPullEnd', $el[0]);\n }\n }\n function handleMouseWheel(e) {\n if (!mousewheelAllow) return;\n const { deltaX, deltaY } = e;\n if (Math.abs(deltaX) > Math.abs(deltaY)) return;\n if ($el.hasClass('ptr-refreshing')) {\n return;\n }\n if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;\n\n clearTimeout(mousewheelTimeout);\n\n scrollTop = $el[0].scrollTop;\n\n if (!mousewheelMoved) {\n $el.removeClass('ptr-transitioning');\n let targetIsScrollable;\n scrollHeight = $el[0].scrollHeight;\n offsetHeight = $el[0].offsetHeight;\n if (ptr.bottom) {\n maxScrollTop = scrollHeight - offsetHeight;\n }\n if (scrollTop > scrollHeight) {\n mousewheelAllow = false;\n return;\n }\n const $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');\n if ($ptrWatchScrollable.length) {\n $ptrWatchScrollable.each((ptrScrollableIndex, ptrScrollableEl) => {\n if (ptrScrollableEl === el) return;\n if (\n (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight)\n && $(ptrScrollableEl).css('overflow') === 'auto'\n && (\n (!ptr.bottom && ptrScrollableEl.scrollTop > 0)\n || (ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)\n )\n ) {\n targetIsScrollable = true;\n }\n });\n }\n if (targetIsScrollable) {\n mousewheelAllow = false;\n return;\n }\n if (dynamicTriggerDistance) {\n triggerDistance = $el.attr('data-ptr-distance');\n if (triggerDistance.indexOf('%') >= 0) triggerDistance = (scrollHeight * parseInt(triggerDistance, 10)) / 100;\n }\n }\n isMoved = true;\n mousewheelTranslate -= deltaY;\n touchesDiff = mousewheelTranslate; // pageY - touchesStart.y;\n\n if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;\n\n const ptrStarted = ptr.bottom\n ? (touchesDiff < 0 && scrollTop >= maxScrollTop) || scrollTop > maxScrollTop\n : (touchesDiff > 0 && scrollTop <= 0) || scrollTop < 0;\n\n if (ptrStarted) {\n if (e.cancelable) {\n e.preventDefault();\n }\n\n translate = touchesDiff;\n if (Math.abs(translate) > triggerDistance) {\n translate = triggerDistance + ((Math.abs(translate) - triggerDistance) ** 0.7);\n if (ptr.bottom) translate = -translate;\n }\n\n if (isMaterial) {\n $preloaderEl.transform(`translate3d(0,${translate}px,0)`)\n .find('.ptr-arrow').transform(`rotate(${(180 * (Math.abs(touchesDiff) / 66)) + 100}deg)`);\n } else {\n // eslint-disable-next-line\n if (ptr.bottom) {\n $el.children().transform(`translate3d(0,${translate}px,0)`);\n } else {\n $el.transform(`translate3d(0,${translate}px,0)`);\n }\n }\n\n if (Math.abs(translate) > triggerDistance) {\n refresh = true;\n $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');\n } else {\n refresh = false;\n $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');\n }\n if (!pullStarted) {\n $el.trigger('ptr:pullstart');\n ptr.emit('local::pullStart ptrPullStart', $el[0]);\n pullStarted = true;\n }\n $el.trigger('ptr:pullmove', {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n ptr.emit('local::pullMove ptrPullMove', $el[0], {\n event: e,\n scrollTop,\n translate,\n touchesDiff,\n });\n } else {\n pullStarted = false;\n $el.removeClass('ptr-pull-up ptr-pull-down');\n refresh = false;\n }\n\n mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);\n }\n\n if (!$pageEl.length || !$el.length) return ptr;\n\n $el[0].f7PullToRefresh = ptr;\n\n // Events\n ptr.attachEvents = function attachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.on('wheel', handleMouseWheel);\n }\n };\n ptr.detachEvents = function detachEvents() {\n const passive = Support.passiveListener ? { passive: true } : false;\n $el.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n if (ptr.mousewheel && !ptr.bottom) {\n $el.off('wheel', handleMouseWheel);\n }\n };\n\n // Install Modules\n ptr.useModules();\n\n // Init\n ptr.init();\n\n return ptr;\n }\n\n init() {\n const ptr = this;\n ptr.attachEvents();\n }\n\n destroy() {\n let ptr = this;\n ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);\n ptr.$el.trigger('ptr:beforedestroy');\n delete ptr.el.f7PullToRefresh;\n ptr.detachEvents();\n Utils.deleteProps(ptr);\n ptr = null;\n }\n}\n\nexport default PullToRefresh;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport PullToRefresh from './pull-to-refresh-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'pullToRefresh',\n create() {\n const app = this;\n app.ptr = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.ptr-content',\n constructor: PullToRefresh,\n app,\n domProp: 'f7PullToRefresh',\n }),\n {\n done(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.done();\n return undefined;\n },\n refresh(el) {\n const ptr = app.ptr.get(el);\n if (ptr) return ptr.refresh();\n return undefined;\n },\n }\n );\n },\n static: {\n PullToRefresh,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((index, el) => {\n app.ptr.create(el);\n });\n },\n tabBeforeRemove(tabEl) {\n const $tabEl = $(tabEl);\n const app = this;\n const $ptrEls = $tabEl.find('.ptr-content');\n if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);\n $ptrEls.each((index, el) => {\n app.ptr.destroy(el);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.ptr-content').each((index, el) => {\n app.ptr.create(el);\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.ptr-content').each((index, el) => {\n app.ptr.destroy(el);\n });\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Lazy = {\n destroy(pageEl) {\n const $pageEl = $(pageEl).closest('.page');\n if (!$pageEl.length) return;\n if ($pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy();\n }\n },\n create(pageEl) {\n const app = this;\n const $pageEl = $(pageEl).closest('.page').eq(0);\n\n // Lazy images\n const $lazyLoadImages = $pageEl.find('.lazy');\n if ($lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) return;\n\n // Placeholder\n const placeholderSrc = app.params.lazy.placeholder;\n\n if (placeholderSrc !== false) {\n $lazyLoadImages.each((index, lazyEl) => {\n if ($(lazyEl).attr('data-src') && !$(lazyEl).attr('src')) $(lazyEl).attr('src', placeholderSrc);\n });\n }\n\n // load image\n const imagesSequence = [];\n let imageIsLoading = false;\n\n function onImageComplete(lazyEl) {\n if (imagesSequence.indexOf(lazyEl) >= 0) {\n imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);\n }\n imageIsLoading = false;\n if (app.params.lazy.sequential && imagesSequence.length > 0) {\n imageIsLoading = true;\n app.lazy.loadImage(imagesSequence[0], onImageComplete);\n }\n }\n\n function observerCallback(entries, observer) {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (app.params.lazy.sequential && imageIsLoading) {\n if (imagesSequence.indexOf(entry.target) < 0) imagesSequence.push(entry.target);\n return;\n }\n // Load image\n imageIsLoading = true;\n app.lazy.loadImage(entry.target, onImageComplete);\n // Detach\n observer.unobserve(entry.target);\n }\n });\n }\n if (app.params.lazy.observer && Support.intersectionObserver) {\n let observer = $pageEl[0].f7LazyObserver;\n if (!observer) {\n observer = new window.IntersectionObserver(observerCallback, {\n root: $pageEl[0],\n });\n }\n $lazyLoadImages.each((index, el) => {\n if (el.f7LazyObserverAdded) return;\n el.f7LazyObserverAdded = true;\n observer.observe(el);\n });\n if (!$pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy = () => {\n observer.disconnect();\n delete $pageEl[0].f7LazyDestroy;\n delete $pageEl[0].f7LazyObserver;\n };\n }\n return;\n }\n\n function lazyHandler() {\n app.lazy.load($pageEl, (lazyEl) => {\n if (app.params.lazy.sequential && imageIsLoading) {\n if (imagesSequence.indexOf(lazyEl) < 0) imagesSequence.push(lazyEl);\n return;\n }\n imageIsLoading = true;\n app.lazy.loadImage(lazyEl, onImageComplete);\n });\n }\n\n function attachEvents() {\n $pageEl[0].f7LazyAttached = true;\n $pageEl.on('lazy', lazyHandler);\n $pageEl.on('scroll', lazyHandler, true);\n $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);\n app.on('resize', lazyHandler);\n }\n function detachEvents() {\n $pageEl[0].f7LazyAttached = false;\n delete $pageEl[0].f7LazyAttached;\n $pageEl.off('lazy', lazyHandler);\n $pageEl.off('scroll', lazyHandler, true);\n $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);\n app.off('resize', lazyHandler);\n }\n\n // Store detach function\n if (!$pageEl[0].f7LazyDestroy) {\n $pageEl[0].f7LazyDestroy = detachEvents;\n }\n\n // Attach events\n if (!$pageEl[0].f7LazyAttached) {\n attachEvents();\n }\n\n // Run loader on page load/init\n lazyHandler();\n },\n isInViewport(lazyEl) {\n const app = this;\n const rect = lazyEl.getBoundingClientRect();\n const threshold = app.params.lazy.threshold || 0;\n\n return (\n rect.top >= (0 - threshold)\n && rect.left >= (0 - threshold)\n && rect.top <= (app.height + threshold)\n && rect.left <= (app.width + threshold)\n );\n },\n loadImage(imageEl, callback) {\n const app = this;\n const $imageEl = $(imageEl);\n\n const bg = $imageEl.attr('data-background');\n const src = bg || $imageEl.attr('data-src');\n\n function onLoad() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', `url(${src})`);\n } else if (src) {\n $imageEl.attr('src', src);\n }\n if (callback) callback(imageEl);\n $imageEl.trigger('lazy:loaded');\n app.emit('lazyLoaded', $imageEl[0]);\n }\n\n if (!src) {\n $imageEl.trigger('lazy:load');\n app.emit('lazyLoad', $imageEl[0]);\n onLoad();\n return;\n }\n function onError() {\n $imageEl.removeClass('lazy').addClass('lazy-loaded');\n if (bg) {\n $imageEl.css('background-image', `url(${app.params.lazy.placeholder || ''})`);\n } else {\n $imageEl.attr('src', app.params.lazy.placeholder || '');\n }\n if (callback) callback(imageEl);\n $imageEl.trigger('lazy:error');\n app.emit('lazyError', $imageEl[0]);\n }\n const image = new window.Image();\n image.onload = onLoad;\n image.onerror = onError;\n image.src = src;\n\n $imageEl.removeAttr('data-src').removeAttr('data-background');\n\n // Add loaded callback and events\n $imageEl.trigger('lazy:load');\n app.emit('lazyLoad', $imageEl[0]);\n },\n load(pageEl, callback) {\n const app = this;\n let $pageEl = $(pageEl);\n if (!$pageEl.hasClass('page')) $pageEl = $pageEl.parents('.page').eq(0);\n if ($pageEl.length === 0) {\n return;\n }\n $pageEl.find('.lazy').each((index, lazyEl) => {\n const $lazyEl = $(lazyEl);\n if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {\n return;\n }\n if (app.lazy.isInViewport(lazyEl)) {\n if (callback) callback(lazyEl);\n else app.lazy.loadImage(lazyEl);\n }\n });\n },\n\n};\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',\n threshold: 0,\n sequential: true,\n observer: true,\n },\n },\n create() {\n const app = this;\n Utils.extend(app, {\n lazy: {\n create: Lazy.create.bind(app),\n destroy: Lazy.destroy.bind(app),\n loadImage: Lazy.loadImage.bind(app),\n load: Lazy.load.bind(app),\n isInViewport: Lazy.isInViewport.bind(app),\n },\n });\n },\n on: {\n pageInit(page) {\n const app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageAfterIn(page) {\n const app = this;\n if (app.params.lazy.observer && Support.intersectionObserver) return;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.create(page.$el);\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {\n app.lazy.destroy(page.$el);\n }\n },\n tabMounted(tabEl) {\n const app = this;\n const $tabEl = $(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.create($tabEl);\n }\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n if (app.params.lazy.observer && Support.intersectionObserver) return;\n const $tabEl = $(tabEl);\n if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {\n app.lazy.destroy($tabEl);\n }\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass DataTable extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const table = this;\n\n const defaults = {\n\n };\n\n // Extend defaults with modules params\n table.useModulesParams(defaults);\n\n table.params = Utils.extend(defaults, params);\n\n // El\n const $el = $(table.params.el);\n if ($el.length === 0) return undefined;\n\n table.$el = $el;\n table.el = $el[0];\n\n if (table.$el[0].f7DataTable) {\n const instance = table.$el[0].f7DataTable;\n table.destroy();\n return instance;\n }\n\n table.$el[0].f7DataTable = table;\n\n Utils.extend(table, {\n collapsible: $el.hasClass('data-table-collapsible'),\n // Headers\n $headerEl: $el.find('.data-table-header'),\n $headerSelectedEl: $el.find('.data-table-header-selected'),\n });\n\n // Events\n function handleChange(e) {\n if (e.detail && e.detail.sentByF7DataTable) {\n // Scripted event, don't do anything\n return;\n }\n const $inputEl = $(this);\n const checked = $inputEl[0].checked;\n const columnIndex = $inputEl.parents('td,th').index();\n\n if ($inputEl.parents('thead').length > 0) {\n if (columnIndex === 0) {\n $el\n .find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n $el\n .find(`tbody tr td:nth-child(${columnIndex + 1}) input`)\n .prop('checked', checked)\n .trigger('change', { sentByF7DataTable: true });\n $inputEl.prop('indeterminate', false);\n } else {\n if (columnIndex === 0) {\n $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');\n }\n const checkedRows = $el.find(`tbody .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]:checked`).length;\n const totalRows = $el.find('tbody tr').length;\n const $headCheckboxEl = $el.find(`thead .checkbox-cell:nth-child(${columnIndex + 1}) input[type=\"checkbox\"]`);\n if (!checked) {\n $headCheckboxEl.prop('checked', false);\n } else if (checkedRows === totalRows) {\n $headCheckboxEl.prop('checked', true).trigger('change', { sentByF7DataTable: true });\n }\n $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);\n }\n table.checkSelectedHeader();\n }\n function handleSortableClick() {\n const $cellEl = $(this);\n const isActive = $cellEl.hasClass('sortable-cell-active');\n const currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';\n let newSort;\n if (isActive) {\n newSort = currentSort === 'desc' ? 'asc' : 'desc';\n $cellEl.removeClass('sortable-desc sortable-asc').addClass(`sortable-${newSort}`);\n } else {\n $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');\n $cellEl.addClass('sortable-cell-active');\n newSort = currentSort;\n }\n $cellEl.trigger('datatable:sort', newSort);\n table.emit('local::sort dataTableSort', table, newSort);\n }\n table.attachEvents = function attachEvents() {\n table.$el.on('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').on('click', handleSortableClick);\n };\n table.detachEvents = function detachEvents() {\n table.$el.off('change', '.checkbox-cell input[type=\"checkbox\"]', handleChange);\n table.$el.find('thead .sortable-cell').off('click', handleSortableClick);\n };\n\n // Install Modules\n table.useModules();\n\n // Init\n table.init();\n\n return table;\n }\n\n setCollapsibleLabels() {\n const table = this;\n if (!table.collapsible) return;\n table.$el.find('tbody td:not(.checkbox-cell)').each((index, el) => {\n const $el = $(el);\n const elIndex = $el.index();\n const collpsibleTitle = $el.attr('data-collapsible-title');\n if (!collpsibleTitle && collpsibleTitle !== '') {\n $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());\n }\n });\n }\n\n checkSelectedHeader() {\n const table = this;\n if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {\n const checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;\n table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');\n table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);\n }\n }\n\n init() {\n const table = this;\n table.attachEvents();\n table.setCollapsibleLabels();\n table.checkSelectedHeader();\n }\n\n destroy() {\n let table = this;\n\n table.$el.trigger('datatable:beforedestroy');\n table.emit('local::beforeDestroy dataTableBeforeDestroy', table);\n\n table.attachEvents();\n\n if (table.$el[0]) {\n table.$el[0].f7DataTable = null;\n delete table.$el[0].f7DataTable;\n }\n Utils.deleteProps(table);\n table = null;\n }\n}\n\nexport default DataTable;\n","import $ from 'dom7';\nimport DataTable from './data-table-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'dataTable',\n static: {\n DataTable,\n },\n create() {\n const app = this;\n app.dataTable = ConstructorMethods({\n defaultSelector: '.data-table',\n constructor: DataTable,\n app,\n domProp: 'f7DataTable',\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each((index, tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.data-table-init').each((index, tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.data-table-init').each((index, tableEl) => {\n app.dataTable.destroy(tableEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.data-table-init').each((index, tableEl) => {\n app.dataTable.create({ el: tableEl });\n });\n },\n },\n vnode: {\n 'data-table-init': {\n insert(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.create({ el: tableEl });\n },\n destroy(vnode) {\n const app = this;\n const tableEl = vnode.elm;\n app.dataTable.destroy(tableEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Fab = {\n morphOpen(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return;\n\n $targetEl.transition(0).addClass('fab-morph-target-visible');\n const target = {\n width: $targetEl[0].offsetWidth,\n height: $targetEl[0].offsetHeight,\n offset: $targetEl.offset(),\n borderRadius: $targetEl.css('border-radius'),\n zIndex: $targetEl.css('z-index'),\n };\n const fab = {\n width: $fabEl[0].offsetWidth,\n height: $fabEl[0].offsetHeight,\n offset: $fabEl.offset(),\n translateX: Utils.getTranslate($fabEl[0], 'x'),\n translateY: Utils.getTranslate($fabEl[0], 'y'),\n };\n\n $fabEl[0].f7FabMorphData = {\n $targetEl,\n target,\n fab,\n };\n\n const diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n let borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));\n if (borderRadius > 0) borderRadius += 2;\n\n $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {\n $fabEl.transition(0).transform('');\n $targetEl.transition(0);\n target.width = $targetEl[0].offsetWidth;\n target.height = $targetEl[0].offsetHeight;\n target.offset = $targetEl.offset();\n fab.offset = $fabEl.offset();\n\n const diffXNew = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffYNew = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleXNew = target.width / fab.width;\n const scaleYNew = target.height / fab.height;\n\n $fabEl.transform(`translate3d(${-diffXNew}px, ${-diffYNew}px, 0) scale(${scaleXNew}, ${scaleYNew})`);\n };\n\n $targetEl\n .css('opacity', 0)\n .transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .addClass('fab-opened')\n .css('z-index', target.zIndex - 1)\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $targetEl.transition('');\n Utils.nextFrame(() => {\n $targetEl.css('opacity', 1).transform('scale(1,1)');\n $fabEl\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0) scale(${scaleX}, ${scaleY})`)\n .css('border-radius', `${borderRadius}px`)\n .css('box-shadow', 'none')\n .css('opacity', '0');\n });\n app.on('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n });\n },\n morphClose(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n const morphData = $fabEl[0].f7FabMorphData;\n if (!morphData) return;\n const { $targetEl, target, fab } = morphData;\n if ($targetEl.length === 0) return;\n\n const diffX = (fab.offset.left + (fab.width / 2))\n - (target.offset.left + (target.width / 2))\n - fab.translateX;\n const diffY = (fab.offset.top + (fab.height / 2))\n - (target.offset.top + (target.height / 2))\n - fab.translateY;\n const scaleX = target.width / fab.width;\n const scaleY = target.height / fab.height;\n\n app.off('resize', $fabEl[0].f7FabMorphResizeHandler);\n if ($targetEl.parents('.page-content').length > 0) {\n $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);\n }\n\n $targetEl\n .css('opacity', 0)\n .transform(`scale(${1 / scaleX}, ${1 / scaleY})`);\n $fabEl\n .transition('')\n .css('box-shadow', '')\n .css('border-radius', '')\n .css('opacity', '1')\n .transform(`translate3d(${-diffX}px, ${-diffY}px, 0)`);\n $fabEl.transitionEnd(() => {\n $fabEl\n .css('z-index', '')\n .removeClass('fab-opened')\n .transform('');\n Utils.nextFrame(() => {\n $fabEl.transitionEnd(() => {\n $targetEl\n .removeClass('fab-morph-target-visible')\n .css('opacity', '')\n .transform('')\n .transition('');\n });\n });\n });\n },\n open(fabEl, targetEl) {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if ($fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n\n if (app.fab.openedEl) {\n if (app.fab.openedEl === $fabEl[0]) return;\n app.fab.close(app.fab.openedEl);\n }\n app.fab.openedEl = $fabEl[0];\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));\n } else {\n $fabEl.addClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');\n $fabEl.trigger('fab:open');\n },\n close(fabEl = '.fab-opened') {\n const app = this;\n const $fabEl = $(fabEl).eq(0);\n const $buttonsEl = $fabEl.find('.fab-buttons');\n if (!$fabEl.length) return;\n if (!$fabEl.hasClass('fab-opened')) return;\n if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;\n app.fab.openedEl = null;\n if ($fabEl.hasClass('fab-morph')) {\n app.fab.morphClose($fabEl);\n } else {\n $fabEl.removeClass('fab-opened');\n }\n $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');\n $fabEl.trigger('fab:close');\n },\n toggle(fabEl) {\n const app = this;\n const $fabEl = $(fabEl);\n if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);\n else app.fab.close(fabEl);\n },\n};\n\nexport default {\n name: 'fab',\n create() {\n const app = this;\n Utils.extend(app, {\n fab: {\n openedEl: null,\n morphOpen: Fab.morphOpen.bind(app),\n morphClose: Fab.morphClose.bind(app),\n open: Fab.open.bind(app),\n close: Fab.close.bind(app),\n toggle: Fab.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.fab > a': function open($clickedEl) {\n const app = this;\n app.fab.toggle($clickedEl.parents('.fab'));\n },\n '.fab-open': function open($clickedEl, data = {}) {\n const app = this;\n app.fab.open(data.fab);\n },\n '.fab-close': function close($clickedEl, data = {}) {\n const app = this;\n app.fab.close(data.fab);\n },\n '.fab-backdrop': function close() {\n const app = this;\n app.fab.close();\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport FrameworkClass from '../../utils/class';\n\nclass Searchbar extends FrameworkClass {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const sb = this;\n\n const defaults = {\n el: undefined,\n inputEl: undefined,\n inputEvents: 'change input compositionend',\n disableButton: true,\n disableButtonEl: undefined,\n backdropEl: undefined,\n searchContainer: undefined, // container to search, HTMLElement or CSS selector\n searchItem: 'li', // single item selector, CSS selector\n searchIn: undefined, // where to search in item, CSS selector\n searchGroup: '.list-group',\n searchGroupTitle: '.item-divider, .list-group-title',\n ignore: '.searchbar-ignore',\n foundEl: '.searchbar-found',\n notFoundEl: '.searchbar-not-found',\n hideOnEnableEl: '.searchbar-hide-on-enable',\n hideOnSearchEl: '.searchbar-hide-on-search',\n backdrop: undefined,\n removeDiacritics: true,\n customSearch: false,\n hideDividers: true,\n hideGroups: true,\n disableOnBackdropClick: true,\n expandable: false,\n inline: false,\n };\n\n // Extend defaults with modules params\n sb.useModulesParams(defaults);\n\n sb.params = Utils.extend(defaults, params);\n\n const $el = $(sb.params.el);\n if ($el.length === 0) return sb;\n\n if ($el[0].f7Searchbar) return $el[0].f7Searchbar;\n\n $el[0].f7Searchbar = sb;\n\n let $pageEl;\n const $navbarEl = $el.parents('.navbar');\n if ($el.parents('.page').length > 0) {\n $pageEl = $el.parents('.page');\n } else if ($navbarEl.length > 0) {\n $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));\n if (!$pageEl.length) {\n const $currentPageEl = $el.parents('.view').find('.page-current');\n if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {\n $pageEl = $currentPageEl;\n }\n }\n }\n\n let $foundEl;\n if (params.foundEl) {\n $foundEl = $(params.foundEl);\n } else if (typeof sb.params.foundEl === 'string' && $pageEl) {\n $foundEl = $pageEl.find(sb.params.foundEl);\n }\n\n let $notFoundEl;\n if (params.notFoundEl) {\n $notFoundEl = $(params.notFoundEl);\n } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {\n $notFoundEl = $pageEl.find(sb.params.notFoundEl);\n }\n\n let $hideOnEnableEl;\n if (params.hideOnEnableEl) {\n $hideOnEnableEl = $(params.hideOnEnableEl);\n } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {\n $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);\n }\n\n let $hideOnSearchEl;\n if (params.hideOnSearchEl) {\n $hideOnSearchEl = $(params.hideOnSearchEl);\n } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {\n $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);\n }\n\n\n const expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');\n const inline = sb.params.inline || $el.hasClass('searchbar-inline');\n\n if (typeof sb.params.backdrop === 'undefined') {\n if (!inline) sb.params.backdrop = app.theme !== 'aurora';\n else sb.params.backdrop = false;\n }\n\n let $backdropEl;\n if (sb.params.backdrop) {\n if (sb.params.backdropEl) {\n $backdropEl = $(sb.params.backdropEl);\n } else if ($pageEl && $pageEl.length > 0) {\n $backdropEl = $pageEl.find('.searchbar-backdrop');\n } else {\n $backdropEl = $el.siblings('.searchbar-backdrop');\n }\n if ($backdropEl.length === 0) {\n $backdropEl = $('<div class=\"searchbar-backdrop\"></div>');\n if ($pageEl && $pageEl.length) {\n if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {\n $backdropEl.insertBefore($el);\n } else {\n $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));\n }\n } else {\n $backdropEl.insertBefore($el);\n }\n }\n }\n\n let $searchContainer;\n if (sb.params.searchContainer) {\n $searchContainer = $(sb.params.searchContainer);\n }\n\n let $inputEl;\n if (sb.params.inputEl) {\n $inputEl = $(sb.params.inputEl);\n } else {\n $inputEl = $el.find('input[type=\"search\"]').eq(0);\n }\n\n let $disableButtonEl;\n if (sb.params.disableButton) {\n if (sb.params.disableButtonEl) {\n $disableButtonEl = $(sb.params.disableButtonEl);\n } else {\n $disableButtonEl = $el.find('.searchbar-disable-button');\n }\n }\n\n Utils.extend(sb, {\n app,\n view: app.views.get($el.parents('.view')),\n $el,\n el: $el[0],\n $backdropEl,\n backdropEl: $backdropEl && $backdropEl[0],\n $searchContainer,\n searchContainer: $searchContainer && $searchContainer[0],\n $inputEl,\n inputEl: $inputEl[0],\n $disableButtonEl,\n disableButtonEl: $disableButtonEl && $disableButtonEl[0],\n disableButtonHasMargin: false,\n $pageEl,\n pageEl: $pageEl && $pageEl[0],\n $navbarEl,\n navbarEl: $navbarEl && $navbarEl[0],\n $foundEl,\n foundEl: $foundEl && $foundEl[0],\n $notFoundEl,\n notFoundEl: $notFoundEl && $notFoundEl[0],\n $hideOnEnableEl,\n hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],\n $hideOnSearchEl,\n hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],\n previousQuery: '',\n query: '',\n isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),\n virtualList: undefined,\n enabled: false,\n expandable,\n inline,\n });\n\n // Events\n function preventSubmit(e) {\n e.preventDefault();\n }\n function onInputFocus(e) {\n sb.enable(e);\n sb.$el.addClass('searchbar-focused');\n }\n function onInputBlur() {\n sb.$el.removeClass('searchbar-focused');\n if (app.theme === 'aurora' && (!$disableButtonEl || !$disableButtonEl.length || !sb.params.disableButton) && !sb.query) {\n sb.disable();\n }\n }\n function onInputChange() {\n const value = sb.$inputEl.val().trim();\n if (\n (\n (sb.$searchContainer && sb.$searchContainer.length > 0)\n && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem)\n )\n || sb.params.customSearch\n ) {\n sb.search(value, true);\n }\n }\n function onInputClear(e, previousValue) {\n sb.$el.trigger('searchbar:clear', previousValue);\n sb.emit('local::clear searchbarClear', sb, previousValue);\n }\n function disableOnClick(e) {\n sb.disable(e);\n }\n function onPageBeforeOut() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.removeClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n function onPageBeforeIn() {\n if (!sb || (sb && !sb.$el)) return;\n if (sb.enabled) {\n sb.$el.addClass('searchbar-enabled');\n if (sb.expandable) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');\n }\n }\n }\n sb.attachEvents = function attachEvents() {\n $el.on('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.on('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.on('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.on('page:beforeout', onPageBeforeOut);\n sb.$pageEl.on('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.on('focus', onInputFocus);\n sb.$inputEl.on('blur', onInputBlur);\n sb.$inputEl.on(sb.params.inputEvents, onInputChange);\n sb.$inputEl.on('input:clear', onInputClear);\n };\n sb.detachEvents = function detachEvents() {\n $el.off('submit', preventSubmit);\n if (sb.params.disableButton) {\n sb.$disableButtonEl.off('click', disableOnClick);\n }\n if (sb.params.disableOnBackdropClick && sb.$backdropEl) {\n sb.$backdropEl.off('click', disableOnClick);\n }\n if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {\n sb.$pageEl.off('page:beforeout', onPageBeforeOut);\n sb.$pageEl.off('page:beforein', onPageBeforeIn);\n }\n sb.$inputEl.off('focus', onInputFocus);\n sb.$inputEl.off('blur', onInputBlur);\n sb.$inputEl.off(sb.params.inputEvents, onInputChange);\n sb.$inputEl.off('input:clear', onInputClear);\n };\n\n // Install Modules\n sb.useModules();\n\n // Init\n sb.init();\n\n return sb;\n }\n\n clear(e) {\n const sb = this;\n if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {\n sb.disable();\n return sb;\n }\n const previousQuery = sb.value;\n sb.$inputEl.val('').trigger('change').focus();\n sb.$el.trigger('searchbar:clear', previousQuery);\n sb.emit('local::clear searchbarClear', sb, previousQuery);\n return sb;\n }\n\n setDisableButtonMargin() {\n const sb = this;\n if (sb.expandable) return;\n const app = sb.app;\n sb.$disableButtonEl.transition(0).show();\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n /* eslint no-underscore-dangle: [\"error\", { \"allow\": [\"_clientLeft\"] }] */\n sb._clientLeft = sb.$disableButtonEl[0].clientLeft;\n sb.$disableButtonEl.transition('');\n sb.disableButtonHasMargin = true;\n }\n\n enable(setFocus) {\n const sb = this;\n if (sb.enabled) return sb;\n const app = sb.app;\n sb.enabled = true;\n function enable() {\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {\n sb.backdropShow();\n }\n sb.$el.addClass('searchbar-enabled');\n if (!sb.$disableButtonEl || (sb.$disableButtonEl && sb.$disableButtonEl.length === 0)) {\n sb.$el.addClass('searchbar-enabled-no-disable-button');\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n if (!sb.disableButtonHasMargin) {\n sb.setDisableButtonMargin();\n }\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, '0px');\n }\n if (sb.expandable) {\n if (sb.$el.parents('.navbar').hasClass('navbar-large') && sb.$pageEl) {\n sb.$pageEl.find('.page-content').addClass('with-searchbar-expandable-enabled');\n }\n if (app.theme === 'md' && sb.$el.parents('.navbar').length) {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled');\n } else {\n sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled');\n sb.$el.parents('.navbar-large').addClass('navbar-large-collapsed');\n }\n }\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');\n sb.$el.trigger('searchbar:enable');\n sb.emit('local::enable searchbarEnable', sb);\n }\n let needsFocus = false;\n if (setFocus === true) {\n if (document.activeElement !== sb.inputEl) {\n needsFocus = true;\n }\n }\n const isIos = app.device.ios && app.theme === 'ios';\n if (isIos) {\n if (sb.expandable) {\n if (needsFocus) sb.$inputEl.focus();\n enable();\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {\n Utils.nextTick(() => {\n enable();\n }, 400);\n } else {\n enable();\n }\n }\n } else {\n if (needsFocus) sb.$inputEl.focus();\n if (app.theme === 'md' && sb.expandable) {\n sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);\n }\n enable();\n }\n return sb;\n }\n\n disable() {\n const sb = this;\n if (!sb.enabled) return sb;\n const app = sb.app;\n sb.$inputEl.val('').trigger('change');\n sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');\n if (sb.expandable) {\n if (sb.$el.parents('.navbar').hasClass('navbar-large') && sb.$pageEl) {\n sb.$pageEl.find('.page-content').removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n sb.$pageEl.find('.page-content').removeClass('with-searchbar-expandable-closing');\n });\n }\n if (app.theme === 'md' && sb.$el.parents('.navbar').length) {\n sb.$el.parents('.navbar')\n .removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition')\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-closing');\n });\n } else {\n sb.$el.parents('.navbar')\n .removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition')\n .addClass('with-searchbar-expandable-closing');\n sb.$el.transitionEnd(() => {\n sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-closing');\n });\n if (sb.$pageEl) {\n sb.$pageEl.find('.page-content').trigger('scroll');\n }\n }\n }\n if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {\n sb.$disableButtonEl.css(`margin-${app.rtl ? 'left' : 'right'}`, `${-sb.disableButtonEl.offsetWidth}px`);\n }\n if (sb.$backdropEl && ((sb.$searchContainer && sb.$searchContainer.length) || sb.params.customSearch)) {\n sb.backdropHide();\n }\n\n sb.enabled = false;\n\n sb.$inputEl.blur();\n\n if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');\n\n sb.$el.trigger('searchbar:disable');\n sb.emit('local::disable searchbarDisable', sb);\n return sb;\n }\n\n toggle() {\n const sb = this;\n if (sb.enabled) sb.disable();\n else sb.enable(true);\n return sb;\n }\n\n backdropShow() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.addClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n backdropHide() {\n const sb = this;\n if (sb.$backdropEl) {\n sb.$backdropEl.removeClass('searchbar-backdrop-in');\n }\n return sb;\n }\n\n search(query, internal) {\n const sb = this;\n sb.previousQuery = sb.query || '';\n if (query === sb.previousQuery) return sb;\n\n if (!internal) {\n if (!sb.enabled) {\n sb.enable();\n }\n sb.$inputEl.val(query);\n sb.$inputEl.trigger('input');\n }\n sb.query = query;\n sb.value = query;\n\n const { $searchContainer, $el, $foundEl, $notFoundEl, $hideOnSearchEl, isVirtualList } = sb;\n\n // Hide on search element\n if (query.length > 0 && $hideOnSearchEl) {\n $hideOnSearchEl.addClass('hidden-by-searchbar');\n } else if ($hideOnSearchEl) {\n $hideOnSearchEl.removeClass('hidden-by-searchbar');\n }\n // Add active/inactive classes on overlay\n if (\n ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled'))\n || (sb.params.customSearch && $el.hasClass('searchbar-enabled'))\n ) {\n if (query.length === 0) {\n sb.backdropShow();\n } else {\n sb.backdropHide();\n }\n }\n\n if (sb.params.customSearch) {\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n\n let foundItems = [];\n let vlQuery;\n if (isVirtualList) {\n sb.virtualList = $searchContainer[0].f7VirtualList;\n if (query.trim() === '') {\n sb.virtualList.resetFilter();\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);\n return sb;\n }\n vlQuery = sb.params.removeDiacritics ? Utils.removeDiacritics(query) : query;\n if (sb.virtualList.params.searchAll) {\n foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];\n } else if (sb.virtualList.params.searchByItem) {\n for (let i = 0; i < sb.virtualList.items.length; i += 1) {\n if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.params.items[i], i)) {\n foundItems.push(i);\n }\n }\n }\n } else {\n let values;\n if (sb.params.removeDiacritics) values = Utils.removeDiacritics(query.trim().toLowerCase()).split(' ');\n else {\n values = query.trim().toLowerCase().split(' ');\n }\n $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each((itemIndex, itemEl) => {\n const $itemEl = $(itemEl);\n let compareWithText = [];\n let $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;\n if (sb.params.searchIn === sb.params.searchItem) {\n $searchIn = $itemEl;\n }\n $searchIn.each((searchInIndex, searchInEl) => {\n let itemText = $(searchInEl).text().trim().toLowerCase();\n if (sb.params.removeDiacritics) itemText = Utils.removeDiacritics(itemText);\n compareWithText.push(itemText);\n });\n compareWithText = compareWithText.join(' ');\n let wordsMatch = 0;\n for (let i = 0; i < values.length; i += 1) {\n if (compareWithText.indexOf(values[i]) >= 0) wordsMatch += 1;\n }\n if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {\n $itemEl.addClass('hidden-by-searchbar');\n } else {\n foundItems.push($itemEl[0]);\n }\n });\n\n if (sb.params.hideDividers) {\n $searchContainer.find(sb.params.searchGroupTitle).each((titleIndex, titleEl) => {\n const $titleEl = $(titleEl);\n const $nextElements = $titleEl.nextAll(sb.params.searchItem);\n let hide = true;\n for (let i = 0; i < $nextElements.length; i += 1) {\n const $nextEl = $nextElements.eq(i);\n if ($nextEl.is(sb.params.searchGroupTitle)) break;\n if (!$nextEl.hasClass('hidden-by-searchbar')) {\n hide = false;\n }\n }\n const ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);\n if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');\n else $titleEl.removeClass('hidden-by-searchbar');\n });\n }\n if (sb.params.hideGroups) {\n $searchContainer.find(sb.params.searchGroup).each((groupIndex, groupEl) => {\n const $groupEl = $(groupEl);\n const ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);\n // eslint-disable-next-line\n const notHidden = $groupEl.find(sb.params.searchItem).filter((index, el) => {\n return !$(el).hasClass('hidden-by-searchbar');\n });\n if (notHidden.length === 0 && !ignore) {\n $groupEl.addClass('hidden-by-searchbar');\n } else {\n $groupEl.removeClass('hidden-by-searchbar');\n }\n });\n }\n }\n\n if (foundItems.length === 0) {\n if ($notFoundEl) $notFoundEl.show();\n if ($foundEl) $foundEl.hide();\n } else {\n if ($notFoundEl) $notFoundEl.hide();\n if ($foundEl) $foundEl.show();\n }\n if (isVirtualList && sb.virtualList) {\n sb.virtualList.filterItems(foundItems);\n }\n\n $el.trigger('searchbar:search', { query, previousQuery: sb.previousQuery, foundItems });\n sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);\n\n return sb;\n }\n\n init() {\n const sb = this;\n if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');\n if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');\n sb.attachEvents();\n }\n\n destroy() {\n const sb = this;\n sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);\n sb.$el.trigger('searchbar:beforedestroy');\n sb.detachEvents();\n if (sb.$el[0]) {\n sb.$el[0].f7Searchbar = null;\n delete sb.$el[0].f7Searchbar;\n }\n Utils.deleteProps(sb);\n }\n}\n\nexport default Searchbar;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Searchbar from './searchbar-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'searchbar',\n static: {\n Searchbar,\n },\n create() {\n const app = this;\n app.searchbar = ConstructorMethods({\n defaultSelector: '.searchbar',\n constructor: Searchbar,\n app,\n domProp: 'f7Searchbar',\n addMethods: 'clear enable disable toggle search'.split(' '),\n });\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each((index, searchbarEl) => {\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.searchbar-init').each((index, searchbarEl) => {\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n });\n }\n },\n },\n clicks: {\n '.searchbar-clear': function clear($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.clear();\n },\n '.searchbar-enable': function enable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.enable(true);\n },\n '.searchbar-disable': function disable($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.disable();\n },\n '.searchbar-toggle': function toggle($clickedEl, data = {}) {\n const app = this;\n const sb = app.searchbar.get(data.searchbar);\n if (sb) sb.toggle();\n },\n },\n vnode: {\n 'searchbar-init': {\n insert(vnode) {\n const app = this;\n const searchbarEl = vnode.elm;\n const $searchbarEl = $(searchbarEl);\n app.searchbar.create(Utils.extend($searchbarEl.dataset(), { el: searchbarEl }));\n },\n destroy(vnode) {\n const searchbarEl = vnode.elm;\n if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {\n searchbarEl.f7Searchbar.destroy();\n }\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Messages extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const m = this;\n\n const defaults = {\n autoLayout: true,\n messages: [],\n newMessagesFirst: false,\n scrollMessages: true,\n scrollMessagesOnEdge: true,\n firstMessageRule: undefined,\n lastMessageRule: undefined,\n tailMessageRule: undefined,\n sameNameMessageRule: undefined,\n sameHeaderMessageRule: undefined,\n sameFooterMessageRule: undefined,\n sameAvatarMessageRule: undefined,\n customClassMessageRule: undefined,\n renderMessage: undefined,\n };\n\n // Extend defaults with modules params\n m.useModulesParams(defaults);\n\n m.params = Utils.extend(defaults, params);\n\n const $el = $(params.el).eq(0);\n if ($el.length === 0) return m;\n\n if ($el[0].f7Messages) return $el[0].f7Messages;\n\n $el[0].f7Messages = m;\n\n const $pageContentEl = $el.closest('.page-content').eq(0);\n\n Utils.extend(m, {\n messages: m.params.messages,\n $el,\n el: $el[0],\n $pageContentEl,\n pageContentEl: $pageContentEl[0],\n\n });\n // Install Modules\n m.useModules();\n\n // Init\n m.init();\n\n return m;\n }\n // eslint-disable-next-line\n getMessageData(messageEl) {\n const $messageEl = $(messageEl);\n const data = {\n name: $messageEl.find('.message-name').html(),\n header: $messageEl.find('.message-header').html(),\n textHeader: $messageEl.find('.message-text-header').html(),\n textFooter: $messageEl.find('.message-text-footer').html(),\n footer: $messageEl.find('.message-footer').html(),\n isTitle: $messageEl.hasClass('messages-title'),\n type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',\n text: $messageEl.find('.message-text').html(),\n image: $messageEl.find('.message-image').html(),\n imageSrc: $messageEl.find('.message-image img').attr('src'),\n typing: $messageEl.hasClass('message-typing'),\n };\n if (data.isTitle) {\n data.text = $messageEl.html();\n }\n if (data.text && data.textHeader) {\n data.text = data.text.replace(`<div class=\"message-text-header\">${data.textHeader}</div>`, '');\n }\n if (data.text && data.textFooter) {\n data.text = data.text.replace(`<div class=\"message-text-footer\">${data.textFooter}</div>`, '');\n }\n let avatar = $messageEl.find('.message-avatar').css('background-image');\n if (avatar === 'none' || avatar === '') avatar = undefined;\n if (avatar && typeof avatar === 'string') {\n avatar = avatar.replace('url(', '').replace(')', '').replace(/\"/g, '').replace(/'/g, '');\n } else {\n avatar = undefined;\n }\n data.avatar = avatar;\n\n return data;\n }\n\n getMessagesData() {\n const m = this;\n const data = [];\n m.$el.find('.message, .messages-title').each((index, messageEl) => {\n data.push(m.getMessageData(messageEl));\n });\n return data;\n }\n\n renderMessage(messageToRender) {\n const m = this;\n const message = Utils.extend({\n type: 'sent',\n attrs: {},\n }, messageToRender);\n if (m.params.renderMessage) {\n return m.params.renderMessage.call(m, message);\n }\n if (message.isTitle) {\n return `<div class=\"messages-title\">${message.text}</div>`;\n }\n const attrs = Object.keys(message.attrs).map(attr => `${attr}=\"${message.attrs[attr]}\"`).join(' ');\n return `\n <div class=\"message message-${message.type} ${message.isTyping ? 'message-typing' : ''} ${message.cssClass || ''}\" ${attrs}>\n ${message.avatar ? `\n <div class=\"message-avatar\" style=\"background-image:url(${message.avatar})\"></div>\n ` : ''}\n <div class=\"message-content\">\n ${message.name ? `<div class=\"message-name\">${message.name}</div>` : ''}\n ${message.header ? `<div class=\"message-header\">${message.header}</div>` : ''}\n <div class=\"message-bubble\">\n ${message.textHeader ? `<div class=\"message-text-header\">${message.textHeader}</div>` : ''}\n ${message.image ? `<div class=\"message-image\">${message.image}</div>` : ''}\n ${message.imageSrc && !message.image ? `<div class=\"message-image\"><img src=\"${message.imageSrc}\"></div>` : ''}\n ${message.text || message.isTyping ? `<div class=\"message-text\">${message.text || ''}${message.isTyping ? '<div class=\"message-typing-indicator\"><div></div><div></div><div></div></div>' : ''}</div>` : ''}\n ${message.textFooter ? `<div class=\"message-text-footer\">${message.textFooter}</div>` : ''}\n </div>\n ${message.footer ? `<div class=\"message-footer\">${message.footer}</div>` : ''}\n </div>\n </div>\n `;\n }\n\n renderMessages(messagesToRender = this.messages, method = this.params.newMessagesFirst ? 'prepend' : 'append') {\n const m = this;\n const html = messagesToRender.map(message => m.renderMessage(message)).join('');\n m.$el[method](html);\n }\n\n isFirstMessage(...args) {\n const m = this;\n if (m.params.firstMessageRule) return m.params.firstMessageRule(...args);\n return false;\n }\n\n isLastMessage(...args) {\n const m = this;\n if (m.params.lastMessageRule) return m.params.lastMessageRule(...args);\n return false;\n }\n\n isTailMessage(...args) {\n const m = this;\n if (m.params.tailMessageRule) return m.params.tailMessageRule(...args);\n return false;\n }\n\n isSameNameMessage(...args) {\n const m = this;\n if (m.params.sameNameMessageRule) return m.params.sameNameMessageRule(...args);\n return false;\n }\n\n isSameHeaderMessage(...args) {\n const m = this;\n if (m.params.sameHeaderMessageRule) return m.params.sameHeaderMessageRule(...args);\n return false;\n }\n\n isSameFooterMessage(...args) {\n const m = this;\n if (m.params.sameFooterMessageRule) return m.params.sameFooterMessageRule(...args);\n return false;\n }\n\n isSameAvatarMessage(...args) {\n const m = this;\n if (m.params.sameAvatarMessageRule) return m.params.sameAvatarMessageRule(...args);\n return false;\n }\n\n isCustomClassMessage(...args) {\n const m = this;\n if (m.params.customClassMessageRule) return m.params.customClassMessageRule(...args);\n return undefined;\n }\n\n layout() {\n const m = this;\n m.$el.find('.message, .messages-title').each((index, messageEl) => {\n const $messageEl = $(messageEl);\n if (!m.messages) {\n m.messages = m.getMessagesData();\n }\n const classes = [];\n const message = m.messages[index];\n const previousMessage = m.messages[index - 1];\n const nextMessage = m.messages[index + 1];\n if (m.isFirstMessage(message, previousMessage, nextMessage)) {\n classes.push('message-first');\n }\n if (m.isLastMessage(message, previousMessage, nextMessage)) {\n classes.push('message-last');\n }\n if (m.isTailMessage(message, previousMessage, nextMessage)) {\n classes.push('message-tail');\n }\n if (m.isSameNameMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-name');\n }\n if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-header');\n }\n if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-footer');\n }\n if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {\n classes.push('message-same-avatar');\n }\n let customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);\n if (customMessageClasses && customMessageClasses.length) {\n if (typeof customMessageClasses === 'string') {\n customMessageClasses = customMessageClasses.split(' ');\n }\n customMessageClasses.forEach((customClass) => {\n classes.push(customClass);\n });\n }\n $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');\n classes.forEach((className) => {\n $messageEl.addClass(className);\n });\n });\n }\n\n clear() {\n const m = this;\n m.messages = [];\n m.$el.html('');\n }\n\n removeMessage(messageToRemove, layout = true) {\n const m = this;\n // Index or El\n let index;\n let $el;\n if (typeof messageToRemove === 'number') {\n index = messageToRemove;\n $el = m.$el.find('.message, .messages-title').eq(index);\n } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {\n index = m.messages.indexOf(messageToRemove);\n $el = m.$el.children().eq(index);\n } else {\n $el = $(messageToRemove);\n index = $el.index();\n }\n if ($el.length === 0) {\n return m;\n }\n $el.remove();\n m.messages.splice(index, 1);\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n removeMessages(messagesToRemove, layout = true) {\n const m = this;\n if (Array.isArray(messagesToRemove)) {\n const messagesToRemoveEls = [];\n messagesToRemove.forEach((messageToRemoveIndex) => {\n messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));\n });\n messagesToRemoveEls.forEach((messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n } else {\n $(messagesToRemove).each((index, messageToRemove) => {\n m.removeMessage(messageToRemove, false);\n });\n }\n if (m.params.autoLayout && layout) m.layout();\n return m;\n }\n\n addMessage(...args) {\n const m = this;\n let messageToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messageToAdd, animate, method] = args;\n } else {\n [messageToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n return m.addMessages([messageToAdd], animate, method);\n }\n\n addMessages(...args) {\n const m = this;\n let messagesToAdd;\n let animate;\n let method;\n if (typeof args[1] === 'boolean') {\n [messagesToAdd, animate, method] = args;\n } else {\n [messagesToAdd, method, animate] = args;\n }\n if (typeof animate === 'undefined') {\n animate = true;\n }\n if (typeof method === 'undefined') {\n method = m.params.newMessagesFirst ? 'prepend' : 'append';\n }\n\n // Define scroll positions before new messages added\n const scrollHeightBefore = m.pageContentEl.scrollHeight;\n const heightBefore = m.pageContentEl.offsetHeight;\n const scrollBefore = m.pageContentEl.scrollTop;\n\n // Add message to DOM and data\n let messagesHTML = '';\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n messagesToAdd.forEach((messageToAdd) => {\n if (typingMessage) {\n if (method === 'append') {\n m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);\n } else {\n m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);\n }\n } else {\n m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);\n }\n messagesHTML += m.renderMessage(messageToAdd);\n });\n const $messagesEls = $(messagesHTML);\n if (animate) {\n if (method === 'append' && !m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-bottom');\n }\n if (method === 'prepend' && m.params.newMessagesFirst) {\n $messagesEls.addClass('message-appear-from-top');\n }\n }\n if (typingMessage) {\n if (method === 'append') {\n $messagesEls.insertBefore(m.$el.find('.message-typing'));\n } else {\n $messagesEls.insertAfter(m.$el.find('.message-typing'));\n }\n } else {\n m.$el[method]($messagesEls);\n }\n\n // Layout\n if (m.params.autoLayout) m.layout();\n\n if (method === 'prepend' && !typingMessage) {\n m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);\n }\n\n if (m.params.scrollMessages && ((method === 'append' && !m.params.newMessagesFirst) || (method === 'prepend' && m.params.newMessagesFirst && !typingMessage))) {\n if (m.params.scrollMessagesOnEdge) {\n let onEdge = false;\n if (m.params.newMessagesFirst && scrollBefore === 0) {\n onEdge = true;\n }\n if (!m.params.newMessagesFirst && (scrollBefore - (scrollHeightBefore - heightBefore) >= -10)) {\n onEdge = true;\n }\n if (onEdge) m.scroll(animate ? undefined : 0);\n } else {\n m.scroll(animate ? undefined : 0);\n }\n }\n\n return m;\n }\n\n showTyping(message = {}) {\n const m = this;\n const typingMessage = m.messages.filter(el => el.isTyping)[0];\n if (typingMessage) {\n m.removeMessage(m.messages.indexOf(typingMessage));\n }\n m.addMessage(Utils.extend({\n type: 'received',\n isTyping: true,\n }, message));\n return m;\n }\n\n hideTyping() {\n const m = this;\n let typingMessageIndex;\n let typingFound;\n m.messages.forEach((message, index) => {\n if (message.isTyping) typingMessageIndex = index;\n });\n if (typeof typingMessageIndex !== 'undefined') {\n if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {\n typingFound = true;\n m.removeMessage(typingMessageIndex);\n }\n }\n if (!typingFound) {\n const $typingMessageEl = m.$el.find('.message-typing');\n if ($typingMessageEl.length) {\n m.removeMessage($typingMessageEl);\n }\n }\n return m;\n }\n\n scroll(duration = 300, scrollTop) {\n const m = this;\n const currentScroll = m.pageContentEl.scrollTop;\n let newScrollTop;\n if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;\n else {\n newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;\n if (newScrollTop === currentScroll) return m;\n }\n m.$pageContentEl.scrollTop(newScrollTop, duration);\n return m;\n }\n\n init() {\n const m = this;\n if (!m.messages || m.messages.length === 0) {\n m.messages = m.getMessagesData();\n }\n if (m.params.messages && m.params.messages.length) {\n m.renderMessages();\n }\n if (m.params.autoLayout) m.layout();\n if (m.params.scrollMessages) m.scroll(0);\n }\n\n destroy() {\n const m = this;\n m.emit('local::beforeDestroy messagesBeforeDestroy', m);\n m.$el.trigger('messages:beforedestroy');\n if (m.$el[0]) {\n m.$el[0].f7Messages = null;\n delete m.$el[0].f7Messages;\n }\n Utils.deleteProps(m);\n }\n}\n\nexport default Messages;\n","import $ from 'dom7';\nimport Messages from './messages-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'messages',\n static: {\n Messages,\n },\n create() {\n const app = this;\n app.messages = ConstructorMethods({\n defaultSelector: '.messages',\n constructor: Messages,\n app,\n domProp: 'f7Messages',\n addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' '),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each((index, messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messages-init').each((index, messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messages-init').each((index, messagesEl) => {\n app.messages.destroy(messagesEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messages-init').each((index, messagesEl) => {\n app.messages.create({ el: messagesEl });\n });\n },\n },\n vnode: {\n 'messages-init': {\n insert(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.create({ el: messagesEl });\n },\n destroy(vnode) {\n const app = this;\n const messagesEl = vnode.elm;\n app.messages.destroy(messagesEl);\n },\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Messagebar extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const messagebar = this;\n\n const defaults = {\n top: false,\n topOffset: 0,\n bottomOffset: 0,\n attachments: [],\n renderAttachments: undefined,\n renderAttachment: undefined,\n maxHeight: null,\n resizePage: true,\n };\n\n // Extend defaults with modules params\n messagebar.useModulesParams(defaults);\n\n messagebar.params = Utils.extend(defaults, params);\n\n // El\n const $el = $(messagebar.params.el);\n if ($el.length === 0) return messagebar;\n\n if ($el[0].f7Messagebar) return $el[0].f7Messagebar;\n\n $el[0].f7Messagebar = messagebar;\n\n // Page and PageContent\n const $pageEl = $el.parents('.page').eq(0);\n const $pageContentEl = $pageEl.find('.page-content').eq(0);\n\n // Area\n const $areaEl = $el.find('.messagebar-area');\n\n // Textarea\n let $textareaEl;\n if (messagebar.params.textareaEl) {\n $textareaEl = $(messagebar.params.textareaEl);\n } else {\n $textareaEl = $el.find('textarea');\n }\n\n // Attachments & Library\n const $attachmentsEl = $el.find('.messagebar-attachments');\n const $sheetEl = $el.find('.messagebar-sheet');\n\n if (messagebar.params.top) {\n $el.addClass('messagebar-top');\n }\n\n Utils.extend(messagebar, {\n $el,\n el: $el[0],\n $areaEl,\n areaEl: $areaEl[0],\n $textareaEl,\n textareaEl: $textareaEl[0],\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),\n $sheetEl,\n sheetEl: $sheetEl[0],\n sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),\n $pageEl,\n pageEl: $pageEl[0],\n $pageContentEl,\n pageContentEl: $pageContentEl,\n top: $el.hasClass('messagebar-top') || messagebar.params.top,\n attachments: [],\n });\n\n // Events\n function onAppResize() {\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n }\n function onSubmit(e) {\n e.preventDefault();\n }\n function onAttachmentClick(e) {\n const index = $(this).index();\n if ($(e.target).closest('.messagebar-attachment-delete').length) {\n $(this).trigger('messagebar:attachmentdelete', index);\n messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);\n } else {\n $(this).trigger('messagebar:attachmentclick', index);\n messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);\n }\n }\n function onTextareaChange() {\n messagebar.checkEmptyState();\n messagebar.$el.trigger('messagebar:change');\n messagebar.emit('local::change messagebarChange', messagebar);\n }\n function onTextareaFocus() {\n messagebar.sheetHide();\n messagebar.$el.addClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:focus');\n messagebar.emit('local::focus messagebarFocus', messagebar);\n }\n function onTextareaBlur() {\n messagebar.$el.removeClass('messagebar-focused');\n messagebar.$el.trigger('messagebar:blur');\n messagebar.emit('local::blur messagebarBlur', messagebar);\n }\n\n messagebar.attachEvents = function attachEvents() {\n $el.on('textarea:resize', onAppResize);\n $el.on('submit', onSubmit);\n $el.on('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.on('change input', onTextareaChange);\n $textareaEl.on('focus', onTextareaFocus);\n $textareaEl.on('blur', onTextareaBlur);\n app.on('resize', onAppResize);\n };\n messagebar.detachEvents = function detachEvents() {\n $el.off('textarea:resize', onAppResize);\n $el.off('submit', onSubmit);\n $el.off('click', '.messagebar-attachment', onAttachmentClick);\n $textareaEl.off('change input', onTextareaChange);\n $textareaEl.off('focus', onTextareaFocus);\n $textareaEl.off('blur', onTextareaBlur);\n app.off('resize', onAppResize);\n };\n\n\n // Install Modules\n messagebar.useModules();\n\n // Init\n messagebar.init();\n\n return messagebar;\n }\n\n focus() {\n const messagebar = this;\n messagebar.$textareaEl.focus();\n return messagebar;\n }\n\n blur() {\n const messagebar = this;\n messagebar.$textareaEl.blur();\n return messagebar;\n }\n\n clear() {\n const messagebar = this;\n messagebar.$textareaEl.val('').trigger('change');\n return messagebar;\n }\n\n getValue() {\n const messagebar = this;\n return messagebar.$textareaEl.val().trim();\n }\n\n setValue(value) {\n const messagebar = this;\n messagebar.$textareaEl.val(value).trigger('change');\n return messagebar;\n }\n\n setPlaceholder(placeholder) {\n const messagebar = this;\n messagebar.$textareaEl.attr('placeholder', placeholder);\n return messagebar;\n }\n\n resizePage() {\n const messagebar = this;\n const {\n params,\n $el,\n top,\n $pageEl,\n $pageContentEl,\n $areaEl,\n $textareaEl,\n $sheetEl,\n $attachmentsEl,\n } = messagebar;\n const elHeight = $el[0].offsetHeight;\n let maxHeight = params.maxHeight;\n if (top) {\n /*\n Disable at the moment\n const requiredPaddingTop = elHeight + params.topOffset;\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n if (requiredPaddingTop !== currentPaddingTop) {\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-top', `${requiredPaddingTop}px`);\n $el.trigger('messagebar:resizePage');\n messagebar.emit('local::resizepage messagebarResizePage');\n }\n */\n } else {\n const currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const requiredPaddingBottom = elHeight + params.bottomOffset;\n if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {\n const currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);\n const pageScrollHeight = $pageContentEl[0].scrollHeight;\n const pageOffsetHeight = $pageContentEl[0].offsetHeight;\n const pageScrollTop = $pageContentEl[0].scrollTop;\n const scrollOnBottom = (pageScrollTop === pageScrollHeight - pageOffsetHeight);\n if (!maxHeight) {\n maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);\n }\n $textareaEl.css('max-height', `${maxHeight}px`);\n $pageContentEl.css('padding-bottom', `${requiredPaddingBottom}px`);\n if (scrollOnBottom) {\n $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);\n }\n $el.trigger('messagebar:resizepage');\n messagebar.emit('local::resizePage messagebarResizePage', messagebar);\n }\n }\n }\n\n checkEmptyState() {\n const messagebar = this;\n const { $el, $textareaEl } = messagebar;\n const value = $textareaEl.val().trim();\n if (value && value.length) {\n $el.addClass('messagebar-with-value');\n } else {\n $el.removeClass('messagebar-with-value');\n }\n }\n\n attachmentsCreate(innerHTML = '') {\n const messagebar = this;\n const $attachmentsEl = $(`<div class=\"messagebar-attachments\">${innerHTML}</div>`);\n $attachmentsEl.insertBefore(messagebar.$textareaEl);\n Utils.extend(messagebar, {\n $attachmentsEl,\n attachmentsEl: $attachmentsEl[0],\n });\n return messagebar;\n }\n\n attachmentsShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-attachments-visible');\n messagebar.attachmentsVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n attachmentsToggle() {\n const messagebar = this;\n if (messagebar.attachmentsVisible) {\n messagebar.attachmentsHide();\n } else {\n messagebar.attachmentsShow();\n }\n return messagebar;\n }\n\n renderAttachment(attachment) {\n const messagebar = this;\n if (messagebar.params.renderAttachment) {\n return messagebar.params.renderAttachment.call(messagebar, attachment);\n }\n return `\n <div class=\"messagebar-attachment\">\n <img src=\"${attachment}\">\n <span class=\"messagebar-attachment-delete\"></span>\n </div>\n `;\n }\n\n renderAttachments() {\n const messagebar = this;\n let html;\n if (messagebar.params.renderAttachments) {\n html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);\n } else {\n html = `${messagebar.attachments.map(attachment => messagebar.renderAttachment(attachment)).join('')}`;\n }\n if (messagebar.$attachmentsEl.length === 0) {\n messagebar.attachmentsCreate(html);\n } else {\n messagebar.$attachmentsEl.html(html);\n }\n }\n\n sheetCreate(innerHTML = '') {\n const messagebar = this;\n const $sheetEl = $(`<div class=\"messagebar-sheet\">${innerHTML}</div>`);\n messagebar.$el.append($sheetEl);\n Utils.extend(messagebar, {\n $sheetEl,\n sheetEl: $sheetEl[0],\n });\n return messagebar;\n }\n\n sheetShow(innerHTML = '') {\n const messagebar = this;\n messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');\n if (messagebar.$sheetEl.length === 0) {\n messagebar.sheetCreate(innerHTML);\n }\n messagebar.$el.addClass('messagebar-sheet-visible');\n messagebar.sheetVisible = true;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetHide() {\n const messagebar = this;\n messagebar.$el.removeClass('messagebar-sheet-visible');\n messagebar.sheetVisible = false;\n if (messagebar.params.resizePage) {\n messagebar.resizePage();\n }\n return messagebar;\n }\n\n sheetToggle() {\n const messagebar = this;\n if (messagebar.sheetVisible) {\n messagebar.sheetHide();\n } else {\n messagebar.sheetShow();\n }\n return messagebar;\n }\n\n init() {\n const messagebar = this;\n messagebar.attachEvents();\n messagebar.checkEmptyState();\n return messagebar;\n }\n\n destroy() {\n const messagebar = this;\n messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);\n messagebar.$el.trigger('messagebar:beforedestroy');\n messagebar.detachEvents();\n if (messagebar.$el[0]) {\n messagebar.$el[0].f7Messagebar = null;\n delete messagebar.$el[0].f7Messagebar;\n }\n Utils.deleteProps(messagebar);\n }\n}\n\nexport default Messagebar;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Messagebar from './messagebar-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'messagebar',\n static: {\n Messagebar,\n },\n create() {\n const app = this;\n app.messagebar = ConstructorMethods({\n defaultSelector: '.messagebar',\n constructor: Messagebar,\n app,\n domProp: 'f7Messagebar',\n addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' '),\n });\n },\n on: {\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.destroy(messagebarEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.messagebar-init').each((index, messagebarEl) => {\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n });\n },\n },\n vnode: {\n 'messagebar-init': {\n insert(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.create(Utils.extend({ el: messagebarEl }, $(messagebarEl).dataset()));\n },\n destroy(vnode) {\n const app = this;\n const messagebarEl = vnode.elm;\n app.messagebar.destroy(messagebarEl);\n },\n },\n },\n};\n","import $ from 'dom7';\n\nexport default $;\n","import Utils from '../../../../utils/utils';\n\nexport default Utils;\n","import Support from '../../../../utils/support';\n\nexport default Support;\n","import Framework7Class from '../../../../utils/class';\n\nexport default Framework7Class;\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import Device from '../../../../utils/device';\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { window } from 'ssr-window';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n + ' / '\n + `<span class=\"${params.totalClass}\"></span>`;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './swiper-src/components/core/core-class';\n\n// Core Modules\nimport Device from './swiper-src/modules/device/device';\nimport Support from './swiper-src/modules/support/support';\nimport Browser from './swiper-src/modules/browser/browser';\nimport Resize from './swiper-src/modules/resize/resize';\nimport Observer from './swiper-src/modules/observer/observer';\n\n// Components\nimport Virtual from './swiper-src/components/virtual/virtual';\nimport Keyboard from './swiper-src/components/keyboard/keyboard';\nimport Mousewheel from './swiper-src/components/mousewheel/mousewheel';\nimport Navigation from './swiper-src/components/navigation/navigation';\nimport Pagination from './swiper-src/components/pagination/pagination';\nimport Scrollbar from './swiper-src/components/scrollbar/scrollbar';\nimport Parallax from './swiper-src/components/parallax/parallax';\nimport Zoom from './swiper-src/components/zoom/zoom';\nimport Lazy from './swiper-src/components/lazy/lazy';\nimport Controller from './swiper-src/components/controller/controller';\nimport A11y from './swiper-src/components/a11y/a11y';\nimport Autoplay from './swiper-src/components/autoplay/autoplay';\nimport EffectFade from './swiper-src/components/effect-fade/effect-fade';\nimport EffectCube from './swiper-src/components/effect-cube/effect-cube';\nimport EffectFlip from './swiper-src/components/effect-flip/effect-flip';\nimport EffectCoverflow from './swiper-src/components/effect-coverflow/effect-coverflow';\nimport Thumbs from './swiper-src/components/thumbs/thumbs';\n\nSwiper.use([\n Device,\n Browser,\n Support,\n Resize,\n Observer,\n Virtual,\n Keyboard,\n Mousewheel,\n Navigation,\n Pagination,\n Scrollbar,\n Parallax,\n Zoom,\n Lazy,\n Controller,\n A11y,\n Autoplay,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs,\n]);\n\nexport default Swiper;\n","import $ from 'dom7';\nimport Swiper from './swiper-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nif (\"es\" !== 'es') {\n if (!window.Swiper) {\n window.Swiper = Swiper;\n }\n}\n\nfunction initSwiper(swiperEl) {\n const app = this;\n const $swiperEl = $(swiperEl);\n if ($swiperEl.length === 0) return;\n if ($swiperEl[0].swiper) return;\n let initialSlide;\n let params = {};\n let isTabs;\n let isRoutableTabs;\n if ($swiperEl.hasClass('tabs-swipeable-wrap')) {\n $swiperEl\n .addClass('swiper-container')\n .children('.tabs')\n .addClass('swiper-wrapper')\n .children('.tab')\n .addClass('swiper-slide');\n initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();\n isTabs = true;\n isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;\n }\n if ($swiperEl.attr('data-swiper')) {\n params = JSON.parse($swiperEl.attr('data-swiper'));\n } else if ($swiperEl[0].f7SwiperParams) {\n params = $swiperEl[0].f7SwiperParams;\n } else {\n params = $swiperEl.dataset();\n Object.keys(params).forEach((key) => {\n const value = params[key];\n if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n // not JSON\n }\n }\n });\n }\n if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {\n params.initialSlide = initialSlide;\n }\n\n const swiper = app.swiper.create($swiperEl[0], params);\n function updateSwiper() {\n swiper.update();\n }\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);\n $swiperEl.parents('.panel').on('panel:open', updateSwiper);\n $swiperEl.parents('.tab').on('tab:show', updateSwiper);\n swiper.on('beforeDestroy', () => {\n $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);\n $swiperEl.parents('.panel').off('panel:open', updateSwiper);\n $swiperEl.parents('.tab').off('tab:show', updateSwiper);\n });\n if (isTabs) {\n swiper.on('slideChange', () => {\n if (isRoutableTabs) {\n let view = app.views.get($swiperEl.parents('.view'));\n if (!view) view = app.views.main;\n const router = view.router;\n const tabRoute = router.findTabRoute(swiper.slides.eq(swiper.activeIndex)[0]);\n if (tabRoute) {\n setTimeout(() => {\n router.navigate(tabRoute.path);\n }, 0);\n }\n } else {\n app.tab.show({\n tabEl: swiper.slides.eq(swiper.activeIndex),\n });\n }\n });\n }\n}\n\nexport default {\n name: 'swiper',\n static: {\n Swiper,\n },\n create() {\n const app = this;\n app.swiper = ConstructorMethods({\n defaultSelector: '.swiper-container',\n constructor: Swiper,\n domProp: 'swiper',\n });\n },\n on: {\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n app.swiper.destroy(swiperEl);\n });\n },\n pageMounted(page) {\n const app = this;\n page.$el.find('.tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n pageReinit(page) {\n const app = this;\n page.$el.find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n initSwiper.call(app, swiperEl);\n });\n },\n tabShow(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n const swiper = app.swiper.get(swiperEl);\n if (swiper && swiper.update) swiper.update();\n });\n },\n tabBeforeRemove(tabEl) {\n const app = this;\n $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each((index, swiperEl) => {\n app.swiper.destroy(swiperEl);\n });\n },\n },\n vnode: {\n 'swiper-init': {\n insert(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n initSwiper.call(app, swiperEl);\n },\n destroy(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n app.swiper.destroy(swiperEl);\n },\n },\n 'tabs-swipeable-wrap': {\n insert(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n initSwiper.call(app, swiperEl);\n },\n destroy(vnode) {\n const app = this;\n const swiperEl = vnode.elm;\n app.swiper.destroy(swiperEl);\n },\n },\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass PhotoBrowser extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const pb = this;\n pb.app = app;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.photoBrowser);\n\n // Extend defaults with modules params\n pb.useModulesParams(defaults);\n\n pb.params = Utils.extend(defaults, params);\n\n Utils.extend(pb, {\n exposed: false,\n opened: false,\n activeIndex: pb.params.swiper.initialSlide,\n url: pb.params.url,\n swipeToClose: {\n allow: true,\n isTouched: false,\n diff: undefined,\n start: undefined,\n current: undefined,\n started: false,\n activeSlide: undefined,\n timeStart: undefined,\n },\n });\n\n // Install Modules\n pb.useModules();\n\n // Init\n pb.init();\n }\n\n get view() {\n const { params, app } = this;\n return params.view || app.views.main;\n }\n\n onSlideChange(swiper) {\n const pb = this;\n pb.activeIndex = swiper.activeIndex;\n\n let current = swiper.activeIndex + 1;\n let total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;\n if (swiper.params.loop) {\n total -= 2;\n current -= swiper.loopedSlides;\n if (current < 1) current = total + current;\n if (current > total) current -= total;\n }\n\n const $activeSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find(`.swiper-slide[data-swiper-slide-index=\"${swiper.activeIndex}\"]`)\n : swiper.slides.eq(swiper.activeIndex);\n const $previousSlideEl = pb.params.virtualSlides\n ? swiper.$wrapperEl.find(`.swiper-slide[data-swiper-slide-index=\"${swiper.previousIndex}\"]`)\n : swiper.slides.eq(swiper.previousIndex);\n\n let $currentEl = pb.$el.find('.photo-browser-current');\n let $totalEl = pb.$el.find('.photo-browser-total');\n let navbarEl;\n if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {\n navbarEl = pb.app.navbar.getElByPage(pb.$el);\n if (navbarEl) {\n $currentEl = $(navbarEl).find('.photo-browser-current');\n $totalEl = $(navbarEl).find('.photo-browser-total');\n }\n }\n if ($currentEl.length && $totalEl.length) {\n $currentEl.text(current);\n $totalEl.text(total);\n if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];\n if (navbarEl) {\n pb.app.navbar.size(navbarEl);\n }\n }\n\n // Update captions\n if (pb.captions.length > 0) {\n const captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;\n pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');\n pb.$captionsContainerEl.find(`[data-caption-index=\"${captionIndex}\"]`).addClass('photo-browser-caption-active');\n }\n\n // Stop Video\n const previousSlideVideo = $previousSlideEl.find('video');\n if (previousSlideVideo.length > 0) {\n if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();\n }\n }\n\n onTouchStart() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n if (!swipeToClose.allow) return;\n swipeToClose.isTouched = true;\n }\n\n onTouchMove(e) {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n\n if (!swipeToClose.isTouched) return;\n if (!swipeToClose.started) {\n swipeToClose.started = true;\n swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (pb.params.virtualSlides) {\n swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');\n } else {\n swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);\n }\n swipeToClose.timeStart = Utils.now();\n }\n e.preventDefault();\n swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n swipeToClose.diff = swipeToClose.start - swipeToClose.current;\n pb.$el.transition(0).transform(`translate3d(0,${-swipeToClose.diff}px,0)`);\n }\n\n onTouchEnd() {\n const pb = this;\n const swipeToClose = pb.swipeToClose;\n swipeToClose.isTouched = false;\n if (!swipeToClose.started) {\n swipeToClose.started = false;\n return;\n }\n swipeToClose.started = false;\n swipeToClose.allow = false;\n const diff = Math.abs(swipeToClose.diff);\n const timeDiff = (new Date()).getTime() - swipeToClose.timeStart;\n if ((timeDiff < 300 && diff > 20) || (timeDiff >= 300 && diff > 100)) {\n Utils.nextTick(() => {\n if (pb.$el) {\n if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');\n else pb.$el.addClass('swipe-close-to-top');\n }\n pb.emit('local::swipeToClose', pb);\n pb.$el.transform('').transition('');\n pb.close();\n swipeToClose.allow = true;\n });\n return;\n }\n if (diff !== 0) {\n pb.$el.addClass('photo-browser-transitioning').transitionEnd(() => {\n swipeToClose.allow = true;\n pb.$el.removeClass('photo-browser-transitioning');\n });\n } else {\n swipeToClose.allow = true;\n }\n Utils.nextTick(() => {\n pb.$el.transform('').transition('');\n });\n }\n\n // Render Functions\n renderNavbar() {\n const pb = this;\n if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);\n\n let iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';\n\n const pageBackLinkText = (pb.app.theme === 'ios' || pb.app.theme === 'aurora') && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';\n\n const renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;\n\n const isPopup = pb.params.type !== 'page';\n const navbarHtml = `\n <div class=\"navbar navbar-photo-browser ${pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : ''}\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner navbar-inner-centered-title sliding\">\n ${!isPopup ? `\n <div class=\"left\">\n <a class=\"link ${!pageBackLinkText ? 'icon-only' : ''} back\">\n <i class=\"icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}\"></i>\n ${pageBackLinkText ? `<span>${pageBackLinkText}</span>` : ''}\n </a>\n </div>\n ` : ''}\n ${renderNavbarCount ? `\n <div class=\"title\">\n <span class=\"photo-browser-current\"></span>\n <span class=\"photo-browser-of\">${pb.params.navbarOfText}</span>\n <span class=\"photo-browser-total\"></span>\n </div>\n ` : ''}\n ${isPopup ? `\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".photo-browser-popup\">\n <span>${pb.params.popupCloseLinkText}</span>\n </a>\n </div>\n ` : ''}\n </div>\n </div>\n `.trim();\n return navbarHtml;\n }\n\n renderToolbar() {\n const pb = this;\n if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);\n\n let iconsColor = pb.params.iconsColor;\n if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';\n\n const toolbarHtml = `\n <div class=\"toolbar toolbar-bottom tabbar\">\n <div class=\"toolbar-inner\">\n <a class=\"link photo-browser-prev\">\n <i class=\"icon icon-back ${iconsColor ? `color-${iconsColor}` : ''}\"></i>\n </a>\n <a class=\"link photo-browser-next\">\n <i class=\"icon icon-forward ${iconsColor ? `color-${iconsColor}` : ''}\"></i>\n </a>\n </div>\n </div>\n `.trim();\n return toolbarHtml;\n }\n\n renderCaption(caption, index) {\n const pb = this;\n if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);\n const captionHtml = `\n <div class=\"photo-browser-caption\" data-caption-index=\"${index}\">\n ${caption}\n </div>\n `.trim();\n return captionHtml;\n }\n\n renderObject(photo, index) {\n const pb = this;\n if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);\n const objHtml = `\n <div class=\"photo-browser-slide photo-browser-object-slide swiper-slide\" data-swiper-slide-index=\"${index}\">${photo.html ? photo.html : photo}</div>\n `;\n return objHtml;\n }\n\n renderLazyPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);\n const photoHtml = `\n <div class=\"photo-browser-slide photo-browser-slide-lazy swiper-slide\" data-swiper-slide-index=\"${index}\">\n <div class=\"swiper-lazy-preloader\"></div>\n <span class=\"swiper-zoom-container\">\n <img data-src=\"${photo.url ? photo.url : photo}\" class=\"swiper-lazy\">\n </span>\n </div>\n `.trim();\n return photoHtml;\n }\n\n renderPhoto(photo, index) {\n const pb = this;\n if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);\n const photoHtml = `\n <div class=\"photo-browser-slide swiper-slide\" data-swiper-slide-index=\"${index}\">\n <span class=\"swiper-zoom-container\">\n <img src=\"${photo.url ? photo.url : photo}\">\n </span>\n </div>\n `.trim();\n return photoHtml;\n }\n\n render() {\n const pb = this;\n if (pb.params.render) return pb.params.render.call(pb, pb.params);\n const html = `\n <div class=\"photo-browser photo-browser-${pb.params.theme}\">\n <div class=\"view\">\n <div class=\"page photo-browser-page photo-browser-page-${pb.params.theme} no-toolbar ${!pb.params.navbar ? 'no-navbar' : ''}\" data-name=\"photo-browser-page\">\n ${pb.params.navbar ? pb.renderNavbar() : ''}\n ${pb.params.toolbar ? pb.renderToolbar() : ''}\n <div class=\"photo-browser-captions photo-browser-captions-${pb.params.captionsTheme || pb.params.theme}\">\n ${pb.params.photos.map((photo, index) => {\n if (photo.caption) return pb.renderCaption(photo.caption, index);\n return '';\n }).join(' ')}\n </div>\n <div class=\"photo-browser-swiper-container swiper-container\">\n <div class=\"photo-browser-swiper-wrapper swiper-wrapper\">\n ${pb.params.virtualSlides ? '' : pb.params.photos.map((photo, index) => {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n }).join(' ')}\n </div>\n </div>\n </div>\n </div>\n </div>\n `.trim();\n return html;\n }\n\n renderStandalone() {\n const pb = this;\n if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);\n const standaloneHtml = `<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">${pb.render()}</div>`;\n return standaloneHtml;\n }\n\n renderPage() {\n const pb = this;\n if (pb.params.renderPage) return pb.params.renderPage.call(pb);\n const pageHtml = pb.render();\n\n return pageHtml;\n }\n\n renderPopup() {\n const pb = this;\n if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);\n const popupHtml = `<div class=\"popup photo-browser-popup\">${pb.render()}</div>`;\n\n return popupHtml;\n }\n\n // Callbacks\n onOpen(type, el) {\n const pb = this;\n const app = pb.app;\n const $el = $(el);\n\n $el[0].f7PhotoBrowser = pb;\n\n pb.$el = $el;\n pb.el = $el[0];\n pb.openedIn = type;\n pb.opened = true;\n\n pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');\n pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');\n pb.slides = pb.$el.find('.photo-browser-slide');\n pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');\n pb.captions = pb.$el.find('.photo-browser-caption');\n\n // Init Swiper\n let clickTimeout;\n\n const swiperParams = Utils.extend({}, pb.params.swiper, {\n initialSlide: pb.activeIndex,\n on: {\n click(e) {\n clearTimeout(clickTimeout);\n\n if (pb.params.exposition) {\n clickTimeout = setTimeout(() => {\n pb.expositionToggle();\n }, 350);\n }\n pb.emit('local::tap', e);\n pb.emit('local::click', e);\n },\n doubleClick(e) {\n clearTimeout(clickTimeout);\n pb.emit('local::doubleTap', e);\n pb.emit('local::doubleClick', e);\n },\n slideChange(...args) {\n const swiper = this;\n pb.onSlideChange(swiper);\n pb.emit('local::slideChange', ...args);\n },\n transitionStart(...args) {\n pb.emit('local::transitionStart', ...args);\n },\n transitionEnd(...args) {\n pb.emit('local::transitionEnd', ...args);\n },\n slideChangeTransitionStart(...args) {\n const swiper = this;\n pb.onSlideChange(swiper);\n pb.emit('local::slideChangeTransitionStart', ...args);\n },\n slideChangeTransitionEnd(...args) {\n pb.emit('local::slideChangeTransitionEnd', ...args);\n },\n lazyImageLoad(...args) {\n pb.emit('local::lazyImageLoad', ...args);\n },\n lazyImageReady(...args) {\n const slideEl = args[0];\n $(slideEl).removeClass('photo-browser-slide-lazy');\n pb.emit('local::lazyImageReady', ...args);\n },\n },\n });\n if (pb.params.swipeToClose && pb.params.type !== 'page') {\n Utils.extend(swiperParams.on, {\n touchStart(e) {\n pb.onTouchStart(e);\n pb.emit('local::touchStart', e);\n },\n touchMoveOpposite(e) {\n pb.onTouchMove(e);\n pb.emit('local::touchMoveOpposite', e);\n },\n touchEnd(e) {\n pb.onTouchEnd(e);\n pb.emit('local::touchEnd', e);\n },\n });\n }\n if (pb.params.virtualSlides) {\n Utils.extend(swiperParams, {\n virtual: {\n slides: pb.params.photos,\n renderSlide(photo, index) {\n if (photo.html || ((typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0)) {\n return pb.renderObject(photo, index);\n }\n if (pb.params.swiper.lazy === true || (pb.params.swiper.lazy && pb.params.swiper.lazy.enabled)) {\n return pb.renderLazyPhoto(photo, index);\n }\n return pb.renderPhoto(photo, index);\n },\n },\n });\n }\n\n pb.swiper = app.swiper.create(pb.$swiperContainerEl, swiperParams);\n\n if (pb.activeIndex === 0) {\n pb.onSlideChange(pb.swiper);\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:open');\n }\n pb.emit('local::open photoBrowserOpen', pb);\n }\n\n onOpened() {\n const pb = this;\n if (pb.$el && pb.params.type === 'standalone') {\n pb.$el.css('animation', 'none');\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:opened');\n }\n pb.emit('local::opened photoBrowserOpened', pb);\n }\n\n onClose() {\n const pb = this;\n if (pb.destroyed) return;\n\n // Destroy Swiper\n if (pb.swiper && pb.swiper.destroy) {\n pb.swiper.destroy(true, false);\n pb.swiper = null;\n delete pb.swiper;\n }\n if (pb.$el) {\n pb.$el.trigger('photobrowser:close');\n }\n pb.emit('local::close photoBrowserClose', pb);\n }\n\n onClosed() {\n const pb = this;\n if (pb.destroyed) return;\n pb.opened = false;\n pb.$el = null;\n pb.el = null;\n delete pb.$el;\n delete pb.el;\n if (pb.$el) {\n pb.$el.trigger('photobrowser:closed');\n }\n pb.emit('local::closed photoBrowserClosed', pb);\n }\n\n // Open\n openPage() {\n const pb = this;\n if (pb.opened) return pb;\n\n const pageHtml = pb.renderPage();\n\n pb.view.router.navigate({\n url: pb.url,\n route: {\n content: pageHtml,\n path: pb.url,\n on: {\n pageBeforeIn(e, page) {\n pb.view.$el.addClass(`with-photo-browser-page with-photo-browser-page-${pb.params.theme}`);\n pb.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n pb.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n pb.view.$el.removeClass(`with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-${pb.params.theme}`);\n pb.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n pb.onClosed('page', page.el);\n },\n },\n },\n });\n return pb;\n }\n\n openStandalone() {\n const pb = this;\n if (pb.opened) return pb;\n\n const standaloneHtml = pb.renderStandalone();\n\n const popupParams = {\n backdrop: false,\n content: standaloneHtml,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n openPopup() {\n const pb = this;\n if (pb.opened) return pb;\n\n const popupHtml = pb.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n push: pb.params.popupPush,\n on: {\n popupOpen(popup) {\n pb.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n pb.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n pb.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n pb.onClosed('popup', popup.el);\n },\n },\n };\n\n if (pb.params.routableModals && pb.view) {\n pb.view.router.navigate({\n url: pb.url,\n route: {\n path: pb.url,\n popup: popupParams,\n },\n });\n } else {\n pb.modal = pb.app.popup.create(popupParams).open();\n }\n return pb;\n }\n\n // Exposition\n expositionEnable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.addClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.addClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');\n pb.exposed = true;\n return pb;\n }\n\n expositionDisable() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.removeClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.removeClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');\n pb.exposed = false;\n return pb;\n }\n\n expositionToggle() {\n const pb = this;\n if (pb.params.type === 'page') {\n pb.view.$el.toggleClass('with-photo-browser-page-exposed');\n }\n if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');\n if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');\n pb.exposed = !pb.exposed;\n return pb;\n }\n\n open(index) {\n const pb = this;\n const type = pb.params.type;\n if (pb.opened) {\n if (pb.swiper && typeof index !== 'undefined') {\n pb.swiper.slideTo(parseInt(index, 10));\n }\n return pb;\n }\n if (typeof index !== 'undefined') {\n pb.activeIndex = index;\n }\n if (type === 'standalone') {\n pb.openStandalone();\n }\n if (type === 'page') {\n pb.openPage();\n }\n if (type === 'popup') {\n pb.openPopup();\n }\n return pb;\n }\n\n close() {\n const pb = this;\n if (!pb.opened) return pb;\n if ((pb.params.routableModals && pb.view) || pb.openedIn === 'page') {\n pb.view.router.back();\n } else {\n pb.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (pb.destroyed) return;\n pb.modal.destroy();\n delete pb.modal;\n });\n });\n pb.modal.close();\n }\n return pb;\n }\n // eslint-disable-next-line\n init() {}\n\n destroy() {\n let pb = this;\n pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);\n if (pb.$el) {\n pb.$el.trigger('photobrowser:beforedestroy');\n pb.$el[0].f7PhotoBrowser = null;\n delete pb.$el[0].f7PhotoBrowser;\n }\n Utils.deleteProps(pb);\n pb.destroyed = true;\n pb = null;\n }\n}\n\nexport default PhotoBrowser;\n","import PhotoBrowser from './photo-browser-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'photoBrowser',\n params: {\n photoBrowser: {\n photos: [],\n exposition: true,\n expositionHideCaptions: false,\n type: 'standalone',\n navbar: true,\n toolbar: true,\n theme: 'light',\n captionsTheme: undefined,\n iconsColor: undefined,\n popupPush: false,\n swipeToClose: true,\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n navbarOfText: 'of',\n navbarShowCount: undefined,\n view: undefined,\n url: 'photos/',\n routableModals: true,\n virtualSlides: true,\n\n renderNavbar: undefined,\n renderToolbar: undefined,\n renderCaption: undefined,\n renderObject: undefined,\n renderLazyPhoto: undefined,\n renderPhoto: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderStandalone: undefined,\n\n swiper: {\n initialSlide: 0,\n spaceBetween: 20,\n speed: 300,\n loop: false,\n preloadImages: true,\n navigation: {\n nextEl: '.photo-browser-next',\n prevEl: '.photo-browser-prev',\n },\n zoom: {\n enabled: true,\n maxRatio: 3,\n minRatio: 1,\n },\n lazy: {\n enabled: true,\n },\n },\n },\n },\n create() {\n const app = this;\n app.photoBrowser = ConstructorMethods({\n defaultSelector: '.photo-browser-popup, .photo-browser-page',\n constructor: PhotoBrowser,\n app,\n domProp: 'f7PhotoBrowser',\n });\n },\n static: {\n PhotoBrowser,\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Modal from '../modal/modal-class';\n\nclass Notification extends Modal {\n constructor(app, params) {\n const extendedParams = Utils.extend({\n on: {},\n }, app.params.notification, params);\n\n // Extends with open/close Modal methods;\n super(app, extendedParams);\n\n const notification = this;\n\n notification.app = app;\n\n notification.params = extendedParams;\n\n const {\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n closeTimeout,\n cssClass,\n closeOnClick,\n } = notification.params;\n\n let $el;\n if (!notification.params.el) {\n // Find Element\n const notificationHtml = notification.render({\n icon,\n title,\n titleRightText,\n subtitle,\n text,\n closeButton,\n cssClass,\n });\n\n $el = $(notificationHtml);\n } else {\n $el = $(notification.params.el);\n }\n\n if ($el && $el.length > 0 && $el[0].f7Modal) {\n return $el[0].f7Modal;\n }\n\n if ($el.length === 0) {\n return notification.destroy();\n }\n\n Utils.extend(notification, {\n $el,\n el: $el[0],\n type: 'notification',\n });\n\n $el[0].f7Modal = notification;\n\n if (closeButton) {\n $el.find('.notification-close-button').on('click', () => {\n notification.close();\n });\n }\n $el.on('click', (e) => {\n if (closeButton && $(e.target).closest('.notification-close-button').length) {\n return;\n }\n notification.emit('local::click notificationClick', notification);\n if (closeOnClick) notification.close();\n });\n\n notification.on('beforeDestroy', () => {\n $el.off('click');\n });\n\n /* Touch Events */\n let isTouched;\n let isMoved;\n let isScrolling;\n let touchesDiff;\n let touchStartTime;\n let notificationHeight;\n const touchesStart = {};\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n isMoved = false;\n isScrolling = undefined;\n touchStartTime = Utils.now();\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n if (typeof isScrolling === 'undefined') {\n isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));\n }\n if (isScrolling) {\n isTouched = false;\n return;\n }\n e.preventDefault();\n if (!isMoved) {\n notification.$el.removeClass('notification-transitioning');\n notification.$el.transition(0);\n notificationHeight = notification.$el[0].offsetHeight / 2;\n }\n isMoved = true;\n touchesDiff = (pageY - touchesStart.y);\n let newTranslate = touchesDiff;\n if (touchesDiff > 0) {\n newTranslate = touchesDiff ** 0.8;\n }\n notification.$el.transform(`translate3d(0, ${newTranslate}px, 0)`);\n }\n function handleTouchEnd() {\n if (!isTouched || !isMoved) {\n isTouched = false;\n isMoved = false;\n return;\n }\n isTouched = false;\n isMoved = false;\n if (touchesDiff === 0) {\n return;\n }\n\n const timeDiff = Utils.now() - touchStartTime;\n notification.$el.transition('');\n notification.$el.addClass('notification-transitioning');\n notification.$el.transform('');\n\n if (\n (touchesDiff < -10 && timeDiff < 300)\n || (-touchesDiff >= notificationHeight / 1)\n ) {\n notification.close();\n }\n }\n\n function attachTouchEvents() {\n notification.$el.on(app.touchEvents.start, handleTouchStart, { passive: true });\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n }\n function detachTouchEvents() {\n notification.$el.off(app.touchEvents.start, handleTouchStart, { passive: true });\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n }\n\n let timeoutId;\n function closeOnTimeout() {\n timeoutId = Utils.nextTick(() => {\n if (isTouched && isMoved) {\n closeOnTimeout();\n return;\n }\n notification.close();\n }, closeTimeout);\n }\n notification.on('open', () => {\n if (notification.params.swipeToClose) {\n attachTouchEvents();\n }\n $('.notification.modal-in').each((index, openedEl) => {\n const notificationInstance = app.notification.get(openedEl);\n if (openedEl !== notification.el && notificationInstance) {\n notificationInstance.close();\n }\n });\n if (closeTimeout) {\n closeOnTimeout();\n }\n });\n notification.on('close beforeDestroy', () => {\n if (notification.params.swipeToClose) {\n detachTouchEvents();\n }\n window.clearTimeout(timeoutId);\n });\n\n return notification;\n }\n\n render() {\n const notification = this;\n if (notification.params.render) return notification.params.render.call(notification, notification);\n const { icon, title, titleRightText, subtitle, text, closeButton, cssClass } = notification.params;\n return `\n <div class=\"notification ${cssClass || ''}\">\n <div class=\"notification-header\">\n ${icon ? `<div class=\"notification-icon\">${icon}</div>` : ''}\n ${title ? `<div class=\"notification-title\">${title}</div>` : ''}\n ${titleRightText ? `<div class=\"notification-title-right-text\">${titleRightText}</div>` : ''}\n ${closeButton ? '<span class=\"notification-close-button\"></span>' : ''}\n </div>\n <div class=\"notification-content\">\n ${subtitle ? `<div class=\"notification-subtitle\">${subtitle}</div>` : ''}\n ${text ? `<div class=\"notification-text\">${text}</div>` : ''}\n </div>\n </div>\n `.trim();\n }\n}\nexport default Notification;\n","import Utils from '../../utils/utils';\nimport Notification from './notification-class';\nimport ModalMethods from '../../utils/modal-methods';\n\nexport default {\n name: 'notification',\n static: {\n Notification,\n },\n create() {\n const app = this;\n app.notification = Utils.extend(\n {},\n ModalMethods({\n app,\n constructor: Notification,\n defaultSelector: '.notification.modal-in',\n })\n );\n },\n params: {\n notification: {\n icon: null,\n title: null,\n titleRightText: null,\n subtitle: null,\n text: null,\n closeButton: false,\n closeTimeout: null,\n closeOnClick: false,\n swipeToClose: true,\n cssClass: null,\n render: null,\n },\n },\n};\n","/* eslint \"no-useless-escape\": \"off\" */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Autocomplete extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const ac = this;\n ac.app = app;\n\n const defaults = Utils.extend({\n on: {},\n }, app.params.autocomplete);\n\n if (typeof defaults.searchbarDisableButton === 'undefined') {\n defaults.searchbarDisableButton = app.theme !== 'aurora';\n }\n\n // Extend defaults with modules params\n ac.useModulesParams(defaults);\n\n ac.params = Utils.extend(defaults, params);\n\n let $openerEl;\n if (ac.params.openerEl) {\n $openerEl = $(ac.params.openerEl);\n if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;\n }\n\n let $inputEl;\n if (ac.params.inputEl) {\n $inputEl = $(ac.params.inputEl);\n if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;\n }\n\n const id = Utils.id();\n\n let url = params.url;\n if (!url && $openerEl && $openerEl.length) {\n if ($openerEl.attr('href')) url = $openerEl.attr('href');\n else if ($openerEl.find('a').length > 0) {\n url = $openerEl.find('a').attr('href');\n }\n }\n if (!url || url === '#' || url === '') url = ac.params.url;\n\n const inputType = ac.params.multiple ? 'checkbox' : 'radio';\n\n Utils.extend(ac, {\n $openerEl,\n openerEl: $openerEl && $openerEl[0],\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n id,\n url,\n value: ac.params.value || [],\n inputType,\n inputName: `${inputType}-${id}`,\n $modalEl: undefined,\n $dropdownEl: undefined,\n });\n\n let previousQuery = '';\n function onInputChange() {\n let query = ac.$inputEl.val().trim();\n\n if (!ac.params.source) return;\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n let regExp;\n if (ac.params.highlightMatches) {\n query = query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n regExp = new RegExp(`(${query})`, 'i');\n }\n\n let firstValue;\n let firstItem;\n for (let i = 0; i < limit; i += 1) {\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n const itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];\n if (i === 0) {\n firstValue = itemValue;\n firstItem = ac.items[i];\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText,\n }, i);\n }\n if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {\n itemsHTML += ac.renderItem({\n placeholder: true,\n text: ac.params.dropdownPlaceholderText,\n });\n }\n ac.$dropdownEl.find('ul').html(itemsHTML);\n if (ac.params.typeahead) {\n if (!firstValue || !firstItem) {\n return;\n }\n if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {\n return;\n }\n if (previousQuery.toLowerCase() === query.toLowerCase()) {\n ac.value = [];\n return;\n }\n\n if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {\n previousQuery = query;\n ac.value = [];\n return;\n }\n $inputEl.val(firstValue);\n $inputEl[0].setSelectionRange(query.length, firstValue.length);\n\n const previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];\n if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {\n ac.value = [firstItem];\n ac.emit('local::change autocompleteChange', [firstItem]);\n }\n }\n\n previousQuery = query;\n });\n }\n function onPageInputChange() {\n const input = this;\n const value = input.value;\n const isValues = $(input).parents('.autocomplete-values').length > 0;\n let item;\n let itemValue;\n let aValue;\n if (isValues) {\n if (ac.inputType === 'checkbox' && !input.checked) {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n ac.updateValues();\n ac.emit('local::change autocompleteChange', ac.value);\n }\n return;\n }\n\n // Find Related Item\n for (let i = 0; i < ac.items.length; i += 1) {\n itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[i];\n }\n if (ac.inputType === 'radio') {\n ac.value = [item];\n } else if (input.checked) {\n ac.value.push(item);\n } else {\n for (let i = 0; i < ac.value.length; i += 1) {\n aValue = typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i];\n if (aValue === value || aValue * 1 === value * 1) {\n ac.value.splice(i, 1);\n }\n }\n }\n\n // Update Values Block\n ac.updateValues();\n\n // On Select Callback\n if (((ac.inputType === 'radio' && input.checked) || ac.inputType === 'checkbox')) {\n ac.emit('local::change autocompleteChange', ac.value);\n }\n }\n function onHtmlClick(e) {\n const $targetEl = $(e.target);\n if ($targetEl.is(ac.$inputEl[0]) || (ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length)) return;\n ac.close();\n }\n function onOpenerClick() {\n ac.open();\n }\n function onInputFocus() {\n ac.open();\n }\n function onInputBlur() {\n if (ac.$dropdownEl.find('label.active-state').length > 0) return;\n setTimeout(() => {\n ac.close();\n }, 0);\n }\n function onResize() {\n ac.positionDropdown();\n }\n\n function onKeyDown(e) {\n if (!ac.opened) return;\n if (e.keyCode === 27) {\n // ESC\n e.preventDefault();\n ac.$inputEl.blur();\n return;\n }\n if (e.keyCode === 13) {\n // Enter\n const $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');\n if ($selectedItemLabel.length) {\n e.preventDefault();\n $selectedItemLabel.trigger('click');\n ac.$inputEl.blur();\n return;\n }\n if (ac.params.typeahead) {\n e.preventDefault();\n ac.$inputEl.blur();\n }\n return;\n }\n if (e.keyCode !== 40 && e.keyCode !== 38) return;\n e.preventDefault();\n const $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');\n let $newItem;\n if ($selectedItem.length) {\n $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');\n if (!$newItem.length) {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n } else {\n $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);\n }\n if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;\n $selectedItem.removeClass('autocomplete-dropdown-selected');\n $newItem.addClass('autocomplete-dropdown-selected');\n }\n function onDropdownClick() {\n const $clickedEl = $(this);\n let clickedItem;\n for (let i = 0; i < ac.items.length; i += 1) {\n const itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];\n const value = $clickedEl.attr('data-value');\n if (itemValue === value || itemValue * 1 === value * 1) {\n clickedItem = ac.items[i];\n }\n }\n if (ac.params.updateInputValueOnSelect) {\n ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);\n ac.$inputEl.trigger('input change');\n }\n ac.value = [clickedItem];\n ac.emit('local::change autocompleteChange', [clickedItem]);\n ac.close();\n }\n\n ac.attachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.on('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.on('focus', onInputFocus);\n ac.$inputEl.on(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $('html').on('click', onHtmlClick);\n } else {\n ac.$inputEl.on('blur', onInputBlur);\n }\n ac.$inputEl.on('keydown', onKeyDown);\n }\n };\n ac.detachEvents = function attachEvents() {\n if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {\n ac.$openerEl.off('click', onOpenerClick);\n }\n if (ac.params.openIn === 'dropdown' && ac.$inputEl) {\n ac.$inputEl.off('focus', onInputFocus);\n ac.$inputEl.off(ac.params.inputEvents, onInputChange);\n if (app.device.android) {\n $('html').off('click', onHtmlClick);\n } else {\n ac.$inputEl.off('blur', onInputBlur);\n }\n ac.$inputEl.off('keydown', onKeyDown);\n }\n };\n ac.attachDropdownEvents = function attachDropdownEvents() {\n ac.$dropdownEl.on('click', 'label', onDropdownClick);\n app.on('resize', onResize);\n };\n ac.detachDropdownEvents = function detachDropdownEvents() {\n ac.$dropdownEl.off('click', 'label', onDropdownClick);\n app.off('resize', onResize);\n };\n\n ac.attachPageEvents = function attachPageEvents() {\n ac.$el.on('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n if (ac.params.closeOnSelect && !ac.params.multiple) {\n ac.$el.once('click', '.list label', () => {\n Utils.nextTick(() => {\n ac.close();\n });\n });\n }\n };\n ac.detachPageEvents = function detachPageEvents() {\n ac.$el.off('change', 'input[type=\"radio\"], input[type=\"checkbox\"]', onPageInputChange);\n };\n\n // Install Modules\n ac.useModules();\n\n // Init\n ac.init();\n\n return ac;\n }\n\n get view() {\n const ac = this;\n const { $openerEl, $inputEl, app } = ac;\n let view;\n if (ac.params.view) {\n view = ac.params.view;\n } else if ($openerEl || $inputEl) {\n const $el = $openerEl || $inputEl;\n view = $el.closest('.view').length && $el.closest('.view')[0].f7View;\n }\n if (!view) view = app.views.main;\n return view;\n }\n\n positionDropdown() {\n const ac = this;\n const { $inputEl, app, $dropdownEl } = ac;\n\n const $pageContentEl = $inputEl.parents('.page-content');\n if ($pageContentEl.length === 0) return;\n const inputOffset = $inputEl.offset();\n const inputOffsetWidth = $inputEl[0].offsetWidth;\n const inputOffsetHeight = $inputEl[0].offsetHeight;\n const $listEl = $inputEl.parents('.list');\n\n let $listParent;\n $listEl.parents().each((index, parentEl) => {\n if ($listParent) return;\n const $parentEl = $(parentEl);\n if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;\n });\n\n const listOffset = $listEl.offset();\n const paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);\n const listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;\n const inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);\n const inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);\n\n const maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;\n\n const paddingProp = app.rtl ? 'padding-right' : 'padding-left';\n let paddingValue;\n if ($listEl.length && !ac.params.expandInput) {\n paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);\n }\n\n $dropdownEl.css({\n left: `${$listEl.length > 0 ? listOffsetLeft : inputOffsetLeft}px`,\n top: `${inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight}px`,\n width: `${$listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth}px`,\n });\n $dropdownEl.children('.autocomplete-dropdown-inner').css({\n maxHeight: `${maxHeight}px`,\n [paddingProp]: $listEl.length > 0 && !ac.params.expandInput ? `${paddingValue}px` : '',\n });\n }\n\n focus() {\n const ac = this;\n ac.$el.find('input[type=search]').focus();\n }\n\n source(query) {\n const ac = this;\n if (!ac.params.source) return;\n\n const { $el } = ac;\n\n ac.params.source.call(ac, query, (items) => {\n let itemsHTML = '';\n const limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;\n ac.items = items;\n for (let i = 0; i < limit; i += 1) {\n let selected = false;\n const itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];\n for (let j = 0; j < ac.value.length; j += 1) {\n const aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];\n if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;\n }\n itemsHTML += ac.renderItem({\n value: itemValue,\n text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: ac.inputName,\n selected,\n }, i);\n }\n $el.find('.autocomplete-found ul').html(itemsHTML);\n if (items.length === 0) {\n if (query.length !== 0) {\n $el.find('.autocomplete-not-found').show();\n $el.find('.autocomplete-found, .autocomplete-values').hide();\n } else {\n $el.find('.autocomplete-values').show();\n $el.find('.autocomplete-found, .autocomplete-not-found').hide();\n }\n } else {\n $el.find('.autocomplete-found').show();\n $el.find('.autocomplete-not-found, .autocomplete-values').hide();\n }\n });\n }\n\n updateValues() {\n const ac = this;\n let valuesHTML = '';\n for (let i = 0; i < ac.value.length; i += 1) {\n valuesHTML += ac.renderItem({\n value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],\n text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],\n inputType: ac.inputType,\n id: ac.id,\n inputName: `${ac.inputName}-checked}`,\n selected: true,\n }, i);\n }\n ac.$el.find('.autocomplete-values ul').html(valuesHTML);\n }\n\n preloaderHide() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');\n }\n }\n\n preloaderShow() {\n const ac = this;\n if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {\n ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n } else {\n $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');\n }\n }\n\n renderPreloader() {\n const ac = this;\n return `\n <div class=\"autocomplete-preloader preloader ${ac.params.preloaderColor ? `color-${ac.params.preloaderColor}` : ''}\">${Utils[`${ac.app.theme}PreloaderContent`] || ''}</div>\n `.trim();\n }\n\n renderSearchbar() {\n const ac = this;\n if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);\n const searchbarHTML = `\n <form class=\"searchbar\">\n <div class=\"searchbar-inner\">\n <div class=\"searchbar-input-wrap\">\n <input type=\"search\" placeholder=\"${ac.params.searchbarPlaceholder}\"/>\n <i class=\"searchbar-icon\"></i>\n <span class=\"input-clear-button\"></span>\n </div>\n ${ac.params.searchbarDisableButton ? `\n <span class=\"searchbar-disable-button\">${ac.params.searchbarDisableText}</span>\n ` : ''}\n </div>\n </form>\n `.trim();\n return searchbarHTML;\n }\n\n renderItem(item, index) {\n const ac = this;\n if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);\n let itemHtml;\n const itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/\"/g, '"') : item.value;\n if (ac.params.openIn !== 'dropdown') {\n itemHtml = `\n <li>\n <label class=\"item-${item.inputType} item-content\">\n <input type=\"${item.inputType}\" name=\"${item.inputName}\" value=\"${itemValue}\" ${item.selected ? 'checked' : ''}>\n <i class=\"icon icon-${item.inputType}\"></i>\n <div class=\"item-inner\">\n <div class=\"item-title\">${item.text}</div>\n </div>\n </label>\n </li>\n `;\n } else if (!item.placeholder) {\n // Dropdown\n itemHtml = `\n <li>\n <label class=\"item-radio item-content\" data-value=\"${itemValue}\">\n <div class=\"item-inner\">\n <div class=\"item-title\">${item.text}</div>\n </div>\n </label>\n </li>\n `;\n } else {\n // Dropwdown placeholder\n itemHtml = `\n <li class=\"autocomplete-dropdown-placeholder\">\n <label class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">${item.text}</div>\n </div>\n </label>\n </li>\n `;\n }\n return itemHtml.trim();\n }\n\n renderNavbar() {\n const ac = this;\n if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);\n let pageTitle = ac.params.pageTitle;\n if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {\n pageTitle = ac.$openerEl.find('.item-title').text().trim();\n }\n const inPopup = ac.params.openIn === 'popup';\n const navbarLeft = inPopup\n ? `\n ${ac.params.preloader ? `\n <div class=\"left\">\n ${ac.renderPreloader()}\n </div>\n ` : ''}\n `\n : `\n <div class=\"left sliding\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">${ac.params.pageBackLinkText}</span>\n </a>\n </div>\n `;\n const navbarRight = inPopup\n ? `\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".autocomplete-popup\">\n ${ac.params.popupCloseLinkText}\n </a>\n </div>\n `\n : `\n ${ac.params.preloader ? `\n <div class=\"right\">\n ${ac.renderPreloader()}\n </div>\n ` : ''}\n `;\n const navbarHtml = `\n <div class=\"navbar ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner ${ac.params.navbarColorTheme ? `color-${ac.params.navbarColorTheme}` : ''}\">\n ${navbarLeft}\n ${pageTitle ? `<div class=\"title sliding\">${pageTitle}</div>` : ''}\n ${navbarRight}\n <div class=\"subnavbar sliding\">${ac.renderSearchbar()}</div>\n </div>\n </div>\n `.trim();\n return navbarHtml;\n }\n\n renderDropdown() {\n const ac = this;\n if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);\n const dropdownHtml = `\n <div class=\"autocomplete-dropdown\">\n <div class=\"autocomplete-dropdown-inner\">\n <div class=\"list ${!ac.params.expandInput ? 'no-safe-areas' : ''}\">\n <ul></ul>\n </div>\n </div>\n ${ac.params.preloader ? ac.renderPreloader() : ''}\n </div>\n `.trim();\n return dropdownHtml;\n }\n\n renderPage(inPopup) {\n const ac = this;\n if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);\n\n const pageHtml = `\n <div class=\"page page-with-subnavbar autocomplete-page\" data-name=\"autocomplete-page\">\n ${ac.renderNavbar(inPopup)}\n <div class=\"searchbar-backdrop\"></div>\n <div class=\"page-content\">\n <div class=\"list autocomplete-list autocomplete-found autocomplete-list-${ac.id} ${ac.params.formColorTheme ? `color-${ac.params.formColorTheme}` : ''}\">\n <ul></ul>\n </div>\n <div class=\"list autocomplete-not-found\">\n <ul>\n <li class=\"item-content\"><div class=\"item-inner\"><div class=\"item-title\">${ac.params.notFoundText}</div></div></li>\n </ul>\n </div>\n <div class=\"list autocomplete-values\">\n <ul></ul>\n </div>\n </div>\n </div>\n `.trim();\n return pageHtml;\n }\n\n renderPopup() {\n const ac = this;\n if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);\n const popupHtml = `\n <div class=\"popup autocomplete-popup\">\n <div class=\"view\">\n ${ac.renderPage(true)};\n </div>\n </div>\n `.trim();\n return popupHtml;\n }\n\n onOpen(type, el) {\n const ac = this;\n const app = ac.app;\n const $el = $(el);\n ac.$el = $el;\n ac.el = $el[0];\n ac.openedIn = type;\n ac.opened = true;\n\n if (ac.params.openIn === 'dropdown') {\n ac.attachDropdownEvents();\n\n ac.$dropdownEl.addClass('autocomplete-dropdown-in');\n ac.$inputEl.trigger('input');\n } else {\n // Init SB\n let $searchbarEl = $el.find('.searchbar');\n if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {\n $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');\n }\n ac.searchbar = app.searchbar.create({\n el: $searchbarEl,\n backdropEl: $el.find('.searchbar-backdrop'),\n customSearch: true,\n on: {\n search(sb, query) {\n if (query.length === 0 && ac.searchbar.enabled) {\n ac.searchbar.backdropShow();\n } else {\n ac.searchbar.backdropHide();\n }\n ac.source(query);\n },\n },\n });\n\n // Attach page events\n ac.attachPageEvents();\n\n // Update Values On Page Init\n ac.updateValues();\n\n // Source on load\n if (ac.params.requestSourceOnOpen) ac.source('');\n }\n\n ac.emit('local::open autocompleteOpen', ac);\n }\n\n autoFocus() {\n const ac = this;\n if (ac.searchbar && ac.searchbar.$inputEl) {\n ac.searchbar.$inputEl.focus();\n }\n return ac;\n }\n\n onOpened() {\n const ac = this;\n if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {\n ac.autoFocus();\n }\n ac.emit('local::opened autocompleteOpened', ac);\n }\n\n onClose() {\n const ac = this;\n if (ac.destroyed) return;\n\n // Destroy SB\n if (ac.searchbar && ac.searchbar.destroy) {\n ac.searchbar.destroy();\n ac.searchbar = null;\n delete ac.searchbar;\n }\n\n if (ac.params.openIn === 'dropdown') {\n ac.detachDropdownEvents();\n ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();\n ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');\n } else {\n ac.detachPageEvents();\n }\n\n ac.emit('local::close autocompleteClose', ac);\n }\n\n onClosed() {\n const ac = this;\n if (ac.destroyed) return;\n ac.opened = false;\n ac.$el = null;\n ac.el = null;\n delete ac.$el;\n delete ac.el;\n\n ac.emit('local::closed autocompleteClosed', ac);\n }\n\n openPage() {\n const ac = this;\n if (ac.opened) return ac;\n const pageHtml = ac.renderPage();\n ac.view.router.navigate({\n url: ac.url,\n route: {\n content: pageHtml,\n path: ac.url,\n on: {\n pageBeforeIn(e, page) {\n ac.onOpen('page', page.el);\n },\n pageAfterIn(e, page) {\n ac.onOpened('page', page.el);\n },\n pageBeforeOut(e, page) {\n ac.onClose('page', page.el);\n },\n pageAfterOut(e, page) {\n ac.onClosed('page', page.el);\n },\n },\n options: {\n animate: ac.params.animate,\n },\n },\n });\n return ac;\n }\n\n openPopup() {\n const ac = this;\n if (ac.opened) return ac;\n const popupHtml = ac.renderPopup();\n\n const popupParams = {\n content: popupHtml,\n animate: ac.params.animate,\n push: ac.params.popupPush,\n swipeToClose: ac.params.popupSwipeToClose,\n on: {\n popupOpen(popup) {\n ac.onOpen('popup', popup.el);\n },\n popupOpened(popup) {\n ac.onOpened('popup', popup.el);\n },\n popupClose(popup) {\n ac.onClose('popup', popup.el);\n },\n popupClosed(popup) {\n ac.onClosed('popup', popup.el);\n },\n },\n };\n\n if (ac.params.routableModals && ac.view) {\n ac.view.router.navigate({\n url: ac.url,\n route: {\n path: ac.url,\n popup: popupParams,\n },\n });\n } else {\n ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);\n }\n return ac;\n }\n\n openDropdown() {\n const ac = this;\n\n if (!ac.$dropdownEl) {\n ac.$dropdownEl = $(ac.renderDropdown());\n }\n const $listEl = ac.$inputEl.parents('.list');\n if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {\n ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');\n }\n\n const $pageContentEl = ac.$inputEl.parents('.page-content');\n if (ac.params.dropdownContainerEl) {\n $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);\n } else if ($pageContentEl.length === 0) {\n ac.$dropdownEl.insertAfter(ac.$inputEl);\n } else {\n ac.positionDropdown();\n $pageContentEl.append(ac.$dropdownEl);\n }\n ac.onOpen('dropdown', ac.$dropdownEl);\n ac.onOpened('dropdown', ac.$dropdownEl);\n }\n\n open() {\n const ac = this;\n if (ac.opened) return ac;\n const openIn = ac.params.openIn;\n ac[`open${openIn.split('').map((el, index) => {\n if (index === 0) return el.toUpperCase();\n return el;\n }).join('')}`]();\n return ac;\n }\n\n close() {\n const ac = this;\n if (!ac.opened) return ac;\n if (ac.params.openIn === 'dropdown') {\n ac.onClose();\n ac.onClosed();\n } else if ((ac.params.routableModals && ac.view) || ac.openedIn === 'page') {\n ac.view.router.back({ animate: ac.params.animate });\n } else {\n ac.modal.once('modalClosed', () => {\n Utils.nextTick(() => {\n if (ac.destroyed) return;\n ac.modal.destroy();\n delete ac.modal;\n });\n });\n ac.modal.close();\n }\n return ac;\n }\n\n init() {\n const ac = this;\n ac.attachEvents();\n }\n\n destroy() {\n const ac = this;\n ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);\n ac.detachEvents();\n if (ac.$inputEl && ac.$inputEl[0]) {\n delete ac.$inputEl[0].f7Autocomplete;\n }\n if (ac.$openerEl && ac.$openerEl[0]) {\n delete ac.$openerEl[0].f7Autocomplete;\n }\n Utils.deleteProps(ac);\n ac.destroyed = true;\n }\n}\n\nexport default Autocomplete;\n","import Utils from '../../utils/utils';\nimport Autocomplete from './autocomplete-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'autocomplete',\n params: {\n autocomplete: {\n openerEl: undefined,\n inputEl: undefined,\n view: undefined,\n\n // DropDown\n dropdownContainerEl: undefined,\n dropdownPlaceholderText: undefined,\n typeahead: false,\n highlightMatches: true,\n expandInput: false,\n updateInputValueOnSelect: true,\n inputEvents: 'input',\n\n value: undefined,\n multiple: false,\n\n source: undefined,\n limit: undefined,\n valueProperty: 'id',\n textProperty: 'text',\n\n openIn: 'page', // or 'popup' or 'dropdown'\n pageBackLinkText: 'Back',\n popupCloseLinkText: 'Close',\n pageTitle: undefined,\n searchbarPlaceholder: 'Search...',\n searchbarDisableText: 'Cancel',\n searchbarDisableButton: undefined,\n\n popupPush: false,\n popupSwipeToClose: undefined,\n\n animate: true,\n\n autoFocus: false,\n closeOnSelect: false,\n notFoundText: 'Nothing found',\n requestSourceOnOpen: false,\n\n // Preloader\n preloaderColor: undefined,\n preloader: false,\n\n // Colors\n formColorTheme: undefined,\n navbarColorTheme: undefined,\n\n // Routing\n routableModals: true,\n url: 'select/',\n\n // Custom render functions\n renderDropdown: undefined,\n renderPage: undefined,\n renderPopup: undefined,\n renderItem: undefined,\n renderSearchbar: undefined,\n renderNavbar: undefined,\n\n },\n },\n static: {\n Autocomplete,\n },\n create() {\n const app = this;\n app.autocomplete = Utils.extend(\n ConstructorMethods({\n defaultSelector: undefined,\n constructor: Autocomplete,\n app,\n domProp: 'f7Autocomplete',\n }),\n {\n open(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.open) return ac.open();\n return undefined;\n },\n close(autocompleteEl) {\n const ac = app.autocomplete.get(autocompleteEl);\n if (ac && ac.close) return ac.close();\n return undefined;\n },\n }\n );\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\nimport Framework7Class from '../../utils/class';\n\nclass Tooltip extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n\n const tooltip = this;\n\n const defaults = Utils.extend({}, app.params.tooltip);\n\n // Extend defaults with modules params\n tooltip.useModulesParams(defaults);\n\n tooltip.params = Utils.extend(defaults, params);\n\n const { targetEl } = tooltip.params;\n if (!targetEl) return tooltip;\n\n const $targetEl = $(targetEl);\n if ($targetEl.length === 0) return tooltip;\n\n if ($targetEl[0].f7Tooltip) return $targetEl[0].f7Tooltip;\n\n const $el = $(tooltip.render()).eq(0);\n\n Utils.extend(tooltip, {\n app,\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n $el,\n el: $el && $el[0],\n text: tooltip.params.text || '',\n visible: false,\n opened: false,\n });\n\n $targetEl[0].f7Tooltip = tooltip;\n\n const touchesStart = {};\n let isTouched;\n function handleClick() {\n if (tooltip.opened) tooltip.hide();\n else tooltip.show(this);\n }\n function handleClickOut(e) {\n if (tooltip.opened && (\n $(e.target).closest($targetEl).length\n || $(e.target).closest(tooltip.$el).length\n )) return;\n tooltip.hide();\n }\n function handleTouchStart(e) {\n if (isTouched) return;\n isTouched = true;\n touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n tooltip.show(this);\n }\n function handleTouchMove(e) {\n if (!isTouched) return;\n const x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n const y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n const distance = (\n ((x - touchesStart.x) ** 2)\n + ((y - touchesStart.y) ** 2)\n ) ** 0.5;\n if (distance > 50) {\n isTouched = false;\n tooltip.hide();\n }\n }\n function handleTouchEnd() {\n if (!isTouched) return;\n isTouched = false;\n tooltip.hide();\n }\n function handleMouseEnter() {\n tooltip.show(this);\n }\n function handleMouseLeave() {\n tooltip.hide();\n }\n function handleTransitionEnd() {\n if (!$el.hasClass('tooltip-in')) {\n $el.removeClass('tooltip-out').remove();\n }\n }\n\n tooltip.attachEvents = function attachEvents() {\n $el.on('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n $targetEl.on('click', handleClick);\n $('html').on('click', handleClickOut);\n return;\n }\n if (Support.touch) {\n const passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.on(app.touchEvents.start, handleTouchStart, passive);\n app.on('touchmove', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.on((Support.pointerEvents ? 'pointerenter' : 'mouseenter'), handleMouseEnter);\n $targetEl.on((Support.pointerEvents ? 'pointerleave' : 'mouseleave'), handleMouseLeave);\n }\n };\n tooltip.detachEvents = function detachEvents() {\n $el.off('transitionend', handleTransitionEnd);\n if (tooltip.params.trigger === 'click') {\n $targetEl.off('click', handleClick);\n $('html').off('click', handleClickOut);\n return;\n }\n if (Support.touch) {\n const passive = Support.passiveListener ? { passive: true } : false;\n $targetEl.off(app.touchEvents.start, handleTouchStart, passive);\n app.off('touchmove', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n } else {\n $targetEl.off((Support.pointerEvents ? 'pointerenter' : 'mouseenter'), handleMouseEnter);\n $targetEl.off((Support.pointerEvents ? 'pointerleave' : 'mouseleave'), handleMouseLeave);\n }\n };\n\n // Install Modules\n tooltip.useModules();\n\n tooltip.init();\n\n return tooltip;\n }\n\n position(targetEl) {\n const tooltip = this;\n const { $el, app } = tooltip;\n const tooltipOffset = tooltip.params.offset || 0;\n $el.css({ left: '', top: '' });\n const $targetEl = $(targetEl || tooltip.targetEl);\n const [width, height] = [$el.width(), $el.height()];\n\n $el.css({ left: '', top: '' });\n\n let targetWidth;\n let targetHeight;\n let targetOffsetLeft;\n let targetOffsetTop;\n if ($targetEl && $targetEl.length > 0) {\n targetWidth = $targetEl.outerWidth();\n targetHeight = $targetEl.outerHeight();\n\n const targetOffset = $targetEl.offset();\n targetOffsetLeft = targetOffset.left - app.left;\n targetOffsetTop = targetOffset.top - app.top;\n\n const targetParentPage = $targetEl.parents('.page');\n if (targetParentPage.length > 0) {\n targetOffsetTop -= targetParentPage[0].scrollTop;\n }\n }\n let [left, top] = [0, 0, 0];\n\n // Top Position\n let position = 'top';\n\n if (height + tooltipOffset < targetOffsetTop) {\n // On top\n top = targetOffsetTop - height - tooltipOffset;\n } else if (height < app.height - targetOffsetTop - targetHeight) {\n // On bottom\n position = 'bottom';\n top = targetOffsetTop + targetHeight + tooltipOffset;\n } else {\n // On middle\n position = 'middle';\n top = ((targetHeight / 2) + targetOffsetTop) - (height / 2);\n if (top <= 0) {\n top = 8;\n } else if (top + height >= app.height) {\n top = app.height - height - 8;\n }\n }\n\n // Horizontal Position\n if (position === 'top' || position === 'bottom') {\n left = ((targetWidth / 2) + targetOffsetLeft) - (width / 2);\n if (left < 8) left = 8;\n if (left + width > app.width) left = app.width - width - 8;\n if (left < 0) left = 0;\n } else if (position === 'middle') {\n left = targetOffsetLeft - width;\n if (left < 8 || (left + width > app.width)) {\n if (left < 8) left = targetOffsetLeft + targetWidth;\n if (left + width > app.width) left = app.width - width - 8;\n }\n }\n\n // Apply Styles\n $el.css({ top: `${top}px`, left: `${left}px` });\n }\n\n show(aroundEl) {\n const tooltip = this;\n const { app, $el, $targetEl } = tooltip;\n app.root.append($el);\n tooltip.position(aroundEl);\n const $aroundEl = $(aroundEl);\n tooltip.visible = true;\n tooltip.opened = true;\n $targetEl.trigger('tooltip:show');\n $el.trigger('tooltip:show');\n if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {\n $aroundEl.trigger('tooltip:show');\n }\n tooltip.emit('local::show tooltipShow', tooltip);\n $el.removeClass('tooltip-out').addClass('tooltip-in');\n return tooltip;\n }\n\n hide() {\n const tooltip = this;\n const { $el, $targetEl } = tooltip;\n tooltip.visible = false;\n tooltip.opened = false;\n $targetEl.trigger('tooltip:hide');\n $el.trigger('tooltip:hide');\n tooltip.emit('local::hide tooltipHide', tooltip);\n $el.addClass('tooltip-out').removeClass('tooltip-in');\n return tooltip;\n }\n\n render() {\n const tooltip = this;\n if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);\n const { cssClass, text } = tooltip.params;\n return `\n <div class=\"tooltip ${cssClass || ''}\">\n <div class=\"tooltip-content\">${text || ''}</div>\n </div>\n `.trim();\n }\n\n setText(newText) {\n const tooltip = this;\n if (typeof newText === 'undefined') {\n return tooltip;\n }\n tooltip.params.text = newText;\n tooltip.text = newText;\n if (tooltip.$el) {\n tooltip.$el.children('.tooltip-content').html(newText);\n }\n if (tooltip.opened) {\n tooltip.position();\n }\n return tooltip;\n }\n\n init() {\n const tooltip = this;\n tooltip.attachEvents();\n }\n\n destroy() {\n const tooltip = this;\n if (!tooltip.$targetEl || tooltip.destroyed) return;\n tooltip.$targetEl.trigger('tooltip:beforedestroy');\n tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);\n tooltip.$el.remove();\n delete tooltip.$targetEl[0].f7Tooltip;\n tooltip.detachEvents();\n Utils.deleteProps(tooltip);\n tooltip.destroyed = true;\n }\n}\nexport default Tooltip;\n","import $ from 'dom7';\nimport Tooltip from './tooltip-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'tooltip',\n static: {\n Tooltip,\n },\n create() {\n const app = this;\n app.tooltip = ConstructorMethods({\n defaultSelector: '.tooltip',\n constructor: Tooltip,\n app,\n domProp: 'f7Tooltip',\n });\n app.tooltip.show = function show(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.show($el[0]);\n return tooltip;\n };\n app.tooltip.hide = function hide(el) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.hide();\n return tooltip;\n };\n app.tooltip.setText = function text(el, newText) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const tooltip = $el[0].f7Tooltip;\n if (!tooltip) return undefined;\n tooltip.setText(newText);\n return tooltip;\n };\n },\n params: {\n tooltip: {\n targetEl: null,\n text: null,\n cssClass: null,\n render: null,\n offset: 0,\n trigger: 'hover',\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each((index, el) => {\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n });\n }\n },\n pageBeforeRemove(page) {\n const app = this;\n page.$el.find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {\n page.$navbarEl.find('.tooltip-init').each((index, el) => {\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n });\n }\n },\n },\n vnode: {\n 'tooltip-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n const text = $(el).attr('data-tooltip');\n if (!text) return;\n app.tooltip.create({ targetEl: el, text });\n },\n update(vnode) {\n const el = vnode.elm;\n if (!el.f7Tooltip) return;\n if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {\n el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);\n }\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Tooltip) el.f7Tooltip.destroy();\n },\n },\n },\n};\n","/* eslint no-nested-ternary: off */\nimport $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nclass Gauge extends Framework7Class {\n constructor(app, params = {}) {\n // Extends with open/close Modal methods;\n super(params, [app]);\n\n const gauge = this;\n\n const defaults = Utils.extend({}, app.params.gauge);\n\n // Extend defaults with modules params\n gauge.useModulesParams(defaults);\n\n gauge.params = Utils.extend(defaults, params);\n\n const { el } = gauge.params;\n if (!el) return gauge;\n\n const $el = $(el);\n if ($el.length === 0) return gauge;\n\n if ($el[0].f7Gauge) return $el[0].f7Gauge;\n\n Utils.extend(gauge, {\n app,\n $el,\n el: $el && $el[0],\n });\n\n $el[0].f7Gauge = gauge;\n\n // Install Modules\n gauge.useModules();\n\n gauge.init();\n\n return gauge;\n }\n\n calcRadius() {\n const gauge = this;\n const { size, borderWidth } = gauge.params;\n return (size / 2) - (borderWidth / 2);\n }\n\n calcBorderLength() {\n const gauge = this;\n const radius = gauge.calcRadius();\n return 2 * Math.PI * radius;\n }\n\n render() {\n const gauge = this;\n if (gauge.params.render) return gauge.params.render.call(gauge, gauge);\n\n const {\n type,\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = gauge.params;\n\n const semiCircle = type === 'semicircle';\n const radius = gauge.calcRadius();\n const length = gauge.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n\n return `\n <svg class=\"gauge-svg\" width=\"${size}px\" height=\"${semiCircle ? size / 2 : size}px\" viewBox=\"0 0 ${size} ${semiCircle ? size / 2 : size}\">\n ${semiCircle ? `\n <path\n class=\"gauge-back-semi\"\n d=\"M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0\"\n stroke=\"${borderBgColor}\"\n stroke-width=\"${borderWidth}\"\n fill=\"${bgColor || 'none'}\"\n />\n <path\n class=\"gauge-front-semi\"\n d=\"M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0\"\n stroke=\"${borderColor}\"\n stroke-width=\"${borderWidth}\"\n stroke-dasharray=\"${length / 2}\"\n stroke-dashoffset=\"${(length / 2) * (1 + progress)}\"\n fill=\"${borderBgColor ? 'none' : (bgColor || 'none')}\"\n />\n ` : `\n ${borderBgColor ? `\n <circle\n class=\"gauge-back-circle\"\n stroke=\"${borderBgColor}\"\n stroke-width=\"${borderWidth}\"\n fill=\"${bgColor || 'none'}\"\n cx=\"${size / 2}\"\n cy=\"${size / 2}\"\n r=\"${radius}\"\n ></circle>\n ` : ''}\n <circle\n class=\"gauge-front-circle\"\n transform=\"${`rotate(-90 ${size / 2} ${size / 2})`}\"\n stroke=\"${borderColor}\"\n stroke-width=\"${borderWidth}\"\n stroke-dasharray=\"${length}\"\n stroke-dashoffset=\"${length * (1 - progress)}\"\n fill=\"${borderBgColor ? 'none' : bgColor || 'none'}\"\n cx=\"${size / 2}\"\n cy=\"${size / 2}\"\n r=\"${radius}\"\n ></circle>\n `}\n ${valueText ? `\n <text\n class=\"gauge-value-text\"\n x=\"50%\"\n y=\"${semiCircle ? '100%' : '50%'}\"\n font-weight=\"${valueFontWeight}\"\n font-size=\"${valueFontSize}\"\n fill=\"${valueTextColor}\"\n dy=\"${semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0}\"\n text-anchor=\"middle\"\n dominant-baseline=\"${!semiCircle && 'middle'}\"\n >${valueText}</text>\n ` : ''}\n ${labelText ? `\n <text\n class=\"gauge-label-text\"\n x=\"50%\"\n y=\"${semiCircle ? '100%' : '50%'}\"\n font-weight=\"${labelFontWeight}\"\n font-size=\"${labelFontSize}\"\n fill=\"${labelTextColor}\"\n dy=\"${semiCircle ? -5 : (valueText ? ((valueFontSize / 2) + 10) : 0)}\"\n text-anchor=\"middle\"\n dominant-baseline=\"${!semiCircle && 'middle'}\"\n >${labelText}</text>\n ` : ''}\n </svg>\n `.trim();\n }\n\n update(newParams = {}) {\n const gauge = this;\n const { params, $gaugeSvgEl } = gauge;\n\n Object.keys(newParams).forEach((param) => {\n if (typeof newParams[param] !== 'undefined') {\n params[param] = newParams[param];\n }\n });\n if ($gaugeSvgEl.length === 0) return gauge;\n\n const {\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight,\n } = params;\n\n const length = gauge.calcBorderLength();\n const progress = Math.max(Math.min(value, 1), 0);\n const radius = gauge.calcRadius();\n const semiCircle = params.type === 'semicircle';\n\n const svgAttrs = {\n width: `${size}px`,\n height: `${semiCircle ? size / 2 : size}px`,\n viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`,\n };\n Object.keys(svgAttrs).forEach((attr) => {\n $gaugeSvgEl.attr(attr, svgAttrs[attr]);\n });\n if (semiCircle) {\n const backAttrs = {\n d: `M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n };\n const frontAttrs = {\n d: `M${size - (borderWidth / 2)},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': (length / 2) * (1 + progress),\n fill: borderBgColor ? 'none' : (bgColor || 'none'),\n };\n Object.keys(backAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);\n });\n } else {\n const backAttrs = {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n const frontAttrs = {\n transform: `rotate(-90 ${size / 2} ${size / 2})`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius,\n };\n Object.keys(backAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-back-circle').attr(attr, backAttrs[attr]);\n });\n Object.keys(frontAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-front-circle').attr(attr, frontAttrs[attr]);\n });\n }\n if (valueText) {\n if (!$gaugeSvgEl.find('.gauge-value-text').length) {\n $gaugeSvgEl.append('<text class=\"gauge-value-text\"></text>');\n }\n const textAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? (labelText ? -labelFontSize - 15 : -5) : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(textAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-value-text').text(valueText);\n } else {\n $gaugeSvgEl.find('.gauge-value-text').remove();\n }\n if (labelText) {\n if (!$gaugeSvgEl.find('.gauge-label-text').length) {\n $gaugeSvgEl.append('<text class=\"gauge-label-text\"></text>');\n }\n const labelAttrs = {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : (valueText ? ((valueFontSize / 2) + 10) : 0),\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle && 'middle',\n };\n Object.keys(labelAttrs).forEach((attr) => {\n $gaugeSvgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);\n });\n $gaugeSvgEl.find('.gauge-label-text').text(labelText);\n } else {\n $gaugeSvgEl.find('.gauge-label-text').remove();\n }\n return gauge;\n }\n\n init() {\n const gauge = this;\n const $gaugeSvgEl = $(gauge.render()).eq(0);\n $gaugeSvgEl.f7Gauge = gauge;\n Utils.extend(gauge, {\n $gaugeSvgEl,\n gaugeSvgEl: $gaugeSvgEl && $gaugeSvgEl[0],\n });\n gauge.$el.append($gaugeSvgEl);\n return gauge;\n }\n\n destroy() {\n const gauge = this;\n if (!gauge.$el || gauge.destroyed) return;\n gauge.$el.trigger('gauge:beforedestroy');\n gauge.emit('local::beforeDestroy gaugeBeforeDestroy', gauge);\n gauge.$gaugeSvgEl.remove();\n delete gauge.$el[0].f7Gauge;\n Utils.deleteProps(gauge);\n gauge.destroyed = true;\n }\n}\nexport default Gauge;\n","import $ from 'dom7';\nimport Gauge from './gauge-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'gauge',\n static: {\n Gauge,\n },\n create() {\n const app = this;\n app.gauge = ConstructorMethods({\n defaultSelector: '.gauge',\n constructor: Gauge,\n app,\n domProp: 'f7Gauge',\n });\n app.gauge.update = function update(el, newParams) {\n const $el = $(el);\n if ($el.length === 0) return undefined;\n const gauge = app.gauge.get(el);\n if (!gauge) return undefined;\n gauge.update(newParams);\n return gauge;\n };\n },\n params: {\n gauge: {\n el: null,\n type: 'circle',\n value: 0,\n size: 200,\n bgColor: 'transparent',\n borderBgColor: '#eeeeee',\n borderColor: '#000000',\n borderWidth: 10,\n valueText: null,\n valueTextColor: '#000000',\n valueFontSize: 31,\n valueFontWeight: 500,\n labelText: null,\n labelTextColor: '#888888',\n labelFontSize: 14,\n labelFontWeight: 400,\n },\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.gauge-init').each((index, el) => {\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.gauge-init').each((index, el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.gauge-init').each((index, el) => {\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.gauge-init').each((index, el) => {\n if (el.f7Gauge) el.f7Gauge.destroy();\n });\n },\n },\n vnode: {\n 'gauge-init': {\n insert(vnode) {\n const app = this;\n const el = vnode.elm;\n app.gauge.create(Utils.extend({ el }, $(el).dataset() || {}));\n },\n destroy(vnode) {\n const el = vnode.elm;\n if (el.f7Gauge) el.f7Gauge.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\n\nconst Menu = {\n open(el = '.menu-item-dropdown') {\n const app = this;\n if (!el) return;\n const $el = $(el).closest('.menu-item-dropdown');\n if (!$el.length) return;\n const $menuEl = $el.closest('.menu').eq(0);\n if ($menuEl.length) {\n const zIndex = $menuEl.css('z-index');\n const originalZIndex = $menuEl[0].style.zIndex;\n $menuEl.css('z-index', parseInt(zIndex || 0, 0) + 1);\n $menuEl[0].f7MenuZIndex = originalZIndex;\n }\n $el.eq(0).addClass('menu-item-dropdown-opened').trigger('menu:opened');\n app.emit('menuOpened', $el.eq(0)[0]);\n },\n close(el = '.menu-item-dropdown-opened') {\n const app = this;\n if (!el) return;\n const $el = $(el).closest('.menu-item-dropdown-opened');\n if (!$el.length) return;\n const $menuEl = $el.closest('.menu').eq(0);\n if ($menuEl.length) {\n const zIndex = $menuEl[0].f7MenuZIndex;\n $menuEl.css('z-index', zIndex);\n delete $menuEl[0].f7MenuZIndex;\n }\n $el.eq(0).removeClass('menu-item-dropdown-opened').trigger('menu:closed');\n app.emit('menuClosed', $el.eq(0)[0]);\n },\n};\n\nexport default {\n name: 'menu',\n create() {\n const app = this;\n app.menu = {\n open: Menu.open.bind(app),\n close: Menu.close.bind(app),\n };\n },\n on: {\n click(e) {\n const app = this;\n const openedMenus = $('.menu-item-dropdown-opened');\n if (!openedMenus.length) return;\n openedMenus.each((index, el) => {\n if (!$(e.target).closest('.menu-item-dropdown-opened').length) {\n app.menu.close(el);\n }\n });\n },\n },\n clicks: {\n '.menu-item-dropdown': function onClick($clickedEl, dataset, e) {\n const app = this;\n if ($clickedEl.hasClass('menu-item-dropdown-opened')) {\n if ($(e.target).closest('.menu-dropdown').length) return;\n app.menu.close($clickedEl);\n } else {\n app.menu.open($clickedEl);\n }\n },\n '.menu-close': function onClick() {\n const app = this;\n app.menu.close();\n },\n },\n};\n","export default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, alphaLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-alpha-slider\">\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${alphaLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-alpha\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.01\" min=\"0\" max=\"1\" class=\"color-picker-value-alpha\">\n ` : `\n <span class=\"color-picker-value-alpha\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.alphaRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-alpha'),\n min: 0,\n max: 1,\n step: 0.01,\n value: 1,\n on: {\n change(range, value) {\n const alpha = Math.floor(value * 100) / 100;\n self.setValue({ alpha });\n },\n },\n });\n function handleInputChange(e) {\n const alpha = self.value.alpha;\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = alpha;\n return;\n }\n value = Math.max(0, Math.min(1, value));\n self.setValue({ alpha: value });\n }\n\n self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);\n\n self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {\n self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { alpha } = value;\n self.alphaRangeSlider.value = alpha;\n self.alphaRangeSlider.layout();\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-alpha').val(alpha);\n } else {\n self.$el.find('span.color-picker-value-alpha').text(alpha);\n }\n },\n destroy(self) {\n if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {\n self.alphaRangeSlider.destroy();\n }\n delete self.alphaRangeSlider;\n\n if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();\n delete self.destroyAlphaSliderEvents;\n },\n};\n","export default {\n render() {\n return `\n <div class=\"color-picker-module color-picker-module-current-color\">\n <div class=\"color-picker-current-color\"></div>\n </div>\n `;\n },\n update(self) {\n self.$el.find('.color-picker-module-current-color .color-picker-current-color').css(\n 'background-color',\n self.value.hex,\n );\n },\n};\n","export default {\n render(self) {\n const { hexLabel, hexLabelText, hexValueEditable } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-hex\">\n <div class=\"color-picker-hex-wrap\">\n ${hexLabel ? `\n <div class=\"color-picker-hex-label\">${hexLabelText}</div>\n ` : ''}\n <div class=\"color-picker-hex-value\">\n ${hexValueEditable ? `\n <input type=\"text\" class=\"color-picker-value-hex\">\n ` : `\n <span class=\"color-picker-value-hex\"></span>\n `}\n </div>\n </div>\n </div>\n `;\n },\n init(self) {\n function handleInputChange(e) {\n const hex = self.value.hex;\n let value = e.target.value.replace(/#/g, '');\n if (Number.isNaN(value) || !value || (value.length !== 3 && value.length !== 6)) {\n e.target.value = hex;\n return;\n }\n const min = 0;\n const current = parseInt(value, 16);\n const max = parseInt('ffffff', 16); // eslint-disable-line\n if (current > max) {\n value = 'fff';\n }\n if (current < min) {\n value = '000';\n }\n self.setValue({ hex: value });\n }\n\n self.$el.on('change', '.color-picker-module-hex input', handleInputChange);\n\n self.destroyHexEvents = function destroyHexEvents() {\n self.$el.off('change', '.color-picker-module-hex input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hexValueEditable } = self.params;\n\n const { hex } = value;\n if (hexValueEditable) {\n self.$el.find('input.color-picker-value-hex').val(hex);\n } else {\n self.$el.find('span.color-picker-value-hex').text(hex);\n }\n },\n destroy(self) {\n if (self.destroyHexEvents) self.destroyHexEvents();\n delete self.destroyHexEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../../utils/utils';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText, saturationLabelText, brightnessLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-hsb-sliders\">\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${hueLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"360\" class=\"color-picker-value-hue\" data-color-index=\"0\">\n ` : `\n <span class=\"color-picker-value-hue\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${saturationLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-saturation\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"100\" class=\"color-picker-value-saturation\" data-color-index=\"1\">\n ` : `\n <span class=\"color-picker-value-saturation\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${brightnessLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"100\" class=\"color-picker-value-brightness\" data-color-index=\"2\">\n ` : `\n <span class=\"color-picker-value-brightness\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n self.saturationRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-saturation'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const s = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], s, self.value.hsb[2]] });\n },\n },\n });\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n\n function handleInputChange(e) {\n const hsb = [...self.value.hsb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseFloat(e.target.value);\n if (Number.isNaN(value)) {\n e.target.value = hsb[index];\n return;\n }\n if (index === 0) {\n value = Math.max(0, Math.min(360, value));\n } else {\n value = Math.max(0, Math.min(100, value)) / 100;\n }\n\n hsb[index] = value;\n self.setValue({ hsb });\n }\n\n self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n\n self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb, hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.saturationRangeSlider.value = hsb[1];\n self.brightnessRangeSlider.value = hsb[2];\n\n self.hueRangeSlider.layout();\n self.saturationRangeSlider.layout();\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n const hslLeft = Utils.colorHsbToHsl(hsb[0], 0, 1);\n const hslRight = Utils.colorHsbToHsl(hsb[0], 1, 1);\n const brightness = hsb[2];\n\n self.hueRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hue}, 100%, 50%)`\n );\n self.saturationRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`\n );\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `rgb(${brightness * 255}, ${brightness * 255}, ${brightness * 255})`\n );\n self.saturationRangeSlider.$el.find('.range-bar').css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`\n );\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n self.$el.find('input.color-picker-value-saturation').val(`${hsb[1] * 1000 / 10}`);\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n self.$el.find('span.color-picker-value-saturation').text(`${hsb[1] * 1000 / 10}`);\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {\n self.saturationRangeSlider.destroy();\n }\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n\n delete self.hueRangeSlider;\n delete self.saturationRangeSlider;\n delete self.brightnessRangeSlider;\n\n if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();\n delete self.destroyHsbSlidersEvents;\n },\n};\n","export default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, hueLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-hue-slider\">\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${hueLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-hue\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"360\" class=\"color-picker-value-hue\">\n ` : `\n <span class=\"color-picker-value-hue\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.hueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-hue'),\n min: 0,\n max: 360,\n step: 0.1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ hue: value });\n },\n },\n });\n },\n update(self) {\n const {\n value,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hue } = value;\n\n self.hueRangeSlider.value = hue;\n self.hueRangeSlider.layout();\n self.hueRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hue}, 100%, 50%)`\n );\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-hue').val(`${hue}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-hue').text(`${hue}`);\n }\n },\n destroy(self) {\n if (self.hueRangeSlider && self.hueRangeSlider.destroy) {\n self.hueRangeSlider.destroy();\n }\n delete self.hueRangeSlider;\n },\n};\n","import Utils from '../../../utils/utils';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, brightnessLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-brightness-slider\">\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${brightnessLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-brightness\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"0.1\" min=\"0\" max=\"100\" class=\"color-picker-value-brightness\">\n ` : `\n <span class=\"color-picker-value-brightness\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.brightnessRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-brightness'),\n min: 0,\n max: 1,\n step: 0.001,\n value: 0,\n on: {\n change(range, value) {\n const b = Math.floor(value * 1000) / 1000;\n self.setValue({ hsb: [self.value.hsb[0], self.value.hsb[1], b] });\n },\n },\n });\n },\n update(self) {\n const {\n value,\n app,\n } = self;\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { hsb } = value;\n\n self.brightnessRangeSlider.value = hsb[2];\n self.brightnessRangeSlider.layout();\n\n const hslCurrent = Utils.colorHsbToHsl(hsb[0], hsb[1], hsb[2]);\n const hslLeft = Utils.colorHsbToHsl(hsb[0], hsb[1], 0);\n const hslRight = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.brightnessRangeSlider.$el[0].style.setProperty(\n '--f7-range-knob-color',\n `hsl(${hslCurrent[0]}, ${hslCurrent[1] * 100}%, ${hslCurrent[2] * 100}%)`\n );\n self.brightnessRangeSlider.$el.find('.range-bar').css(\n 'background-image',\n `linear-gradient(${app.rtl ? 'to left' : 'to right'}, hsl(${hslLeft[0]}, ${hslLeft[1] * 100}%, ${hslLeft[2] * 100}%), hsl(${hslRight[0]}, ${hslRight[1] * 100}%, ${hslRight[2] * 100}%))`\n );\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-brightness').val(`${hsb[2] * 1000 / 10}`);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-brightness').text(`${hsb[2] * 1000 / 10}`);\n }\n },\n destroy(self) {\n if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {\n self.brightnessRangeSlider.destroy();\n }\n delete self.brightnessRangeSlider;\n },\n};\n","/* eslint indent: [\"off\"] */\nimport $ from 'dom7';\n\nexport default {\n render(self) {\n return `\n <div class=\"color-picker-module color-picker-module-palette\">\n <div class=\"color-picker-palette\">\n ${self.params.palette.map((p) => {\n if (Array.isArray(p)) {\n let row = '<div class=\"color-picker-palette-row\">';\n row += p.map(c => `\n <div class=\"color-picker-palette-value\" data-palette-color=\"${c}\" style=\"background-color: ${c}\"></div>\n `).join('');\n row += '</div>';\n return row;\n }\n return `\n <div class=\"color-picker-palette-value\" data-palette-color=\"${p}\" style=\"background-color: ${p}\"></div>\n `;\n }).join('')}\n </div>\n </div>\n `;\n },\n init(self) {\n function handlePaletteClick(e) {\n const hex = $(e.target).attr('data-palette-color');\n self.setValue({\n hex,\n });\n }\n\n self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);\n\n self.destroyPaletteEvents = function destroyPaletteEvents() {\n self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);\n };\n },\n destroy(self) {\n if (self.destroyPaletteEvents) {\n self.destroyPaletteEvents();\n }\n delete self.destroyPaletteEvents;\n },\n};\n","export default {\n render() {\n return `\n <div class=\"color-picker-module color-picker-module-initial-current-colors\">\n <div class=\"color-picker-initial-current-colors\">\n <div class=\"color-picker-initial-color\"></div>\n <div class=\"color-picker-current-color\"></div>\n </div>\n </div>\n `;\n },\n init(self) {\n function handleInitialColorClick() {\n if (self.initialValue) {\n const { hex, alpha } = self.initialValue;\n self.setValue({\n hex,\n alpha,\n });\n }\n }\n self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);\n self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {\n self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);\n };\n },\n update(self) {\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css(\n 'background-color',\n self.initialValue.hex,\n );\n self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css(\n 'background-color',\n self.value.hex,\n );\n },\n destroy(self) {\n if (self.destroyInitialCurrentEvents) {\n self.destroyInitialCurrentEvents();\n }\n delete self.destroyInitialCurrentEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render(self) {\n const { barLabel, barValue, barValueEditable, redLabelText, greenLabelText, blueLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-rgb-bars\">\n <div class=\"color-picker-bar-wrap\">\n ${barLabel ? `\n <div class=\"color-picker-bar-label\">${redLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-bar color-picker-bar-red\"></div>\n ${barValue ? `\n <div class=\"color-picker-bar-value\">\n ${barValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-bar-red\" data-color-index=\"0\">\n ` : `\n <span class=\"color-picker-value-bar-red\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-bar-wrap\">\n ${barLabel ? `\n <div class=\"color-picker-bar-label\">${greenLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-bar color-picker-bar-green\"></div>\n ${barValue ? `\n <div class=\"color-picker-bar-value\">\n ${barValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-bar-green\" data-color-index=\"1\">\n ` : `\n <span class=\"color-picker-value-bar-green\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-bar-wrap\">\n ${barLabel ? `\n <div class=\"color-picker-bar-label\">${blueLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-bar color-picker-bar-blue\"></div>\n ${barValue ? `\n <div class=\"color-picker-bar-value\">\n ${barValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-bar-blue\" data-color-index=\"2\">\n ` : `\n <span class=\"color-picker-value-bar-blue\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.redBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueBar = self.app.range.create({\n el: self.$el.find('.color-picker-bar-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n vertical: true,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);\n\n self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {\n self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);\n };\n },\n update(self) {\n const {\n value,\n redBar,\n greenBar,\n blueBar,\n } = self;\n\n const { barValue, barValueEditable } = self.params;\n\n const { rgb } = value;\n\n redBar.value = rgb[0];\n greenBar.value = rgb[1];\n blueBar.value = rgb[2];\n\n redBar.layout();\n greenBar.layout();\n blueBar.layout();\n\n redBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueBar.$el.find('.range-bar').css('background-image', `linear-gradient(to top, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n\n if (barValue && barValueEditable) {\n self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);\n } else if (barValue) {\n self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redBar && self.redBar.destroy) {\n self.redBar.destroy();\n }\n if (self.greenBar && self.greenBar.destroy) {\n self.greenBar.destroy();\n }\n if (self.blueBar && self.blueBar.destroy) {\n self.blueBar.destroy();\n }\n\n delete self.redBar;\n delete self.greenBar;\n delete self.blueBar;\n\n if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();\n delete self.destroyRgbBarsEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render(self) {\n const { sliderLabel, sliderValue, sliderValueEditable, redLabelText, greenLabelText, blueLabelText } = self.params;\n return `\n <div class=\"color-picker-module color-picker-module-rgb-sliders\">\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${redLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-red\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-red\" data-color-index=\"0\">\n ` : `\n <span class=\"color-picker-value-red\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${greenLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-green\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-green\" data-color-index=\"1\">\n ` : `\n <span class=\"color-picker-value-green\"></span>\n `}\n </div>\n ` : ''}\n </div>\n <div class=\"color-picker-slider-wrap\">\n ${sliderLabel ? `\n <div class=\"color-picker-slider-label\">${blueLabelText}</div>\n ` : ''}\n <div class=\"range-slider color-picker-slider color-picker-slider-blue\"></div>\n ${sliderValue ? `\n <div class=\"color-picker-slider-value\">\n ${sliderValueEditable ? `\n <input type=\"number\" step=\"1\" min=\"0\" max=\"255\" class=\"color-picker-value-blue\" data-color-index=\"2\">\n ` : `\n <span class=\"color-picker-value-blue\"></span>\n `}\n </div>\n ` : ''}\n </div>\n </div>\n `;\n },\n init(self) {\n self.redRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-red'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [value, self.value.rgb[1], self.value.rgb[2]] });\n },\n },\n });\n self.greenRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-green'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], value, self.value.rgb[2]] });\n },\n },\n });\n self.blueRangeSlider = self.app.range.create({\n el: self.$el.find('.color-picker-slider-blue'),\n min: 0,\n max: 255,\n step: 1,\n value: 0,\n on: {\n change(range, value) {\n self.setValue({ rgb: [self.value.rgb[0], self.value.rgb[1], value] });\n },\n },\n });\n\n function handleInputChange(e) {\n const rgb = [...self.value.rgb];\n const index = parseInt($(e.target).attr('data-color-index'), 10);\n let value = parseInt(e.target.value, 10);\n if (Number.isNaN(value)) {\n e.target.value = rgb[index];\n return;\n }\n value = Math.max(0, Math.min(255, value));\n rgb[index] = value;\n self.setValue({ rgb });\n }\n\n self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n\n self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {\n self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);\n };\n },\n update(self) {\n const {\n app,\n value,\n redRangeSlider,\n greenRangeSlider,\n blueRangeSlider,\n } = self;\n\n const { sliderValue, sliderValueEditable } = self.params;\n\n const { rgb } = value;\n\n redRangeSlider.value = rgb[0];\n greenRangeSlider.value = rgb[1];\n blueRangeSlider.value = rgb[2];\n\n redRangeSlider.layout();\n greenRangeSlider.layout();\n blueRangeSlider.layout();\n\n redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`);\n\n const direction = app.rtl ? 'to left' : 'to right';\n\n redRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(0, ${rgb[1]}, ${rgb[2]}), rgb(255, ${rgb[1]}, ${rgb[2]}))`);\n greenRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, 0, ${rgb[2]}), rgb(${rgb[0]}, 255, ${rgb[2]}))`);\n blueRangeSlider.$el.find('.range-bar').css('background-image', `linear-gradient(${direction}, rgb(${rgb[0]}, ${rgb[1]}, 0), rgb(${rgb[0]}, ${rgb[1]}, 255))`);\n\n if (sliderValue && sliderValueEditable) {\n self.$el.find('input.color-picker-value-red').val(rgb[0]);\n self.$el.find('input.color-picker-value-green').val(rgb[1]);\n self.$el.find('input.color-picker-value-blue').val(rgb[2]);\n } else if (sliderValue) {\n self.$el.find('span.color-picker-value-red').text(rgb[0]);\n self.$el.find('span.color-picker-value-green').text(rgb[1]);\n self.$el.find('span.color-picker-value-blue').text(rgb[2]);\n }\n },\n destroy(self) {\n if (self.redRangeSlider && self.redRangeSlider.destroy) {\n self.redRangeSlider.destroy();\n }\n if (self.greenRangeSlider && self.greenRangeSlider.destroy) {\n self.greenRangeSlider.destroy();\n }\n if (self.blueRangeSlider && self.blueRangeSlider.destroy) {\n self.blueRangeSlider.destroy();\n }\n\n delete self.redRangeSlider;\n delete self.greenRangeSlider;\n delete self.blueRangeSlider;\n\n if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();\n delete self.destroyRgbSlidersEvents;\n },\n};\n","import $ from 'dom7';\n\nexport default {\n render() {\n return `\n <div class=\"color-picker-module color-picker-module-sb-spectrum\">\n <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n <div class=\"color-picker-sb-spectrum-handle\"></div>\n </div>\n </div>\n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['sb-spectrum'].update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n\n self.$el.find('.color-picker-sb-spectrum')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el.find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../../utils/utils';\n\nexport default {\n render() {\n return `\n <div class=\"color-picker-module color-picker-module-hs-spectrum\">\n <div class=\"color-picker-hs-spectrum\">\n <div class=\"color-picker-hs-spectrum-handle\"></div>\n </div>\n </div>\n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHSFromSpecterCoords(x, y) {\n let h = (x - specterRect.left) / specterRect.width * 360;\n let s = (y - specterRect.top) / specterRect.height;\n h = Math.max(0, Math.min(360, h));\n s = 1 - Math.max(0, Math.min(1, s));\n\n self.setValue({ hsb: [h, s, self.value.hsb[2]] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n setHSFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();\n }\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setHSFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');\n }\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules['hs-spectrum'].update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroySpectrumEvents = function destroySpectrumEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;\n\n const hslBright = Utils.colorHsbToHsl(hsb[0], hsb[1], 1);\n\n self.$el.find('.color-picker-hs-spectrum-handle')\n .css('background-color', `hsl(${hslBright[0]}, ${hslBright[1] * 100}%, ${hslBright[2] * 100}%)`)\n .transform(`translate(${specterWidth * (hsb[0] / 360)}px, ${specterHeight * (1 - hsb[1])}px)`);\n },\n destroy(self) {\n if (self.destroySpectrumEvents) self.destroySpectrumEvents();\n delete self.destroySpectrumEvents;\n },\n};\n","import $ from 'dom7';\n\nfunction svgWheelCircles() {\n const total = 256;\n let circles = '';\n for (let i = total; i > 0; i -= 1) {\n const angle = i * Math.PI / (total / 2);\n const hue = 360 / total * i;\n circles += `<circle cx=\"${150 - Math.sin(angle) * 125}\" cy=\"${150 - Math.cos(angle) * 125}\" r=\"25\" fill=\"hsl(${hue}, 100%, 50%)\"></circle>`;\n }\n return circles;\n}\nexport default {\n render() {\n return `\n <div class=\"color-picker-module color-picker-module-wheel\">\n <div class=\"color-picker-wheel\">\n <svg viewBox=\"0 0 300 300\" width=\"300\" height=\"300\">${svgWheelCircles()}</svg>\n <div class=\"color-picker-wheel-handle\"></div>\n <div class=\"color-picker-sb-spectrum\" style=\"background-color: hsl(0, 100%, 50%)\">\n <div class=\"color-picker-sb-spectrum-handle\"></div>\n </div>\n </div>\n </div>\n `;\n },\n init(self) {\n const { app } = self;\n\n let isTouched;\n let isMoved;\n let touchStartX;\n let touchStartY;\n let touchCurrentX;\n let touchCurrentY;\n\n let wheelRect;\n let wheelIsTouched;\n let wheelHandleIsTouched;\n let specterRect;\n let specterIsTouched;\n let specterHandleIsTouched;\n\n const { $el } = self;\n\n function setHueFromWheelCoords(x, y) {\n const wheelCenterX = wheelRect.left + wheelRect.width / 2;\n const wheelCenterY = wheelRect.top + wheelRect.height / 2;\n const angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);\n let angleDeg = angleRad * 180 / Math.PI + 90;\n if (angleDeg < 0) angleDeg += 360;\n angleDeg = 360 - angleDeg;\n self.setValue({ hue: angleDeg });\n }\n function setSBFromSpecterCoords(x, y) {\n let s = (x - specterRect.left) / specterRect.width;\n let b = (y - specterRect.top) / specterRect.height;\n s = Math.max(0, Math.min(1, s));\n b = 1 - Math.max(0, Math.min(1, b));\n\n self.setValue({ hsb: [self.value.hue, s, b] });\n }\n\n function handleTouchStart(e) {\n if (isMoved || isTouched) return;\n touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentX = touchStartX;\n touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n touchCurrentY = touchStartY;\n const $targetEl = $(e.target);\n wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;\n wheelIsTouched = $targetEl.closest('circle').length > 0;\n specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;\n if (!specterHandleIsTouched) {\n specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;\n }\n if (wheelIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n setHueFromWheelCoords(touchStartX, touchStartY);\n }\n if (specterIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n setSBFromSpecterCoords(touchStartX, touchStartY);\n }\n if (specterHandleIsTouched || specterIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');\n }\n }\n function handleTouchMove(e) {\n if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;\n touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n e.preventDefault();\n if (!isMoved) {\n // First move\n isMoved = true;\n if (wheelHandleIsTouched) {\n wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();\n }\n if (specterHandleIsTouched) {\n specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();\n }\n }\n if (wheelIsTouched || wheelHandleIsTouched) {\n setHueFromWheelCoords(touchCurrentX, touchCurrentY);\n }\n if (specterIsTouched || specterHandleIsTouched) {\n setSBFromSpecterCoords(touchCurrentX, touchCurrentY);\n }\n }\n function handleTouchEnd() {\n isMoved = false;\n if (specterIsTouched || specterHandleIsTouched) {\n $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');\n }\n wheelIsTouched = false;\n wheelHandleIsTouched = false;\n specterIsTouched = false;\n specterHandleIsTouched = false;\n }\n\n function handleResize() {\n self.modules.wheel.update(self);\n }\n\n const passiveListener = app.touchEvents.start === 'touchstart' && app.support.passiveListener ? { passive: true, capture: false } : false;\n\n self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);\n app.on('touchmove:active', handleTouchMove);\n app.on('touchend:passive', handleTouchEnd);\n app.on('resize', handleResize);\n\n self.destroyWheelEvents = function destroyWheelEvents() {\n self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);\n app.off('touchmove:active', handleTouchMove);\n app.off('touchend:passive', handleTouchEnd);\n app.off('resize', handleResize);\n };\n },\n update(self) {\n const {\n value,\n } = self;\n\n const { hsl, hsb } = value;\n\n const specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;\n const specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;\n const wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;\n const wheelHalfSize = wheelSize / 2;\n const angleRad = value.hue * Math.PI / 180;\n const handleSize = wheelSize / 6;\n const handleHalfSize = handleSize / 2;\n const tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n const tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;\n self.$el.find('.color-picker-wheel-handle')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`)\n .transform(`translate(${tX}px, ${tY}px)`);\n\n self.$el.find('.color-picker-sb-spectrum')\n .css('background-color', `hsl(${hsl[0]}, 100%, 50%)`);\n\n self.$el.find('.color-picker-sb-spectrum-handle')\n .css('background-color', `hsl(${hsl[0]}, ${hsl[1] * 100}%, ${hsl[2] * 100}%)`)\n .transform(`translate(${specterWidth * hsb[1]}px, ${specterHeight * (1 - hsb[2])}px)`);\n },\n destroy(self) {\n if (self.destroyWheelEvents) self.destroyWheelEvents();\n delete self.destroyWheelEvents;\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nimport moduleAlphaSlider from './modules/alpha-slider';\nimport moduleCurrentColor from './modules/current-color';\nimport moduleHex from './modules/hex';\nimport moduleHsbSliders from './modules/hsb-sliders';\nimport moduleHueSlider from './modules/hue-slider';\nimport moduleBrightnessSlider from './modules/brightness-slider';\nimport modulePalette from './modules/palette';\nimport moduleInitialCurrentColors from './modules/initial-current-colors';\nimport moduleRgbBars from './modules/rgb-bars';\nimport moduleRgbSliders from './modules/rgb-sliders';\nimport moduleSbSpectrum from './modules/sb-spectrum';\nimport moduleHsSpectrum from './modules/hs-spectrum';\nimport moduleWheel from './modules/wheel';\n\nclass ColorPicker extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const self = this;\n\n self.params = Utils.extend({}, app.params.colorPicker, params);\n\n let $containerEl;\n if (self.params.containerEl) {\n $containerEl = $(self.params.containerEl);\n if ($containerEl.length === 0) return self;\n }\n\n let $inputEl;\n if (self.params.inputEl) {\n $inputEl = $(self.params.inputEl);\n }\n\n let $targetEl;\n if (self.params.targetEl) {\n $targetEl = $(self.params.targetEl);\n }\n\n Utils.extend(self, {\n app,\n $containerEl,\n containerEl: $containerEl && $containerEl[0],\n inline: $containerEl && $containerEl.length > 0,\n $inputEl,\n inputEl: $inputEl && $inputEl[0],\n $targetEl,\n targetEl: $targetEl && $targetEl[0],\n initialized: false,\n opened: false,\n url: self.params.url,\n modules: {\n 'alpha-slider': moduleAlphaSlider,\n 'current-color': moduleCurrentColor,\n 'hex': moduleHex, // eslint-disable-line\n 'hsb-sliders': moduleHsbSliders,\n 'hue-slider': moduleHueSlider,\n 'brightness-slider': moduleBrightnessSlider,\n 'palette': modulePalette, // eslint-disable-line\n 'initial-current-colors': moduleInitialCurrentColors,\n 'rgb-bars': moduleRgbBars,\n 'rgb-sliders': moduleRgbSliders,\n 'sb-spectrum': moduleSbSpectrum,\n 'hs-spectrum': moduleHsSpectrum,\n 'wheel': moduleWheel, // eslint-disable-line\n },\n });\n\n function onInputClick() {\n self.open();\n }\n function onInputFocus(e) {\n e.preventDefault();\n }\n function onTargetClick() {\n self.open();\n }\n function onHtmlClick(e) {\n if (self.destroyed || !self.params) return;\n if (self.params.openIn === 'page') return;\n const $clickTargetEl = $(e.target);\n if (!self.opened || self.closing) return;\n if ($clickTargetEl.closest('[class*=\"backdrop\"]').length) return;\n if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;\n if ($inputEl && $inputEl.length > 0) {\n if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {\n self.close();\n }\n } else if ($(e.target).closest('.sheet-modal').length === 0) {\n self.close();\n }\n }\n\n // Events\n Utils.extend(self, {\n attachInputEvents() {\n self.$inputEl.on('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.on('focus mousedown', onInputFocus);\n }\n },\n detachInputEvents() {\n self.$inputEl.off('click', onInputClick);\n if (self.params.inputReadOnly) {\n self.$inputEl.off('focus mousedown', onInputFocus);\n }\n },\n attachTargetEvents() {\n self.$targetEl.on('click', onTargetClick);\n },\n detachTargetEvents() {\n self.$targetEl.off('click', onTargetClick);\n },\n attachHtmlEvents() {\n app.on('click', onHtmlClick);\n },\n detachHtmlEvents() {\n app.off('click', onHtmlClick);\n },\n });\n\n self.init();\n\n return self;\n }\n\n get view() {\n const { $inputEl, $targetEl, app, params } = this;\n let view;\n if (params.view) {\n view = params.view;\n } else {\n if ($inputEl) {\n view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;\n }\n if (!view && $targetEl) {\n view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;\n }\n }\n if (!view) view = app.views.main;\n\n return view;\n }\n\n attachEvents() {\n const self = this;\n self.centerModules = self.centerModules.bind(self);\n if (self.params.centerModules) {\n self.app.on('resize', self.centerModules);\n }\n }\n\n detachEvents() {\n const self = this;\n if (self.params.centerModules) {\n self.app.off('resize', self.centerModules);\n }\n }\n\n centerModules() {\n const self = this;\n if (!self.opened || !self.$el || self.inline) return;\n const $pageContentEl = self.$el.find('.page-content');\n if (!$pageContentEl.length) return;\n const { scrollHeight, offsetHeight } = $pageContentEl[0];\n if (scrollHeight <= offsetHeight) {\n $pageContentEl.addClass('justify-content-center');\n } else {\n $pageContentEl.removeClass('justify-content-center');\n }\n }\n\n initInput() {\n const self = this;\n if (!self.$inputEl) return;\n if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);\n }\n\n getModalType() {\n const self = this;\n const { app, modal, params } = self;\n const { openIn, openInPhone } = params;\n if (modal && modal.type) return modal.type;\n if (openIn !== 'auto') return openIn;\n if (self.inline) return null;\n if (app.device.ios) {\n return app.device.ipad ? 'popover' : openInPhone;\n }\n if (app.width >= 768 || (app.device.desktop && app.theme === 'aurora')) {\n return 'popover';\n }\n\n return openInPhone;\n }\n\n formatValue() {\n const self = this;\n const { value } = self;\n if (self.params.formatValue) {\n return self.params.formatValue.call(self, value);\n }\n return value.hex;\n }\n\n // eslint-disable-next-line\n normalizeHsValues(arr) {\n return [\n Math.floor(arr[0] * 10) / 10,\n Math.floor(arr[1] * 1000) / 1000,\n Math.floor(arr[2] * 1000) / 1000,\n ];\n }\n\n setValue(value = {}, updateModules = true) {\n const self = this;\n if (typeof value === 'undefined') return;\n\n let {\n hex,\n rgb,\n hsl,\n hsb,\n alpha = 1,\n hue,\n rgba,\n hsla,\n } = (self.value || {});\n\n const needChangeEvent = self.value || (!self.value && !self.params.value);\n let valueChanged;\n Object.keys(value).forEach((k) => {\n if (!self.value || typeof self.value[k] === 'undefined') {\n valueChanged = true;\n return;\n }\n const v = value[k];\n if (Array.isArray(v)) {\n v.forEach((subV, subIndex) => {\n if (subV !== self.value[k][subIndex]) {\n valueChanged = true;\n }\n });\n } else if (v !== self.value[k]) {\n valueChanged = true;\n }\n });\n if (!valueChanged) return;\n\n if (value.rgb || value.rgba) {\n const [r, g, b, a = alpha] = (value.rgb || value.rgba);\n rgb = [r, g, b];\n hex = Utils.colorRgbToHex(...rgb);\n hsl = Utils.colorRgbToHsl(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsl || value.hsla) {\n const [h, s, l, a = alpha] = (value.hsl || value.hsla);\n hsl = [h, s, l];\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hsb) {\n const [h, s, b, a = alpha] = value.hsb;\n hsb = [h, s, b];\n hsl = Utils.colorHsbToHsl(...hsb);\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n alpha = a;\n rgba = [rgb[0], rgb[1], rgb[2], a];\n hsla = [hsl[0], hsl[1], hsl[2], a];\n }\n\n if (value.hex) {\n rgb = Utils.colorHexToRgb(value.hex);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = Utils.colorRgbToHsl(...rgb);\n hsb = Utils.colorHslToHsb(...hsl);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n\n if (typeof value.alpha !== 'undefined') {\n alpha = value.alpha;\n if (typeof rgb !== 'undefined') {\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n }\n if (typeof hsl !== 'undefined') {\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n }\n\n if (typeof value.hue !== 'undefined') {\n const [h, s, l] = hsl; // eslint-disable-line\n hsl = [value.hue, s, l];\n hsb = Utils.colorHslToHsb(...hsl);\n rgb = Utils.colorHslToRgb(...hsl);\n hex = Utils.colorRgbToHex(...rgb);\n hsl = self.normalizeHsValues(hsl);\n hsb = self.normalizeHsValues(hsb);\n hue = hsb[0];\n rgba = [rgb[0], rgb[1], rgb[2], alpha];\n hsla = [hsl[0], hsl[1], hsl[2], alpha];\n }\n self.value = {\n hex,\n alpha,\n hue,\n rgb,\n hsl,\n hsb,\n rgba,\n hsla,\n };\n if (!self.initialValue) self.initialValue = Utils.extend({}, self.value);\n self.updateValue(needChangeEvent);\n if (self.opened && updateModules) {\n self.updateModules();\n }\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n updateValue(fireEvents = true) {\n const self = this;\n const { $inputEl, value, $targetEl } = self;\n if ($targetEl && self.params.targetElSetBackgroundColor) {\n const { rgba } = value;\n $targetEl.css('background-color', `rgba(${rgba.join(', ')})`);\n }\n if (fireEvents) {\n self.emit('local::change colorPickerChange', self, value);\n }\n\n if ($inputEl && $inputEl.length) {\n const inputValue = self.formatValue(value);\n if ($inputEl && $inputEl.length) {\n $inputEl.val(inputValue);\n if (fireEvents) {\n $inputEl.trigger('change');\n }\n }\n }\n }\n\n updateModules() {\n const self = this;\n const { modules } = self;\n self.params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].update) {\n modules[m].update(self);\n } else if (m && m.update) {\n m.update(self);\n }\n });\n }\n\n update() {\n const self = this;\n self.updateModules();\n }\n\n renderPicker() {\n const self = this;\n const { params, modules } = self;\n let html = '';\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].render) {\n html += modules[m].render(self);\n } else if (m && m.render) {\n html += m.render(self);\n }\n });\n\n return html;\n }\n\n renderNavbar() {\n const self = this;\n if (self.params.renderNavbar) {\n return self.params.renderNavbar.call(self, self);\n }\n const { openIn, navbarTitleText, navbarBackLinkText, navbarCloseText } = self.params;\n return `\n <div class=\"navbar\">\n <div class=\"navbar-bg\"></div>\n <div class=\"navbar-inner sliding\">\n ${openIn === 'page' ? `\n <div class=\"left\">\n <a class=\"link back\">\n <i class=\"icon icon-back\"></i>\n <span class=\"if-not-md\">${navbarBackLinkText}</span>\n </a>\n </div>\n ` : ''}\n <div class=\"title\">${navbarTitleText}</div>\n ${openIn !== 'page' ? `\n <div class=\"right\">\n <a class=\"link popup-close\" data-popup=\".color-picker-popup\">${navbarCloseText}</a>\n </div>\n ` : ''}\n </div>\n </div>\n `.trim();\n }\n\n renderToolbar() {\n const self = this;\n if (self.params.renderToolbar) {\n return self.params.renderToolbar.call(self, self);\n }\n return `\n <div class=\"toolbar toolbar-top no-shadow\">\n <div class=\"toolbar-inner\">\n <div class=\"left\"></div>\n <div class=\"right\">\n <a class=\"link sheet-close popover-close\" data-sheet=\".color-picker-sheet-modal\" data-popover=\".color-picker-popover\">${self.params.toolbarCloseText}</a>\n </div>\n </div>\n </div>\n `.trim();\n }\n\n renderInline() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n const inlineHtml = `\n <div class=\"color-picker color-picker-inline ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}\">\n ${self.renderPicker()}\n </div>\n `.trim();\n\n return inlineHtml;\n }\n\n renderSheet() {\n const self = this;\n const { cssClass, toolbarSheet, groupedModules } = self.params;\n const sheetHtml = `\n <div class=\"sheet-modal color-picker color-picker-sheet-modal ${groupedModules ? 'color-picker-grouped-modules' : ''} ${cssClass || ''}\">\n ${toolbarSheet ? self.renderToolbar() : ''}\n <div class=\"sheet-modal-inner\">\n <div class=\"page-content\">\n ${self.renderPicker()}\n </div>\n </div>\n </div>\n `.trim();\n\n return sheetHtml;\n }\n\n renderPopover() {\n const self = this;\n const { cssClass, toolbarPopover, groupedModules } = self.params;\n const popoverHtml = `\n <div class=\"popover color-picker-popover ${cssClass || ''}\">\n <div class=\"popover-inner\">\n <div class=\"color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}\">\n ${toolbarPopover ? self.renderToolbar() : ''}\n <div class=\"page-content\">\n ${self.renderPicker()}\n </div>\n </div>\n </div>\n </div>\n `.trim();\n\n return popoverHtml;\n }\n\n renderPopup() {\n const self = this;\n const { cssClass, navbarPopup, groupedModules } = self.params;\n const popupHtml = `\n <div class=\"popup color-picker-popup ${cssClass || ''}\">\n <div class=\"page\">\n ${navbarPopup ? self.renderNavbar() : ''}\n <div class=\"color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}\">\n <div class=\"page-content\">\n ${self.renderPicker()}\n </div>\n </div>\n </div>\n </div>\n `.trim();\n\n return popupHtml;\n }\n\n renderPage() {\n const self = this;\n const { cssClass, groupedModules } = self.params;\n const pageHtml = `\n <div class=\"page color-picker-page ${cssClass || ''}\" data-name=\"color-picker-page\">\n ${self.renderNavbar()}\n <div class=\"color-picker ${groupedModules ? 'color-picker-grouped-modules' : ''}\">\n <div class=\"page-content\">\n ${self.renderPicker()}\n </div>\n </div>\n </div>\n `.trim();\n return pageHtml;\n }\n\n // eslint-disable-next-line\n render() {\n const self = this;\n const { params } = self;\n if (params.render) return params.render.call(self);\n if (self.inline) return self.renderInline();\n if (params.openIn === 'page') {\n return self.renderPage();\n }\n\n const modalType = self.getModalType();\n if (modalType === 'popover') return self.renderPopover();\n if (modalType === 'sheet') return self.renderSheet();\n if (modalType === 'popup') return self.renderPopup();\n }\n\n onOpen() {\n const self = this;\n const { initialized, $el, app, $inputEl, inline, value, params, modules } = self;\n self.closing = false;\n self.opened = true;\n self.opening = true;\n\n // Init main events\n self.attachEvents();\n\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].init) {\n modules[m].init(self);\n } else if (m && m.init) {\n m.init(self);\n }\n });\n\n const updateValue = !value && params.value;\n\n // Set value\n if (!initialized) {\n if (value) self.setValue(value);\n else if (params.value) {\n self.setValue(params.value, false);\n } else if (!params.value) {\n self.setValue({ hex: '#ff0000' }, false);\n }\n } else if (value) {\n self.initialValue = Utils.extend({}, value);\n self.setValue(value, false);\n }\n\n // Update input value\n if (updateValue) self.updateValue();\n self.updateModules();\n\n // Center modules\n if (params.centerModules) {\n self.centerModules();\n }\n\n // Extra focus\n if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {\n $inputEl.trigger('focus');\n }\n\n self.initialized = true;\n\n // Trigger events\n if ($el) {\n $el.trigger('colorpicker:open');\n }\n if ($inputEl) {\n $inputEl.trigger('colorpicker:open');\n }\n self.emit('local::open colorPickerOpen', self);\n }\n\n onOpened() {\n const self = this;\n self.opening = false;\n if (self.$el) {\n self.$el.trigger('colorpicker:opened');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:opened');\n }\n self.emit('local::opened colorPickerOpened', self);\n }\n\n onClose() {\n const self = this;\n const { app, params, modules } = self;\n self.opening = false;\n self.closing = true;\n\n // Detach events\n self.detachEvents();\n\n if (self.$inputEl && app.theme === 'md') {\n self.$inputEl.trigger('blur');\n }\n params.modules.forEach((m) => {\n if (typeof m === 'string' && modules[m] && modules[m].destroy) {\n modules[m].destroy(self);\n } else if (m && m.destroy) {\n m.destroy(self);\n }\n });\n\n if (self.$el) {\n self.$el.trigger('colorpicker:close');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:close');\n }\n self.emit('local::close colorPickerClose', self);\n }\n\n onClosed() {\n const self = this;\n self.opened = false;\n self.closing = false;\n\n if (!self.inline) {\n Utils.nextTick(() => {\n if (self.modal && self.modal.el && self.modal.destroy) {\n if (!self.params.routableModals) {\n self.modal.destroy();\n }\n }\n delete self.modal;\n });\n }\n if (self.$el) {\n self.$el.trigger('colorpicker:closed');\n }\n if (self.$inputEl) {\n self.$inputEl.trigger('colorpicker:closed');\n }\n self.emit('local::closed colorPickerClosed', self);\n }\n\n open() {\n const self = this;\n const { app, opened, inline, $inputEl, $targetEl, params } = self;\n if (opened) return;\n\n if (inline) {\n self.$el = $(self.render());\n self.$el[0].f7ColorPicker = self;\n self.$containerEl.append(self.$el);\n self.onOpen();\n self.onOpened();\n return;\n }\n\n const colorPickerContent = self.render();\n\n if (params.openIn === 'page') {\n self.view.router.navigate({\n url: self.url,\n route: {\n content: colorPickerContent,\n path: self.url,\n on: {\n pageBeforeIn(e, page) {\n self.$el = page.$el.find('.color-picker');\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n pageAfterIn() {\n self.onOpened();\n },\n pageBeforeOut() {\n self.onClose();\n },\n pageAfterOut() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n },\n });\n } else {\n const modalType = self.getModalType();\n let backdrop = params.backdrop;\n if (backdrop === null || typeof backdrop === 'undefined') {\n if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;\n if (modalType === 'popup') backdrop = true;\n }\n const modalParams = {\n targetEl: ($targetEl || $inputEl),\n scrollToEl: params.scrollToInput ? ($targetEl || $inputEl) : undefined,\n content: colorPickerContent,\n backdrop,\n closeByBackdropClick: params.closeByBackdropClick,\n on: {\n open() {\n const modal = this;\n self.modal = modal;\n self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;\n self.$el[0].f7ColorPicker = self;\n self.onOpen();\n },\n opened() { self.onOpened(); },\n close() { self.onClose(); },\n closed() {\n self.onClosed();\n if (self.$el && self.$el[0]) {\n self.$el[0].f7ColorPicker = null;\n delete self.$el[0].f7ColorPicker;\n }\n },\n },\n };\n if (modalType === 'popup') {\n modalParams.push = params.popupPush;\n modalParams.swipeToClose = params.popupSwipeToClose;\n }\n if (modalType === 'sheet') {\n modalParams.push = params.sheetPush;\n modalParams.swipeToClose = params.sheetSwipeToClose;\n }\n if (params.routableModals && self.view) {\n self.view.router.navigate({\n url: self.url,\n route: {\n path: self.url,\n [modalType]: modalParams,\n },\n });\n } else {\n self.modal = app[modalType].create(modalParams);\n self.modal.open();\n }\n }\n }\n\n close() {\n const self = this;\n const { opened, inline } = self;\n if (!opened) return;\n if (inline) {\n self.onClose();\n self.onClosed();\n return;\n }\n if ((self.params.routableModals && self.view) || self.params.openIn === 'page') {\n self.view.router.back();\n } else {\n self.modal.close();\n }\n }\n\n init() {\n const self = this;\n\n self.initInput();\n\n if (self.inline) {\n self.open();\n self.emit('local::init colorPickerInit', self);\n return;\n }\n\n if (!self.initialized && self.params.value) {\n self.setValue(self.params.value);\n }\n\n // Attach input Events\n if (self.$inputEl) {\n self.attachInputEvents();\n }\n if (self.$targetEl) {\n self.attachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.attachHtmlEvents();\n }\n self.emit('local::init colorPickerInit', self);\n }\n\n destroy() {\n const self = this;\n if (self.destroyed) return;\n const { $el } = self;\n self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);\n if ($el) $el.trigger('colorpicker:beforedestroy');\n\n self.close();\n\n // Detach Events\n self.detachEvents();\n if (self.$inputEl) {\n self.detachInputEvents();\n }\n if (self.$targetEl) {\n self.detachTargetEvents();\n }\n if (self.params.closeByOutsideClick) {\n self.detachHtmlEvents();\n }\n\n if ($el && $el.length) delete self.$el[0].f7ColorPicker;\n Utils.deleteProps(self);\n self.destroyed = true;\n }\n}\n\nexport default ColorPicker;\n","import $ from 'dom7';\nimport ConstructorMethods from '../../utils/constructor-methods';\nimport ColorPicker from './color-picker-class';\n\nexport default {\n name: 'colorPicker',\n static: {\n ColorPicker,\n },\n create() {\n const app = this;\n app.colorPicker = ConstructorMethods({\n defaultSelector: '.color-picker',\n constructor: ColorPicker,\n app,\n domProp: 'f7ColorPicker',\n });\n app.colorPicker.close = function close(el = '.color-picker') {\n const $el = $(el);\n if ($el.length === 0) return;\n const colorPicker = $el[0].f7ColorPicker;\n if (!colorPicker || (colorPicker && !colorPicker.opened)) return;\n colorPicker.close();\n };\n },\n params: {\n colorPicker: {\n // Color picker settings\n value: null,\n modules: [\n 'wheel',\n ],\n palette: [\n ['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'],\n ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'],\n ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'],\n ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'],\n ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'],\n ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'],\n ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'],\n ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100'],\n ],\n groupedModules: false,\n centerModules: true,\n\n sliderLabel: false,\n sliderValue: false,\n sliderValueEdiable: false,\n\n barLabel: false,\n barValue: false,\n barValueEdiable: false,\n\n hexLabel: false,\n hexValueEditable: false,\n\n redLabelText: 'R',\n greenLabelText: 'G',\n blueLabelText: 'B',\n hueLabelText: 'H',\n saturationLabelText: 'S',\n brightnessLabelText: 'B',\n hexLabelText: 'HEX',\n alphaLabelText: 'A',\n\n // Common opener settings\n containerEl: null,\n openIn: 'popover', // or 'popover' or 'sheet' or 'popup' or 'page' or 'auto'\n openInPhone: 'popup', // or 'popover' or 'sheet' or 'popup' or 'page'\n popupPush: false,\n popupSwipeToClose: undefined,\n sheetPush: false,\n sheetSwipeToClose: undefined,\n formatValue: null,\n targetEl: null,\n targetElSetBackgroundColor: false,\n inputEl: null,\n inputReadOnly: true,\n closeByOutsideClick: true,\n scrollToInput: true,\n toolbarSheet: true,\n toolbarPopover: false,\n toolbarCloseText: 'Done',\n navbarPopup: true,\n navbarCloseText: 'Done',\n navbarTitleText: 'Color',\n navbarBackLinkText: 'Back',\n cssClass: null,\n routableModals: true,\n view: null,\n url: 'color/',\n backdrop: null,\n closeByBackdropClick: true,\n // Render functions\n renderToolbar: null,\n renderNavbar: null,\n renderInline: null,\n renderPopover: null,\n renderSheet: null,\n renderPopup: null,\n render: null,\n },\n },\n};\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\n\nconst Treeview = {\n open(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.addClass('treeview-item-opened');\n $itemEl.trigger('treeview:open');\n app.emit('treeviewOpen', $itemEl[0]);\n function done(cancel) {\n if (cancel) {\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n } else {\n $itemEl[0].f7TreeviewChildrenLoaded = true;\n }\n $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-preloader').remove();\n }\n\n if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {\n $itemEl.trigger('treeview:loadchildren', done);\n app.emit('treeviewLoadChildren', $itemEl[0], done);\n $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');\n $itemEl.find('.treeview-item-root').prepend(`<div class=\"preloader treeview-preloader\">${Utils[`${app.theme}PreloaderContent`]}</div>`);\n }\n },\n close(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n $itemEl.removeClass('treeview-item-opened');\n $itemEl.trigger('treeview:close');\n app.emit('treeviewClose', $itemEl[0]);\n },\n toggle(itemEl) {\n const app = this;\n const $itemEl = $(itemEl).eq(0);\n if (!$itemEl.length) return;\n const wasOpened = $itemEl.hasClass('treeview-item-opened');\n app.treeview[wasOpened ? 'close' : 'open']($itemEl);\n },\n};\n\nexport default {\n name: 'treeview',\n create() {\n const app = this;\n Utils.extend(app, {\n treeview: {\n open: Treeview.open.bind(app),\n close: Treeview.close.bind(app),\n toggle: Treeview.toggle.bind(app),\n },\n });\n },\n clicks: {\n '.treeview-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n if ($clickedEl.parents('.treeview-item-toggle').length) return;\n const $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {\n const app = this;\n const $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);\n if (!$treeviewItemEl.length) return;\n e.preventF7Router = true;\n app.treeview.toggle($treeviewItemEl[0]);\n },\n },\n};\n","import $ from 'dom7';\nimport { window, document } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Framework7Class from '../../utils/class';\n\nconst textEditorButtonsMap = {\n // f7-icon, material-icon, command\n bold: ['bold', 'format_bold', 'bold'],\n italic: ['italic', 'format_italic', 'italic'],\n underline: ['underline', 'format_underlined', 'underline'],\n strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],\n orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],\n unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],\n link: ['link', 'link', 'createLink'],\n image: ['photo', 'image', 'insertImage'],\n paragraph: ['paragraph', '<i class=\"icon\">¶</i>', 'formatBlock.P'],\n h1: ['<i class=\"icon\">H<sub>1</sub></i>', '<i class=\"icon\">H<sub>1</sub></i>', 'formatBlock.H1'],\n h2: ['<i class=\"icon\">H<sub>2</sub></i>', '<i class=\"icon\">H<sub>2</sub></i>', 'formatBlock.H2'],\n h3: ['<i class=\"icon\">H<sub>3</sub></i>', '<i class=\"icon\">H<sub>3</sub></i>', 'formatBlock.H3'],\n alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],\n alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],\n alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],\n alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],\n subscript: ['textformat_subscript', '<i class=\"icon\">A<sub>1</sub></i>', 'subscript'],\n superscript: ['textformat_superscript', '<i class=\"icon\">A<sup>1</sup></i>', 'superscript'],\n indent: ['increase_indent', 'format_indent_increase', 'indent'],\n outdent: ['decrease_indent', 'format_indent_decrease', 'outdent'],\n};\n\nclass TextEditor extends Framework7Class {\n constructor(app, params) {\n super(params, [app]);\n const self = this;\n\n const defaults = Utils.extend({}, app.params.textEditor);\n\n // Extend defaults with modules params\n self.useModulesParams(defaults);\n\n self.params = Utils.extend(defaults, params);\n\n const el = self.params.el;\n if (!el) return self;\n\n const $el = $(el);\n if ($el.length === 0) return self;\n\n if ($el[0].f7TextEditor) return $el[0].f7TextEditor;\n\n let $contentEl = $el.children('.text-editor-content');\n if (!$contentEl.length) {\n $el.append('<div class=\"text-editor-content\" contenteditable></div>');\n $contentEl = $el.children('.text-editor-content');\n }\n\n Utils.extend(self, {\n app,\n $el,\n el: $el[0],\n $contentEl,\n contentEl: $contentEl[0],\n });\n if ('value' in params) {\n self.value = self.params.value;\n }\n\n if (self.params.mode === 'keyboard-toolbar') {\n if (!app.device.cordova && !app.device.android) {\n self.params.mode = 'popover';\n }\n }\n\n if (typeof self.params.buttons === 'string') {\n try {\n self.params.buttons = JSON.parse(self.params.buttons);\n } catch (err) {\n throw new Error('Framework7: TextEditor: wrong \"buttons\" parameter format');\n }\n }\n\n $el[0].f7TextEditor = self;\n\n // Bind\n self.onButtonClick = self.onButtonClick.bind(self);\n self.onFocus = self.onFocus.bind(self);\n self.onBlur = self.onBlur.bind(self);\n self.onInput = self.onInput.bind(self);\n self.onPaste = self.onPaste.bind(self);\n self.onSelectionChange = self.onSelectionChange.bind(self);\n self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);\n\n // Handle Events\n self.attachEvents = function attachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);\n self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.on('click', 'button', self.onButtonClick);\n }\n self.$contentEl.on('paste', self.onPaste);\n self.$contentEl.on('focus', self.onFocus);\n self.$contentEl.on('blur', self.onBlur);\n self.$contentEl.on('input', self.onInput, true);\n $(document).on('selectionchange', self.onSelectionChange);\n };\n self.detachEvents = function detachEvents() {\n if (self.params.mode === 'toolbar') {\n self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);\n }\n if (self.params.mode === 'keyboard-toolbar') {\n self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);\n self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);\n }\n if (self.params.mode === 'popover' && self.popover) {\n self.popover.$el.off('click', 'button', self.onButtonClick);\n }\n self.$contentEl.off('paste', self.onPaste);\n self.$contentEl.off('focus', self.onFocus);\n self.$contentEl.off('blur', self.onBlur);\n self.$contentEl.off('input', self.onInput, true);\n $(document).off('selectionchange', self.onSelectionChange);\n };\n\n // Install Modules\n self.useModules();\n\n // Init\n self.init();\n\n return self;\n }\n\n setValue(newValue) {\n const self = this;\n const currentValue = self.value;\n if (currentValue === newValue) return self;\n self.value = newValue;\n self.$contentEl.html(newValue);\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n return self;\n }\n\n getValue() {\n const self = this;\n return self.value;\n }\n\n createLink() {\n const self = this;\n const currentSelection = window.getSelection();\n const selectedNodes = [];\n let $selectedLinks;\n if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {\n let anchorNode = currentSelection.anchorNode;\n while (anchorNode) {\n selectedNodes.push(anchorNode);\n if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {\n anchorNode = null;\n }\n if (anchorNode) {\n anchorNode = anchorNode.nextSibling;\n }\n }\n $selectedLinks = $(selectedNodes).closest('a').add($(selectedNodes).children('a'));\n }\n if ($selectedLinks && $selectedLinks.length) {\n $selectedLinks.each((linkIndex, linkNode) => {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(linkNode);\n selection.removeAllRanges();\n selection.addRange(range);\n document.execCommand('unlink', false);\n selection.removeAllRanges();\n });\n return self;\n }\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt(self.params.linkUrlText, '', (link) => {\n if (link && link.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('createLink', false, link.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n insertImage() {\n const self = this;\n const currentRange = self.getSelectionRange();\n if (!currentRange) return self;\n const dialog = self.app.dialog.prompt(self.params.imageUrlText, '', (imageUrl) => {\n if (imageUrl && imageUrl.trim().length) {\n self.setSelectionRange(currentRange);\n document.execCommand('insertImage', false, imageUrl.trim());\n }\n });\n dialog.$el.find('input').focus();\n return self;\n }\n\n removePlaceholder() {\n const self = this;\n self.$contentEl.find('.text-editor-placeholder').remove();\n }\n\n insertPlaceholder() {\n const self = this;\n self.$contentEl.append(`<div class=\"text-editor-placeholder\">${self.params.placeholder}</div>`);\n }\n\n onSelectionChange() {\n const self = this;\n if (self.params.mode === 'toolbar') return;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (self.params.mode === 'keyboard-toolbar') {\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n } else {\n self.openKeyboardToolbar();\n }\n return;\n }\n if (self.params.mode === 'popover') {\n const selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;\n if (!selectionIsInContent && !selectionIsInPopover) {\n self.closePopover();\n return;\n }\n if (!selection.isCollapsed && selection.rangeCount) {\n const range = selection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n self.openPopover(rect.x + (window.scrollX || 0), rect.y + (window.scrollY || 0), rect.width, rect.height);\n } else if (selection.isCollapsed) {\n self.closePopover();\n }\n }\n }\n\n onPaste(e) {\n const self = this;\n if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {\n const text = e.clipboardData.getData('text/plain');\n e.preventDefault();\n document.execCommand('insertText', false, text);\n }\n }\n\n onInput() {\n const self = this;\n const value = self.$contentEl.html();\n\n self.$el.trigger('texteditor:input');\n self.emit('local:input textEditorInput', self);\n\n self.value = value;\n self.$el.trigger('texteditor:change', self.value);\n self.emit('local::change textEditorChange', self, self.value);\n }\n\n onFocus() {\n const self = this;\n self.removePlaceholder();\n self.$contentEl.focus();\n self.$el.trigger('texteditor:focus');\n self.emit('local::focus textEditorFocus', self);\n }\n\n onBlur() {\n const self = this;\n if (self.params.placeholder && self.$contentEl.html() === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'popover') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n const inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;\n if (!inPopover && !selectionIsInContent) {\n self.closePopover();\n }\n }\n if (self.params.mode === 'keyboard-toolbar') {\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) {\n self.closeKeyboardToolbar();\n }\n }\n self.$el.trigger('texteditor:blur');\n self.emit('local::blur textEditorBlur', self);\n }\n\n onButtonClick(e) {\n const self = this;\n const selection = window.getSelection();\n const selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;\n if (!selectionIsInContent) return;\n const $buttonEl = $(e.target).closest('button');\n if ($buttonEl.parents('form').length) {\n e.preventDefault();\n }\n const button = $buttonEl.attr('data-button');\n const buttonData = self.params.customButtons && self.params.customButtons[button];\n if (!button || !(textEditorButtonsMap[button] || buttonData)) return;\n $buttonEl.trigger('texteditor:buttonclick', button);\n self.emit('local::buttonClick textEditorButtonClick', self, button);\n if (buttonData) {\n if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);\n return;\n }\n const command = textEditorButtonsMap[button][2];\n if (command === 'createLink') {\n self.createLink();\n return;\n }\n if (command === 'insertImage') {\n self.insertImage();\n return;\n }\n if (command.indexOf('formatBlock') === 0) {\n const tagName = command.split('.')[1];\n const $anchorNode = $(selection.anchorNode);\n if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {\n document.execCommand('formatBlock', false, 'div');\n } else {\n document.execCommand('formatBlock', false, tagName);\n }\n return;\n }\n document.execCommand(command, false);\n }\n\n // eslint-disable-next-line\n getSelectionRange() {\n if (window.getSelection) {\n const sel = window.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n return sel.getRangeAt(0);\n }\n } else if (document.selection && document.selection.createRange) {\n return document.selection.createRange();\n }\n return null;\n }\n\n // eslint-disable-next-line\n setSelectionRange(range) {\n if (range) {\n if (window.getSelection) {\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (document.selection && range.select) {\n range.select();\n }\n }\n }\n\n renderButtons() {\n const self = this;\n let html = '';\n function renderButton(button) {\n const iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';\n if (self.params.customButtons && self.params.customButtons[button]) {\n const buttonData = self.params.customButtons[button];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${buttonData.content || ''}</button>`;\n }\n if (!textEditorButtonsMap[button]) return '';\n const iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];\n return `<button type=\"button\" class=\"text-editor-button\" data-button=\"${button}\">${iconContent.indexOf('<') >= 0 ? iconContent : `<i class=\"${iconClass}\">${iconContent}</i>`}</button>`.trim();\n }\n self.params.buttons.forEach((button, buttonIndex) => {\n if (Array.isArray(button)) {\n button.forEach((b) => {\n html += renderButton(b);\n });\n if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {\n html += '<div class=\"text-editor-button-divider\"></div>';\n }\n } else {\n html += renderButton(button);\n }\n });\n return html;\n }\n\n createToolbar() {\n const self = this;\n self.$el.prepend(`<div class=\"text-editor-toolbar\">${self.renderButtons()}</div>`);\n }\n\n createKeyboardToolbar() {\n const self = this;\n const isDark = self.$el.closest('.theme-dark').length > 0 || self.app.device.prefersColorScheme() === 'dark';\n self.$keyboardToolbarEl = $(`<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar ${isDark ? 'theme-dark' : ''}\"><div class=\"toolbar-inner\">${self.renderButtons()}</div></div>`);\n }\n\n createPopover() {\n const self = this;\n const isDark = self.$el.closest('.theme-dark').length > 0;\n self.popover = self.app.popover.create({\n content: `\n <div class=\"popover ${isDark ? 'theme-light' : 'theme-dark'} text-editor-popover\">\n <div class=\"popover-inner\">${self.renderButtons()}</div>\n </div>\n `,\n closeByOutsideClick: false,\n backdrop: false,\n });\n }\n\n openKeyboardToolbar() {\n const self = this;\n if (self.$keyboardToolbarEl.parent(self.app.root).length) return;\n self.$el.trigger('texteditor:keyboardopen');\n self.emit('local::keyboardOpen textEditorKeyboardOpen', self);\n self.app.root.append(self.$keyboardToolbarEl);\n }\n\n closeKeyboardToolbar() {\n const self = this;\n self.$keyboardToolbarEl.remove();\n self.$el.trigger('texteditor:keyboardclose');\n self.emit('local::keyboardClose textEditorKeyboardClose', self);\n }\n\n openPopover(targetX, targetY, targetWidth, targetHeight) {\n const self = this;\n\n if (!self.popover) return;\n Object.assign(self.popover.params, {\n targetX,\n targetY,\n targetWidth,\n targetHeight,\n });\n clearTimeout(self.popoverTimeout);\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n if (self.popover.opened) {\n self.popover.resize();\n } else {\n self.$el.trigger('texteditor:popoveropen');\n self.emit('local::popoverOpen textEditorPopoverOpen', self);\n self.popover.open();\n }\n }, 400);\n }\n\n closePopover() {\n const self = this;\n clearTimeout(self.popoverTimeout);\n if (!self.popover || !self.popover.opened) return;\n self.popoverTimeout = setTimeout(() => {\n if (!self.popover) return;\n self.$el.trigger('texteditor:popoverclose');\n self.emit('local::popoverClose textEditorPopoverClose', self);\n self.popover.close();\n }, 400);\n }\n\n init() {\n const self = this;\n if (self.value) {\n self.$contentEl.html(self.value);\n } else {\n self.value = self.$contentEl.html();\n }\n if (self.params.placeholder && self.value === '') {\n self.insertPlaceholder();\n }\n if (self.params.mode === 'toolbar') {\n self.createToolbar();\n } else if (self.params.mode === 'popover') {\n self.createPopover();\n } else if (self.params.mode === 'keyboard-toolbar') {\n self.createKeyboardToolbar();\n }\n\n self.attachEvents();\n self.$el.trigger('texteditor:init');\n self.emit('local::init textEditorInit', self);\n return self;\n }\n\n destroy() {\n let self = this;\n self.$el.trigger('texteditor:beforedestroy');\n self.emit('local::beforeDestroy textEditorBeforeDestroy', self);\n self.detachEvents();\n if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {\n self.$keyboardToolbarEl.remove();\n }\n if (self.popover) {\n self.popover.close(false);\n self.popover.destroy();\n }\n delete self.$el[0].f7TextEditor;\n Utils.deleteProps(self);\n self = null;\n }\n}\n\nexport default TextEditor;\n","import $ from 'dom7';\nimport Utils from '../../utils/utils';\nimport TextEditor from './text-editor-class';\nimport ConstructorMethods from '../../utils/constructor-methods';\n\nexport default {\n name: 'textEditor',\n params: {\n textEditor: {\n el: null,\n mode: 'toolbar', // or 'popover'\n value: undefined, // will use html content\n customButtons: null,\n buttons: [\n ['bold', 'italic', 'underline', 'strikeThrough'],\n ['orderedList', 'unorderedList'],\n ['link', 'image'],\n ['paragraph', 'h1', 'h2', 'h3'],\n ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'],\n ['subscript', 'superscript'],\n ['indent', 'outdent'],\n ],\n dividers: true,\n imageUrlText: 'Insert image URL',\n linkUrlText: 'Insert link URL',\n placeholder: null,\n clearFormattingOnPaste: true,\n },\n },\n create() {\n const app = this;\n app.textEditor = Utils.extend(\n ConstructorMethods({\n defaultSelector: '.text-editor',\n constructor: TextEditor,\n app,\n domProp: 'f7TextEditor',\n }),\n );\n },\n static: {\n TextEditor,\n },\n on: {\n tabMounted(tabEl) {\n const app = this;\n $(tabEl).find('.text-editor-init').each((index, editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n });\n },\n tabBeforeRemove(tabEl) {\n $(tabEl).find('.text-editor-init').each((index, editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n pageInit(page) {\n const app = this;\n page.$el.find('.text-editor-init').each((index, editorEl) => {\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n });\n },\n pageBeforeRemove(page) {\n page.$el.find('.text-editor-init').each((index, editorEl) => {\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n });\n },\n },\n vnode: {\n 'text-editor-init': {\n insert(vnode) {\n const app = this;\n const editorEl = vnode.elm;\n const dataset = $(editorEl).dataset();\n app.textEditor.create(Utils.extend({ el: editorEl }, dataset || {}));\n },\n destroy(vnode) {\n const editorEl = vnode.elm;\n if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();\n },\n },\n },\n};\n","import $ from 'dom7';\nimport { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Framework7Class from '../../utils/class';\n\nclass ViAd extends Framework7Class {\n constructor(app, params = {}) {\n super(params, [app]);\n const vi = this;\n if (!window.vi) {\n throw new Error('Framework7: vi SDK not found.');\n }\n\n let orientation;\n if (typeof window.orientation !== 'undefined') {\n orientation = window.orientation === -90 || window.orientation === 90 ? 'horizontal' : 'vertical';\n }\n const defaults = Utils.extend(\n {},\n app.params.vi,\n {\n appId: app.id,\n appVer: app.version,\n language: app.language,\n width: app.width,\n height: app.height,\n os: Device.os,\n osVersion: Device.osVersion,\n orientation,\n }\n );\n\n // Extend defaults with modules params\n vi.useModulesParams(defaults);\n\n vi.params = Utils.extend(defaults, params);\n\n const adParams = {};\n const skipParams = ('on autoplay fallbackOverlay fallbackOverlayText enabled').split(' ');\n Object.keys(vi.params).forEach((paramName) => {\n if (skipParams.indexOf(paramName) >= 0) return;\n const paramValue = vi.params[paramName];\n if ([null, undefined].indexOf(paramValue) >= 0) return;\n adParams[paramName] = paramValue;\n });\n\n if (!vi.params.appId) {\n throw new Error('Framework7: \"app.id\" is required to display an ad. Make sure you have specified it on app initialization.');\n }\n if (!vi.params.placementId) {\n throw new Error('Framework7: \"placementId\" is required to display an ad.');\n }\n\n function onResize() {\n const $viFrame = $('iframe#viAd');\n if ($viFrame.length === 0) return;\n $viFrame\n .css({\n width: `${app.width}px`,\n height: `${app.height}px`,\n });\n }\n\n function removeOverlay() {\n if (!vi.$overlayEl) return;\n vi.$overlayEl.off('click touchstart');\n vi.$overlayEl.remove();\n }\n function createOverlay(videoEl) {\n if (!videoEl) return;\n vi.$overlayEl = $(`\n <div class=\"vi-overlay\">\n ${vi.params.fallbackOverlayText ? `<div class=\"vi-overlay-text\">${vi.params.fallbackOverlayText}</div>` : ''}\n <div class=\"vi-overlay-play-button\"></div>\n </div>\n `.trim());\n\n let touchStartTime;\n vi.$overlayEl.on('touchstart', () => {\n touchStartTime = Utils.now();\n });\n vi.$overlayEl.on('click', () => {\n const timeDiff = Utils.now() - touchStartTime;\n if (timeDiff > 300) return;\n if (videoEl) {\n videoEl.play();\n removeOverlay();\n return;\n }\n vi.start();\n removeOverlay();\n });\n app.root.append(vi.$overlayEl);\n }\n\n // Create ad\n vi.ad = new window.vi.Ad(adParams);\n\n Utils.extend(vi.ad, {\n onAdReady() {\n app.on('resize', onResize);\n vi.emit('local::ready');\n if (vi.params.autoplay) {\n vi.start();\n }\n },\n onAdStarted() {\n vi.emit('local::started');\n },\n onAdClick(targetUrl) {\n vi.emit('local::click', targetUrl);\n },\n onAdImpression() {\n vi.emit('local::impression');\n },\n onAdStopped(reason) {\n app.off('resize', onResize);\n removeOverlay();\n\n vi.emit('local::stopped', reason);\n if (reason === 'complete') {\n vi.emit('local::complete');\n vi.emit('local::completed');\n }\n if (reason === 'userexit') {\n vi.emit('local::userexit');\n }\n vi.destroyed = true;\n },\n onAutoPlayFailed(reason, videoEl) {\n vi.emit('local::autoplayFailed', reason, videoEl);\n if (reason && reason.name && reason.name.indexOf('NotAllowedError') !== -1 && vi.params.fallbackOverlay) {\n createOverlay(videoEl);\n }\n },\n onAdError(msg) {\n removeOverlay();\n app.off('resize', onResize);\n vi.emit('local::error', msg);\n vi.destroyed = true;\n },\n });\n\n vi.init();\n\n Utils.extend(vi, {\n app,\n });\n }\n\n start() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.startAd();\n }\n\n pause() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.pauseAd();\n }\n\n resume() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.resumeAd();\n }\n\n stop() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.stopAd();\n }\n\n init() {\n const vi = this;\n if (vi.destroyed) return;\n if (vi.ad) vi.ad.initAd();\n }\n\n destroy() {\n const vi = this;\n vi.destroyed = true;\n vi.emit('local::beforeDestroy');\n Utils.deleteProps(vi);\n }\n}\n\nexport default ViAd;\n","import { document } from 'ssr-window';\nimport $ from 'dom7';\nimport Device from '../../utils/device';\nimport ViAd from './vi-class';\n\nexport default {\n name: 'vi',\n params: {\n vi: {\n enabled: false,\n autoplay: true,\n fallbackOverlay: true,\n fallbackOverlayText: 'Please watch this ad',\n showMute: true,\n startMuted: (Device.ios || Device.android) && !Device.cordova,\n appId: null,\n appVer: null,\n language: null,\n width: null,\n height: null,\n placementId: 'pltd4o7ibb9rc653x14',\n placementType: 'interstitial',\n videoSlot: null,\n showProgress: true,\n showBranding: true,\n os: null,\n osVersion: null,\n orientation: null,\n age: null,\n gender: null,\n advertiserId: null,\n latitude: null,\n longitude: null,\n accuracy: null,\n storeId: null,\n ip: null,\n manufacturer: null,\n model: null,\n connectionType: null,\n connectionProvider: null,\n },\n },\n create() {\n const app = this;\n app.vi = {\n sdkReady: false,\n createAd(adParams) {\n return new ViAd(app, adParams);\n },\n loadSdk() {\n if (app.vi.sdkReady) return;\n const script = document.createElement('script');\n script.onload = function onload() {\n app.emit('viSdkReady');\n app.vi.sdkReady = true;\n };\n script.src = 'https://c.vi-serve.com/viadshtml/vi.min.js';\n $('head').append(script);\n },\n };\n },\n on: {\n init() {\n const app = this;\n if (app.params.vi.enabled || (app.passedParams.vi && app.passedParams.vi.enabled !== false)) app.vi.loadSdk();\n },\n },\n};\n","/**\n * Framework7 5.7.0\n * Full featured mobile HTML framework for building iOS & Android apps\n * https://framework7.io/\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 25, 2020\n */\n\nimport Template7 from 'template7';\nimport $ from 'dom7';\n\n// F7 Class\nimport Framework7 from './components/app/app-class';\n\n// Import Helpers\nimport Request from './utils/request';\nimport Utils from './utils/utils';\nimport Support from './utils/support';\nimport Device from './utils/device';\n\n// Core Modules\nimport DeviceModule from './modules/device/device';\nimport SupportModule from './modules/support/support';\nimport UtilsModule from './modules/utils/utils';\nimport ResizeModule from './modules/resize/resize';\nimport RequestModule from './modules/request/request';\nimport TouchModule from './modules/touch/touch';\nimport ClicksModule from './modules/clicks/clicks';\nimport RouterModule from './modules/router/router';\nimport RouterTemplateLoaderModule from './modules/router/template-loader'; //NO_LITE\nimport RouterComponentLoaderModule from './modules/router/component-loader'; //NO_LITE\nimport ComponentModule, { Component } from './modules/component/component'; //NO_LITE\nimport HistoryModule from './modules/history/history';\nimport ServiceWorkerModule from './modules/service-worker/service-worker';\n\n// Core Components\nimport Statusbar from './components/statusbar/statusbar';\nimport View from './components/view/view';\nimport Navbar from './components/navbar/navbar';\nimport Toolbar from './components/toolbar/toolbar';\nimport Subnavbar from './components/subnavbar/subnavbar';\nimport TouchRipple from './components/touch-ripple/touch-ripple';\nimport Modal from './components/modal/modal';\nimport Router from './modules/router/router-class';//NO_LITE\n\nimport Appbar from './components/appbar/appbar';\nimport Dialog from './components/dialog/dialog';\nimport Popup from './components/popup/popup';\nimport LoginScreen from './components/login-screen/login-screen';\nimport Popover from './components/popover/popover';\nimport Actions from './components/actions/actions';\nimport Sheet from './components/sheet/sheet';\nimport Toast from './components/toast/toast';\nimport Preloader from './components/preloader/preloader';\nimport Progressbar from './components/progressbar/progressbar';\nimport Sortable from './components/sortable/sortable';\nimport Swipeout from './components/swipeout/swipeout';\nimport Accordion from './components/accordion/accordion';\nimport ContactsList from './components/contacts-list/contacts-list';\nimport VirtualList from './components/virtual-list/virtual-list';\nimport ListIndex from './components/list-index/list-index';\nimport Timeline from './components/timeline/timeline';\nimport Tabs from './components/tabs/tabs';\nimport Panel from './components/panel/panel';\nimport Card from './components/card/card';\nimport Chip from './components/chip/chip';\nimport Form from './components/form/form';\nimport Input from './components/input/input';\nimport Checkbox from './components/checkbox/checkbox';\nimport Radio from './components/radio/radio';\nimport Toggle from './components/toggle/toggle';\nimport Range from './components/range/range';\nimport Stepper from './components/stepper/stepper';\nimport SmartSelect from './components/smart-select/smart-select';\nimport Grid from './components/grid/grid';\nimport Calendar from './components/calendar/calendar';\nimport Picker from './components/picker/picker';\nimport InfiniteScroll from './components/infinite-scroll/infinite-scroll';\nimport PullToRefresh from './components/pull-to-refresh/pull-to-refresh';\nimport Lazy from './components/lazy/lazy';\nimport DataTable from './components/data-table/data-table';\nimport Fab from './components/fab/fab';\nimport Searchbar from './components/searchbar/searchbar';\nimport Messages from './components/messages/messages';\nimport Messagebar from './components/messagebar/messagebar';\nimport Swiper from './components/swiper/swiper';\nimport PhotoBrowser from './components/photo-browser/photo-browser';\nimport Notification from './components/notification/notification';\nimport Autocomplete from './components/autocomplete/autocomplete';\nimport Tooltip from './components/tooltip/tooltip';\nimport Gauge from './components/gauge/gauge';\nimport Skeleton from './components/skeleton/skeleton';\nimport Menu from './components/menu/menu';\nimport ColorPicker from './components/color-picker/color-picker';\nimport Treeview from './components/treeview/treeview';\nimport TextEditor from './components/text-editor/text-editor';\nimport Elevation from './components/elevation/elevation';\nimport Typography from './components/typography/typography';\nimport Vi from './components/vi/vi';\n\nif (\"es\" !== 'es') {\n if (typeof window !== 'undefined') {\n // Template7\n if (!window.Template7) window.Template7 = Template7;\n\n // Dom7\n if (!window.Dom7) window.Dom7 = $;\n }\n}\n\n// Install Core Modules & Components\nRouter.use([ //NO_LITE\n RouterTemplateLoaderModule, //NO_LITE\n RouterComponentLoaderModule, //NO_LITE\n]); //NO_LITE\n\nFramework7.use([\n DeviceModule,\n SupportModule,\n UtilsModule,\n ResizeModule,\n RequestModule,\n TouchModule,\n ClicksModule,\n RouterModule,\n HistoryModule,\n ComponentModule, //NO_LITE\n ServiceWorkerModule,\n Statusbar,\n View,\n Navbar,\n Toolbar,\n Subnavbar,\n TouchRipple,\n Modal,\n Appbar,\n Dialog,\n Popup,\n LoginScreen,\n Popover,\n Actions,\n Sheet,\n Toast,\n Preloader,\n Progressbar,\n Sortable,\n Swipeout,\n Accordion,\n ContactsList,\n VirtualList,\n ListIndex,\n Timeline,\n Tabs,\n Panel,\n Card,\n Chip,\n Form,\n Input,\n Checkbox,\n Radio,\n Toggle,\n Range,\n Stepper,\n SmartSelect,\n Grid,\n Calendar,\n Picker,\n InfiniteScroll,\n PullToRefresh,\n Lazy,\n DataTable,\n Fab,\n Searchbar,\n Messages,\n Messagebar,\n Swiper,\n PhotoBrowser,\n Notification,\n Autocomplete,\n Tooltip,\n Gauge,\n Skeleton,\n Menu,\n ColorPicker,\n Treeview,\n TextEditor,\n Elevation,\n Typography,\n Vi\n]);\n\nexport { Template7, $ as Dom7, Request, Utils, Device, Support, Component };\nexport default Framework7;\n","export default {\n name: 'subnavbar',\n on: {\n pageInit(page) {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n if (page.$el.find('.subnavbar').length) {\n page.$el.addClass('page-with-subnavbar');\n }\n },\n },\n};\n","export default {\n name: 'appbar',\n};\n","export default {\n name: 'contactsList',\n};\n","export default {\n name: 'timeline',\n};\n","export default {\n name: 'chip',\n};\n","export default {\n name: 'checkbox',\n};\n","export default {\n name: 'radio',\n};\n","export default {\n name: 'skeleton',\n};\n","export default {\n name: 'elevation',\n};\n","export default {\n name: 'typography',\n};\n","import Utils from './utils';\n\n// eslint-disable-next-line\nlet f7Instance;\n\nconst f7 = {\n instance: null,\n Framework7: null,\n events: null,\n init(rootEl, params = {}, routes) {\n const { events, Framework7 } = f7;\n const f7Params = Utils.extend({}, params, {\n root: rootEl,\n });\n if (routes && routes.length && !f7Params.routes) f7Params.routes = routes;\n\n const instance = new Framework7(f7Params);\n f7Instance = instance;\n if (instance.initialized) {\n f7.instance = instance;\n f7Instance = instance;\n events.emit('ready', f7.instance);\n } else {\n instance.on('init', () => {\n f7.instance = instance;\n f7Instance = instance;\n events.emit('ready', f7.instance);\n });\n }\n },\n ready(callback) {\n if (!callback) return;\n if (f7.instance) callback(f7.instance);\n else {\n f7.events.once('ready', callback);\n }\n },\n routers: {\n views: [],\n tabs: [],\n modals: null,\n },\n};\nexport { f7Instance };\nexport default f7;\n","const Utils = {\n text(text) {\n if (typeof text === 'undefined' || text === null) return '';\n return text;\n },\n noUndefinedProps(obj) {\n const o = {};\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] !== 'undefined') o[key] = obj[key];\n });\n return o;\n },\n isTrueProp(val) {\n return val === true || val === '';\n },\n isStringProp(val) {\n return typeof val === 'string' && val !== '';\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n now() {\n return Date.now();\n },\n extend(...args) {\n let deep = true;\n let to;\n let from;\n if (typeof args[0] === 'boolean') {\n [deep, to] = args;\n args.splice(0, 2);\n from = args;\n } else {\n [to] = args;\n args.splice(0, 1);\n from = args;\n }\n for (let i = 0; i < from.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (!deep) {\n to[nextKey] = nextSource[nextKey];\n } else if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n flattenArray(...args) {\n const arr = [];\n args.forEach((arg) => {\n if (Array.isArray(arg)) arr.push(...Utils.flattenArray(...arg));\n else arr.push(arg);\n });\n return arr;\n },\n classNames(...args) {\n const classes = [];\n args.forEach((arg) => {\n if (typeof arg === 'object' && arg.constructor === Object) {\n Object.keys(arg).forEach((key) => {\n if (arg[key]) classes.push(key);\n });\n } else if (arg) classes.push(arg);\n });\n const uniqueClasses = [];\n classes.forEach((c) => {\n if (uniqueClasses.indexOf(c) < 0) uniqueClasses.push(c);\n });\n return uniqueClasses.join(' ');\n },\n bindMethods(context, methods = []) {\n for (let i = 0; i < methods.length; i += 1) {\n if (context[methods[i]]) context[methods[i]] = context[methods[i]].bind(context);\n }\n },\n};\nexport default Utils;\n","import Utils from './utils';\n\nconst Mixins = {\n colorProps: {\n color: String,\n colorTheme: String,\n textColor: String,\n bgColor: String,\n borderColor: String,\n rippleColor: String,\n themeDark: Boolean,\n },\n colorClasses(props) {\n const {\n color,\n colorTheme,\n textColor,\n bgColor,\n borderColor,\n rippleColor,\n themeDark,\n } = props;\n\n return {\n 'theme-dark': themeDark,\n [`color-${color}`]: color,\n [`color-theme-${colorTheme}`]: colorTheme,\n [`text-color-${textColor}`]: textColor,\n [`bg-color-${bgColor}`]: bgColor,\n [`border-color-${borderColor}`]: borderColor,\n [`ripple-color-${rippleColor}`]: rippleColor,\n };\n },\n linkIconProps: {\n icon: String,\n iconMaterial: String,\n iconF7: String,\n iconIos: String,\n iconMd: String,\n iconAurora: String,\n iconColor: String,\n iconSize: [String, Number],\n },\n linkRouterProps: {\n back: Boolean,\n external: Boolean,\n force: Boolean,\n animate: {\n type: Boolean,\n default: undefined,\n },\n ignoreCache: Boolean,\n reloadCurrent: Boolean,\n reloadAll: Boolean,\n reloadPrevious: Boolean,\n reloadDetail: {\n type: Boolean,\n default: undefined,\n },\n routeTabId: String,\n view: String,\n routeProps: Object,\n preventRouter: Boolean,\n transition: String,\n },\n linkRouterAttrs(props) {\n const {\n force,\n reloadCurrent,\n reloadPrevious,\n reloadAll,\n reloadDetail,\n animate,\n ignoreCache,\n routeTabId,\n view,\n transition,\n } = props;\n\n let dataAnimate;\n if ('animate' in props && typeof animate !== 'undefined') {\n dataAnimate = animate.toString();\n }\n\n let dataReloadDetail;\n if ('reloadDetail' in props && typeof reloadDetail !== 'undefined') {\n dataReloadDetail = reloadDetail.toString();\n }\n\n return {\n 'data-force': force || undefined,\n 'data-reload-current': reloadCurrent || undefined,\n 'data-reload-all': reloadAll || undefined,\n 'data-reload-previous': reloadPrevious || undefined,\n 'data-reload-detail': dataReloadDetail,\n 'data-animate': dataAnimate,\n 'data-ignore-cache': ignoreCache || undefined,\n 'data-route-tab-id': routeTabId || undefined,\n 'data-view': Utils.isStringProp(view) ? view : undefined,\n 'data-transition': Utils.isStringProp(transition) ? transition : undefined,\n };\n },\n linkRouterClasses(props) {\n const { back, linkBack, external, preventRouter } = props;\n\n return {\n back: back || linkBack,\n external,\n 'prevent-router': preventRouter,\n };\n },\n linkActionsProps: {\n searchbarEnable: [Boolean, String],\n searchbarDisable: [Boolean, String],\n\n searchbarClear: [Boolean, String],\n searchbarToggle: [Boolean, String],\n\n // Panel\n panelOpen: [Boolean, String],\n panelClose: [Boolean, String],\n panelToggle: [Boolean, String],\n\n // Popup\n popupOpen: [Boolean, String],\n popupClose: [Boolean, String],\n\n // Actions\n actionsOpen: [Boolean, String],\n actionsClose: [Boolean, String],\n\n // Popover\n popoverOpen: [Boolean, String],\n popoverClose: [Boolean, String],\n\n // Login Screen\n loginScreenOpen: [Boolean, String],\n loginScreenClose: [Boolean, String],\n\n // Picker\n sheetOpen: [Boolean, String],\n sheetClose: [Boolean, String],\n\n // Sortable\n sortableEnable: [Boolean, String],\n sortableDisable: [Boolean, String],\n sortableToggle: [Boolean, String],\n\n // Card\n cardOpen: [Boolean, String],\n cardPreventOpen: [Boolean, String],\n cardClose: [Boolean, String],\n\n // Menu\n menuClose: {\n type: [Boolean, String],\n default: undefined,\n },\n },\n linkActionsAttrs(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsOpen,\n actionsClose,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardClose,\n } = props;\n\n return {\n 'data-searchbar': (Utils.isStringProp(searchbarEnable) && searchbarEnable)\n || (Utils.isStringProp(searchbarDisable) && searchbarDisable)\n || (Utils.isStringProp(searchbarClear) && searchbarClear)\n || (Utils.isStringProp(searchbarToggle) && searchbarToggle) || undefined,\n 'data-panel': (Utils.isStringProp(panelOpen) && panelOpen)\n || (Utils.isStringProp(panelClose) && panelClose)\n || (Utils.isStringProp(panelToggle) && panelToggle) || undefined,\n 'data-popup': (Utils.isStringProp(popupOpen) && popupOpen)\n || (Utils.isStringProp(popupClose) && popupClose) || undefined,\n 'data-actions': (Utils.isStringProp(actionsOpen) && actionsOpen)\n || (Utils.isStringProp(actionsClose) && actionsClose) || undefined,\n 'data-popover': (Utils.isStringProp(popoverOpen) && popoverOpen)\n || (Utils.isStringProp(popoverClose) && popoverClose) || undefined,\n 'data-sheet': (Utils.isStringProp(sheetOpen) && sheetOpen)\n || (Utils.isStringProp(sheetClose) && sheetClose) || undefined,\n 'data-login-screen': (Utils.isStringProp(loginScreenOpen) && loginScreenOpen)\n || (Utils.isStringProp(loginScreenClose) && loginScreenClose) || undefined,\n 'data-sortable': (Utils.isStringProp(sortableEnable) && sortableEnable)\n || (Utils.isStringProp(sortableDisable) && sortableDisable)\n || (Utils.isStringProp(sortableToggle) && sortableToggle) || undefined,\n 'data-card': (Utils.isStringProp(cardOpen) && cardOpen)\n || (Utils.isStringProp(cardClose) && cardClose) || undefined,\n };\n },\n linkActionsClasses(props) {\n const {\n searchbarEnable,\n searchbarDisable,\n searchbarClear,\n searchbarToggle,\n panelOpen,\n panelClose,\n panelToggle,\n popupOpen,\n popupClose,\n actionsClose,\n actionsOpen,\n popoverOpen,\n popoverClose,\n loginScreenOpen,\n loginScreenClose,\n sheetOpen,\n sheetClose,\n sortableEnable,\n sortableDisable,\n sortableToggle,\n cardOpen,\n cardPreventOpen,\n cardClose,\n menuClose,\n } = props;\n\n return {\n 'searchbar-enable': searchbarEnable || searchbarEnable === '',\n 'searchbar-disable': searchbarDisable || searchbarDisable === '',\n 'searchbar-clear': searchbarClear || searchbarClear === '',\n 'searchbar-toggle': searchbarToggle || searchbarToggle === '',\n 'panel-close': panelClose || panelClose === '',\n 'panel-open': panelOpen || panelOpen === '',\n 'panel-toggle': panelToggle || panelToggle === '',\n 'popup-close': popupClose || popupClose === '',\n 'popup-open': popupOpen || popupOpen === '',\n 'actions-close': actionsClose || actionsClose === '',\n 'actions-open': actionsOpen || actionsOpen === '',\n 'popover-close': popoverClose || popoverClose === '',\n 'popover-open': popoverOpen || popoverOpen === '',\n 'sheet-close': sheetClose || sheetClose === '',\n 'sheet-open': sheetOpen || sheetOpen === '',\n 'login-screen-close': loginScreenClose || loginScreenClose === '',\n 'login-screen-open': loginScreenOpen || loginScreenOpen === '',\n 'sortable-enable': sortableEnable || sortableEnable === '',\n 'sortable-disable': sortableDisable || sortableDisable === '',\n 'sortable-toggle': sortableToggle || sortableToggle === '',\n 'card-close': cardClose || cardClose === '',\n 'card-open': cardOpen || cardOpen === '',\n 'card-prevent-open': cardPreventOpen || cardPreventOpen === '',\n 'menu-close': menuClose || menuClose === '',\n };\n },\n};\nexport default Mixins;\n","export default function (component) {\n const props = {};\n const $props = component.$props;\n Object.keys($props).forEach((propKey) => {\n if (typeof $props[propKey] !== 'undefined') props[propKey] = $props[propKey];\n });\n\n const children = [];\n Object.keys(component.$slots).forEach((slotName) => {\n children.push(...component.$slots[slotName]);\n });\n props.children = children;\n\n return props;\n}\n","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-accordion-content',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'accordion-item-content', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","export default function (component, events, ...args) {\n const self = component;\n events.split(' ').forEach((event) => {\n self.$emit(event, ...args);\n });\n}\n","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-accordion-item',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, 'onBeforeOpen onOpen onOpened onBeforeClose onClose onClosed'.split(' '));\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('accordionBeforeOpen', self.onBeforeOpen);\n f7.on('accordionOpen', self.onOpen);\n f7.on('accordionOpened', self.onOpened);\n f7.on('accordionBeforeClose', self.onBeforeClose);\n f7.on('accordionClose', self.onClose);\n f7.on('accordionClosed', self.onClosed);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('accordionBeforeOpen', self.onBeforeOpen);\n f7.off('accordionOpen', self.onOpen);\n f7.off('accordionOpened', self.onOpened);\n f7.off('accordionBeforeClose', self.onBeforeClose);\n f7.off('accordionClose', self.onClose);\n f7.off('accordionClosed', self.onClosed);\n delete this.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n opened\n } = props;\n const classes = Utils.classNames(className, 'accordion-item', {\n 'accordion-item-opened': opened\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n methods: {\n onBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionBeforeOpen accordion:beforeopen', prevent);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionOpen accordion:open');\n },\n\n onOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionOpened accordion:opened');\n },\n\n onBeforeClose(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionBeforeClose accordion:beforeclose', prevent);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionClose accordion:close');\n },\n\n onClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordionClosed accordion:closed');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-accordion-toggle',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'accordion-item-toggle', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number],\n accordionOpposite: Boolean\n }, Mixins.colorProps),\n name: 'f7-accordion',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n accordionOpposite\n } = props;\n const classes = Utils.classNames(className, 'accordion-list', accordionOpposite && 'accordion-opposite', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-button',\n props: Object.assign({\n id: [String, Number],\n bold: Boolean,\n close: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n bold\n } = props;\n let mediaEl;\n\n if (self.$slots.media && self.$slots.media.length) {\n mediaEl = _h('div', {\n class: 'actions-button-media'\n }, [this.$slots['media']]);\n }\n\n const classes = Utils.classNames(className, {\n 'actions-button': true,\n 'actions-button-bold': bold\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [mediaEl, _h('div', {\n class: 'actions-button-text'\n }, [this.$slots['default']])]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n const self = this;\n const $$ = self.$$;\n const el = self.$refs.el;\n\n if (self.props.close && self.$f7 && el) {\n self.$f7.actions.close($$(el).parents('.actions-modal'));\n }\n\n self.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-group',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'actions-group', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions-label',\n props: Object.assign({\n id: [String, Number],\n bold: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n bold\n } = props;\n const classes = Utils.classNames(className, 'actions-label', {\n 'actions-button-bold': bold\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-actions',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n grid: Boolean,\n convertToPopover: Boolean,\n forceToPopover: Boolean,\n target: [String, Object],\n backdrop: Boolean,\n backdropEl: [String, Object, window.HTMLElement],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n grid\n } = props;\n const classes = Utils.classNames(className, 'actions-modal', {\n 'actions-grid': grid\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Actions) return;\n\n if (opened) {\n self.f7Actions.open();\n } else {\n self.f7Actions.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n grid,\n target,\n convertToPopover,\n forceToPopover,\n opened,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n backdrop,\n backdropEl\n } = props;\n const actionsParams = {\n el,\n grid,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n if (target) actionsParams.targetEl = target;\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.convertToPopover !== 'undefined') actionsParams.convertToPopover = convertToPopover;\n if (typeof propsData.forceToPopover !== 'undefined') actionsParams.forceToPopover = forceToPopover;\n if (typeof propsData.backdrop !== 'undefined') actionsParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') actionsParams.backdropEl = backdropEl;\n if (typeof propsData.closeByBackdropClick !== 'undefined') actionsParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') actionsParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') actionsParams.closeOnEscape = closeOnEscape;\n }\n self.$f7ready(() => {\n self.f7Actions = self.$f7.actions.create(actionsParams);\n\n if (opened) {\n self.f7Actions.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Actions) self.f7Actions.destroy();\n delete self.f7Actions;\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('actions:open actionsOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('actions:opened actionsOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('actions:close actionsClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('actions:closed actionsClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Actions) return undefined;\n return self.f7Actions.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Actions) return undefined;\n return self.f7Actions.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","export default function (component, updater, callback) {\n const self = component;\n let newState;\n if (typeof updater === 'function') {\n newState = updater(self.state, self.props);\n } else {\n newState = updater;\n }\n Object.keys(newState).forEach((key) => {\n self.$set(self.state, key, newState[key]);\n });\n if (typeof callback === 'function') callback();\n}\n","import f7 from '../utils/f7';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nexport default {\n name: 'f7-routable-modals',\n\n data() {\n const state = (() => {\n return {\n modals: []\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n return _h('div', {\n ref: 'el',\n class: 'framework7-modals'\n }, [this.state.modals.map(modal => {\n const ModalComponent = modal.component;\n {\n return _h(ModalComponent, {\n key: modal.id,\n props: modal.props\n });\n }\n })]);\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('modalsRouterDidUpdate', self.routerData);\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.routerData) return;\n f7.routers.modals = null;\n self.routerData = null;\n delete self.routerData;\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.routerData = {\n modals: self.state.modals,\n el,\n component: self,\n\n setModals(modals) {\n self.setState({\n modals\n });\n }\n\n };\n f7.routers.modals = self.routerData;\n },\n\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport f7 from '../utils/f7';\nimport RoutableModals from './routable-modals';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-app',\n props: Object.assign({\n id: [String, Number],\n params: Object,\n routes: Array\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'framework7-root', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id || 'framework7-root'\n }\n }, [this.$slots['default'], _h(RoutableModals)]);\n },\n\n mounted() {\n const self = this;\n const {\n params = {},\n routes\n } = self.props;\n const el = self.$refs.el;\n const parentEl = el.parentNode;\n\n if (parentEl && parentEl !== document.body && parentEl.parentNode === document.body) {\n parentEl.style.height = '100%';\n }\n\n if (f7.instance) return;\n f7.init(el, params, routes);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-appbar',\n props: Object.assign({\n id: [String, Number],\n noShadow: Boolean,\n noHairline: Boolean,\n inner: {\n type: Boolean,\n default: true\n },\n innerClass: String,\n innerClassName: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n inner,\n innerClass,\n innerClassName,\n className,\n id,\n style,\n noShadow,\n noHairline\n } = props;\n let innerEl;\n\n if (inner) {\n innerEl = _h('div', {\n class: Utils.classNames('appbar-inner', innerClass, innerClassName)\n }, [this.$slots['default']]);\n }\n\n const classes = Utils.classNames(className, 'appbar', {\n 'no-shadow': noShadow,\n 'no-hairline': noHairline\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], innerEl || self.$slots.default, this.$slots['after-inner']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-badge',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'badge', Mixins.colorClasses(props));\n return _h('span', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-footer',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block-footer', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-header',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block-header', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block-title',\n props: Object.assign({\n id: [String, Number],\n large: Boolean,\n medium: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n large,\n medium\n } = props;\n const classes = Utils.classNames(className, 'block-title', {\n 'block-title-large': large,\n 'block-title-medium': medium\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-block',\n props: Object.assign({\n id: [String, Number],\n inset: Boolean,\n xsmallInset: Boolean,\n smallInset: Boolean,\n mediumInset: Boolean,\n largeInset: Boolean,\n xlargeInset: Boolean,\n strong: Boolean,\n tabs: Boolean,\n tab: Boolean,\n tabActive: Boolean,\n accordionList: Boolean,\n accordionOpposite: Boolean,\n noHairlines: Boolean,\n noHairlinesMd: Boolean,\n noHairlinesIos: Boolean,\n noHairlinesAurora: Boolean\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, ['onTabShow', 'onTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n });\n },\n\n beforeDestroy() {\n const el = this.$refs.el;\n if (!el || !this.$f7) return;\n this.$f7.off('tabShow', this.onTabShow);\n this.$f7.off('tabHide', this.onTabHide);\n delete this.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n inset,\n xsmallInset,\n smallInset,\n mediumInset,\n largeInset,\n xlargeInset,\n strong,\n accordionList,\n accordionOpposite,\n tabs,\n tab,\n tabActive,\n noHairlines,\n noHairlinesIos,\n noHairlinesMd,\n noHairlinesAurora,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'block', {\n inset,\n 'xsmall-inset': xsmallInset,\n 'small-inset': smallInset,\n 'medium-inset': mediumInset,\n 'large-inset': largeInset,\n 'xlarge-inset': xlargeInset,\n 'block-strong': strong,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n tabs,\n tab,\n 'tab-active': tabActive,\n 'no-hairlines': noHairlines,\n 'no-hairlines-md': noHairlinesMd,\n 'no-hairlines-ios': noHairlinesIos,\n 'no-hairlines-aurora': noHairlinesAurora\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n methods: {\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tabShow tab:show', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tabHide tab:hide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-icon',\n props: Object.assign({\n id: [String, Number],\n material: String,\n f7: String,\n icon: String,\n ios: String,\n aurora: String,\n md: String,\n tooltip: String,\n tooltipTrigger: String,\n size: [String, Number]\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style\n } = props;\n let size = props.size;\n\n if (typeof size === 'number' || parseFloat(size) === size * 1) {\n size = `${size}px`;\n }\n\n return _h('i', {\n ref: 'el',\n style: Utils.extend({\n fontSize: size,\n width: size,\n height: size\n }, style),\n class: self.classes,\n attrs: {\n id: id\n }\n }, [self.iconTextComputed, this.$slots['default']]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n computed: {\n iconTextComputed() {\n const self = this;\n const {\n material,\n f7,\n md,\n ios,\n aurora\n } = self.props;\n const theme = self.state._theme;\n let text = material || f7;\n\n if (md && theme && theme.md && (md.indexOf('material:') >= 0 || md.indexOf('f7:') >= 0)) {\n text = md.split(':')[1];\n } else if (ios && theme && theme.ios && (ios.indexOf('material:') >= 0 || ios.indexOf('f7:') >= 0)) {\n text = ios.split(':')[1];\n } else if (aurora && theme && theme.aurora && (aurora.indexOf('material:') >= 0 || aurora.indexOf('f7:') >= 0)) {\n text = aurora.split(':')[1];\n }\n\n return text;\n },\n\n classes() {\n let classes = {\n icon: true\n };\n const self = this;\n const props = self.props;\n const theme = self.state._theme;\n const {\n material,\n f7,\n icon,\n md,\n ios,\n aurora,\n className\n } = props;\n let themeIcon;\n if (theme && theme.ios) themeIcon = ios;else if (theme && theme.md) themeIcon = md;else if (theme && theme.aurora) themeIcon = aurora;\n\n if (themeIcon) {\n const parts = themeIcon.split(':');\n const prop = parts[0];\n const value = parts[1];\n\n if (prop === 'material' || prop === 'f7') {\n classes['material-icons'] = prop === 'material';\n classes['f7-icons'] = prop === 'f7';\n }\n\n if (prop === 'icon') {\n classes[value] = true;\n }\n } else {\n classes = {\n icon: true,\n 'material-icons': material,\n 'f7-icons': f7\n };\n if (icon) classes[icon] = true;\n }\n\n return Utils.classNames(className, classes, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","export default (props) => {\n if (!props) return props;\n const nestedPropsKeys = ('style class domProps slot key ref attrs on props').split(' ');\n Object.keys(props).forEach((key) => {\n if (key === 'className') {\n props.class = props.className;\n delete props.className;\n return;\n } else if (key === 'dangerouslySetInnerHTML') {\n if (!props.domProps) props.domProps = {};\n props.domProps.innerHTML = props[key];\n if (props.domProps.innerHTML && props.domProps.innerHTML.__html) {\n props.domProps.innerHTML = props.domProps.innerHTML.__html;\n }\n delete props.dangerouslySetInnerHTML;\n return;\n } else if (key.match(/^on?([A-Z])/)) {\n if (!props.on) props.on = {};\n const newKey = key.replace(/(^on?)([A-Z])/, (found, first, second) => second.toLowerCase());\n props.on[newKey] = props[key];\n delete props[key];\n return;\n }\n if (nestedPropsKeys.indexOf(key) >= 0) {\n return;\n }\n if (!props.attrs) {\n props.attrs = {};\n }\n if (!props.attrs[key]) {\n props.attrs[key] = props[key];\n delete props[key];\n }\n });\n\n return props;\n};\n","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-button',\n props: Object.assign({\n id: [String, Number],\n text: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n type: String,\n href: {\n type: [String, Boolean],\n default: '#'\n },\n target: String,\n round: Boolean,\n roundMd: Boolean,\n roundIos: Boolean,\n roundAurora: Boolean,\n fill: Boolean,\n fillMd: Boolean,\n fillIos: Boolean,\n fillAurora: Boolean,\n large: Boolean,\n largeMd: Boolean,\n largeIos: Boolean,\n largeAurora: Boolean,\n small: Boolean,\n smallMd: Boolean,\n smallIos: Boolean,\n smallAurora: Boolean,\n raised: Boolean,\n raisedMd: Boolean,\n raisedIos: Boolean,\n raisedAurora: Boolean,\n outline: Boolean,\n outlineMd: Boolean,\n outlineIos: Boolean,\n outlineAurora: Boolean,\n active: Boolean,\n disabled: Boolean,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let iconEl;\n let textEl;\n const props = self.props;\n const {\n text,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconColor,\n iconSize,\n id,\n style,\n type\n } = props;\n\n if (text) {\n textEl = _h('span', [text]);\n }\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n const ButtonTag = type === 'submit' || type === 'reset' || type === 'button' ? 'button' : 'a';\n return _h(ButtonTag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n style: style,\n class: self.classes\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [iconEl, textEl, this.$slots['default']]);\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n target,\n tabLink,\n type\n } = props;\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined;\n return Utils.extend({\n href: hrefComputed,\n target,\n type,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive,\n round,\n roundIos,\n roundAurora,\n roundMd,\n fill,\n fillIos,\n fillAurora,\n fillMd,\n large,\n largeIos,\n largeAurora,\n largeMd,\n small,\n smallIos,\n smallAurora,\n smallMd,\n raised,\n raisedIos,\n raisedAurora,\n raisedMd,\n active,\n outline,\n outlineIos,\n outlineAurora,\n outlineMd,\n disabled,\n className\n } = props;\n return Utils.classNames(className, 'button', {\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'button-round': round,\n 'button-round-ios': roundIos,\n 'button-round-aurora': roundAurora,\n 'button-round-md': roundMd,\n 'button-fill': fill,\n 'button-fill-ios': fillIos,\n 'button-fill-aurora': fillAurora,\n 'button-fill-md': fillMd,\n 'button-large': large,\n 'button-large-ios': largeIos,\n 'button-large-aurora': largeAurora,\n 'button-large-md': largeMd,\n 'button-small': small,\n 'button-small-ios': smallIos,\n 'button-small-aurora': smallAurora,\n 'button-small-md': smallMd,\n 'button-raised': raised,\n 'button-raised-ios': raisedIos,\n 'button-raised-aurora': raisedAurora,\n 'button-raised-md': raisedMd,\n 'button-active': active,\n 'button-outline': outline,\n 'button-outline-ios': outlineIos,\n 'button-outline-aurora': outlineAurora,\n 'button-outline-md': outlineMd,\n disabled\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n el.addEventListener('click', self.onClick);\n const {\n tooltip,\n tooltipTrigger,\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n }\n\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-content',\n props: Object.assign({\n id: [String, Number],\n padding: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n id,\n className,\n style,\n padding\n } = props;\n const classes = Utils.classNames(className, 'card-content', {\n 'card-content-padding': padding\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-footer',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'card-footer', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card-header',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'card-header', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7CardHeader from './card-header';\nimport F7CardContent from './card-content';\nimport F7CardFooter from './card-footer';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-card',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n content: [String, Number],\n footer: [String, Number],\n outline: Boolean,\n expandable: Boolean,\n expandableAnimateWidth: Boolean,\n expandableOpened: Boolean,\n animate: {\n type: Boolean,\n default: undefined\n },\n hideNavbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n hideToolbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n hideStatusbarOnOpen: {\n type: Boolean,\n default: undefined\n },\n scrollableEl: {\n type: String,\n default: undefined\n },\n swipeToClose: {\n type: Boolean,\n default: undefined\n },\n closeByBackdropClick: {\n type: Boolean,\n default: undefined\n },\n backdrop: {\n type: Boolean,\n default: undefined\n },\n backdropEl: {\n type: String,\n default: undefined\n },\n noShadow: Boolean,\n noBorder: Boolean,\n padding: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n watch: {\n 'props.expandableOpened': function watchOpened(expandableOpened) {\n const self = this;\n\n if (expandableOpened) {\n self.open();\n } else {\n self.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onBeforeOpen onOpen onOpened onClose onClosed'.split(' '));\n },\n\n mounted() {\n const self = this;\n if (!self.props.expandable) return;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('cardBeforeOpen', self.onBeforeOpen);\n f7.on('cardOpen', self.onOpen);\n f7.on('cardOpened', self.onOpened);\n f7.on('cardClose', self.onClose);\n f7.on('cardClosed', self.onClosed);\n\n if (self.props.expandable && self.props.expandableOpened) {\n self.$f7.card.open(el, false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.props.expandable) return;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n self.$f7.off('cardBeforeOpen', self.onBeforeOpen);\n self.$f7.off('cardOpen', self.onOpen);\n self.$f7.off('cardOpened', self.onOpened);\n self.$f7.off('cardClose', self.onClose);\n self.$f7.off('cardClosed', self.onClosed);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n title,\n content,\n footer,\n padding,\n outline,\n expandable,\n expandableAnimateWidth,\n animate,\n hideNavbarOnOpen,\n hideToolbarOnOpen,\n hideStatusbarOnOpen,\n scrollableEl,\n swipeToClose,\n closeByBackdropClick,\n backdrop,\n backdropEl,\n noShadow,\n noBorder\n } = props;\n let headerEl;\n let contentEl;\n let footerEl;\n const classes = Utils.classNames(className, 'card', {\n 'card-outline': outline,\n 'card-expandable': expandable,\n 'card-expandable-animate-width': expandableAnimateWidth,\n 'no-shadow': noShadow,\n 'no-border': noBorder\n }, Mixins.colorClasses(props));\n\n if (title || self.$slots && self.$slots.header) {\n headerEl = _h(F7CardHeader, [title, this.$slots['header']]);\n }\n\n if (content || self.$slots && self.$slots.content) {\n contentEl = _h(F7CardContent, {\n attrs: {\n padding: padding\n }\n }, [content, this.$slots['content']]);\n }\n\n if (footer || self.$slots && self.$slots.footer) {\n footerEl = _h(F7CardFooter, [footer, this.$slots['footer']]);\n }\n\n return _h('div', {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id,\n 'data-animate': typeof animate === 'undefined' ? animate : animate.toString(),\n 'data-hide-navbar-on-open': typeof hideNavbarOnOpen === 'undefined' ? hideNavbarOnOpen : hideNavbarOnOpen.toString(),\n 'data-hide-toolbar-on-open': typeof hideToolbarOnOpen === 'undefined' ? hideToolbarOnOpen : hideToolbarOnOpen.toString(),\n 'data-hide-statusbar-on-open': typeof hideStatusbarOnOpen === 'undefined' ? hideStatusbarOnOpen : hideStatusbarOnOpen.toString(),\n 'data-scrollable-el': scrollableEl,\n 'data-swipe-to-close': typeof swipeToClose === 'undefined' ? swipeToClose : swipeToClose.toString(),\n 'data-close-by-backdrop-click': typeof closeByBackdropClick === 'undefined' ? closeByBackdropClick : closeByBackdropClick.toString(),\n 'data-backdrop': typeof backdrop === 'undefined' ? backdrop : backdrop.toString(),\n 'data-backdrop-el': backdropEl\n }\n }, [headerEl, contentEl, footerEl, this.$slots['default']]);\n },\n\n methods: {\n open() {\n const self = this;\n if (!self.$refs.el) return;\n self.$f7.card.open(self.$refs.el);\n },\n\n close() {\n const self = this;\n if (!self.$refs.el) return;\n self.$f7.card.close(self.$refs.el);\n },\n\n onBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardBeforeOpen card:beforeopen', el, prevent);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardOpen card:open', el);\n },\n\n onOpened(el, pageEl) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardOpened card:opened', el, pageEl);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardClose card:close', el);\n },\n\n onClosed(el, pageEl) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('cardClosed card:closed', el, pageEl);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-checkbox',\n props: Object.assign({\n id: [String, Number],\n checked: Boolean,\n indeterminate: Boolean,\n name: [Number, String],\n value: [Number, String, Boolean],\n disabled: Boolean,\n readonly: Boolean,\n defaultChecked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n name,\n value,\n disabled,\n readonly,\n checked,\n defaultChecked,\n id,\n style\n } = props;\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value,\n disabled,\n readonly,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox',\n name: name\n }\n });\n }\n\n const iconEl = _h('i', {\n class: 'icon-checkbox'\n });\n\n return _h('label', {\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [inputEl, iconEl, this.$slots['default']]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n disabled\n } = props;\n return Utils.classNames(className, {\n checkbox: true,\n disabled\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n mounted() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (indeterminate && inputEl) {\n inputEl.indeterminate = true;\n }\n },\n\n updated() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (inputEl) {\n inputEl.indeterminate = indeterminate;\n }\n },\n\n methods: {\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-chip',\n props: Object.assign({\n id: [String, Number],\n media: String,\n text: [String, Number],\n deleteable: Boolean,\n mediaBgColor: String,\n mediaTextColor: String,\n outline: Boolean\n }, Mixins.colorProps, {}, Mixins.linkIconProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n media,\n text,\n deleteable,\n className,\n id,\n style,\n mediaTextColor,\n mediaBgColor,\n outline,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconColor,\n iconSize\n } = props;\n let iconEl;\n let mediaEl;\n let labelEl;\n let deleteEl;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n if (media || iconEl || self.$slots && self.$slots.media) {\n const mediaClasses = Utils.classNames('chip-media', mediaTextColor && `text-color-${mediaTextColor}`, mediaBgColor && `bg-color-${mediaBgColor}`);\n mediaEl = _h('div', {\n class: mediaClasses\n }, [iconEl, media, this.$slots['media']]);\n }\n\n if (text || self.$slots && self.$slots.text) {\n labelEl = _h('div', {\n class: 'chip-label'\n }, [text, this.$slots['text']]);\n }\n\n if (deleteable) {\n deleteEl = _h('a', {\n ref: 'deleteEl',\n class: 'chip-delete'\n });\n }\n\n const classes = Utils.classNames(className, 'chip', {\n 'chip-outline': outline\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [mediaEl, labelEl, deleteEl]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onDeleteClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.addEventListener('click', this.onDeleteClick);\n }\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.removeEventListener('click', this.onDeleteClick);\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onDeleteClick(event) {\n this.dispatchEvent('delete', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-col',\n props: Object.assign({\n id: [String, Number],\n tag: {\n type: String,\n default: 'div'\n },\n width: {\n type: [Number, String],\n default: 'auto'\n },\n xsmall: {\n type: [Number, String]\n },\n small: {\n type: [Number, String]\n },\n medium: {\n type: [Number, String]\n },\n large: {\n type: [Number, String]\n },\n xlarge: {\n type: [Number, String]\n },\n resizable: Boolean,\n resizableFixed: Boolean,\n resizableAbsolute: Boolean,\n resizableHandler: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tag,\n width,\n xsmall,\n small,\n medium,\n large,\n xlarge,\n resizable,\n resizableFixed,\n resizableAbsolute,\n resizableHandler\n } = props;\n const ColTag = tag;\n const classes = Utils.classNames(className, {\n col: width === 'auto',\n [`col-${width}`]: width !== 'auto',\n [`xsmall-${xsmall}`]: xsmall,\n [`small-${small}`]: small,\n [`medium-${medium}`]: medium,\n [`large-${large}`]: large,\n [`xlarge-${xlarge}`]: xlarge,\n resizable,\n 'resizable-fixed': resizableFixed,\n 'resizable-absolute': resizableAbsolute\n }, Mixins.colorClasses(props));\n return _h(ColTag, {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && resizableHandler && _h('span', {\n class: 'resize-handler'\n })]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onResize']);\n },\n\n mounted() {\n const self = this;\n self.eventTargetEl = self.$refs.el;\n self.eventTargetEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n f7.on('gridResize', self.onResize);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('gridResize', self.onResize);\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onResize(el) {\n if (el === this.eventTargetEl) {\n this.dispatchEvent('grid:resize gridResize');\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-backdrop',\n props: {\n id: [String, Number]\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'fab-backdrop');\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n });\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-button',\n props: Object.assign({\n id: [String, Number],\n fabClose: Boolean,\n label: String,\n target: String,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n fabClose,\n label,\n target\n } = props;\n const classes = Utils.classNames(className, {\n 'fab-close': fabClose,\n 'fab-label-button': label\n }, Mixins.colorClasses(props));\n let labelEl;\n\n if (label) {\n labelEl = _h('span', {\n class: 'fab-label'\n }, [label]);\n }\n\n return _h('a', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n target: target\n }\n }, [this.$slots['default'], labelEl]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n self.$refs.el.addEventListener('click', self.onClick);\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: self.$refs.el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n self.$refs.el.removeEventListener('click', self.onClick);\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab-buttons',\n props: Object.assign({\n id: [String, Number],\n position: {\n type: String,\n default: 'top'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n position\n } = props;\n const classes = Utils.classNames(className, 'fab-buttons', `fab-buttons-${position}`, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-fab',\n props: Object.assign({\n id: [String, Number],\n morphTo: String,\n href: [Boolean, String],\n target: String,\n text: String,\n position: {\n type: String,\n default: 'right-bottom'\n },\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n morphTo,\n href: initialHref,\n position,\n text,\n target\n } = props;\n let href = initialHref;\n if (href === true) href = '#';\n if (href === false) href = undefined;\n const linkChildren = [];\n const rootChildren = [];\n const {\n link: linkSlots,\n default: defaultSlots,\n root: rootSlots,\n text: textSlots\n } = self.$slots;\n\n if (defaultSlots) {\n for (let i = 0; i < defaultSlots.length; i += 1) {\n const child = defaultSlots[i];\n let isRoot;\n {\n if (child.tag && child.tag.indexOf('fab-buttons') >= 0) isRoot = true;\n }\n if (isRoot) rootChildren.push(child);else linkChildren.push(child);\n }\n }\n\n let textEl;\n\n if (text || textSlots && textSlots.length) {\n textEl = _h('div', {\n class: 'fab-text'\n }, [text || textSlots]);\n }\n\n let linkEl;\n\n if (linkChildren.length || linkSlots && linkSlots.length) {\n linkEl = _h('a', {\n ref: 'linkEl',\n key: 'f7-fab-link',\n attrs: {\n target: target,\n href: href\n }\n }, [linkChildren, textEl, linkSlots]);\n }\n\n const classes = Utils.classNames(className, 'fab', `fab-${position}`, {\n 'fab-morph': morphTo,\n 'fab-extended': typeof textEl !== 'undefined'\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-morph-to': morphTo\n }\n }, [linkEl, rootChildren, rootSlots]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n\n if (self.$refs.linkEl) {\n self.$refs.linkEl.addEventListener('click', self.onClick);\n }\n\n const {\n tooltip,\n tooltipTrigger\n } = self.props;\n if (!tooltip) return;\n self.$f7ready(f7 => {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: self.$refs.el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.$refs.linkEl) {\n self.$refs.linkEl.removeEventListener('click', self.onClick);\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n const self = this;\n self.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: {\n id: [String, Number],\n type: {\n type: String,\n default: 'circle'\n },\n value: {\n type: [Number, String],\n default: 0\n },\n size: {\n type: [Number, String],\n default: 200\n },\n bgColor: {\n type: String,\n default: 'transparent'\n },\n borderBgColor: {\n type: String,\n default: '#eeeeee'\n },\n borderColor: {\n type: String,\n default: '#000000'\n },\n borderWidth: {\n type: [Number, String],\n default: 10\n },\n valueText: [Number, String],\n valueTextColor: {\n type: String,\n default: '#000000'\n },\n valueFontSize: {\n type: [Number, String],\n default: 31\n },\n valueFontWeight: {\n type: [Number, String],\n default: 500\n },\n labelText: String,\n labelTextColor: {\n type: String,\n default: '#888888'\n },\n labelFontSize: {\n type: [Number, String],\n default: 14\n },\n labelFontWeight: {\n type: [Number, String],\n default: 400\n }\n },\n name: 'f7-gauge',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n type,\n value,\n size,\n bgColor,\n borderBgColor,\n borderColor,\n borderWidth,\n valueText,\n valueTextColor,\n valueFontSize,\n valueFontWeight,\n labelText,\n labelTextColor,\n labelFontSize,\n labelFontWeight\n } = props;\n const classes = Utils.classNames(className, 'gauge');\n const semiCircle = type === 'semicircle';\n const radius = size / 2 - borderWidth / 2;\n const length = 2 * Math.PI * radius;\n const progress = Math.max(Math.min(value, 1), 0);\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('svg', {\n class: 'gauge-svg',\n attrs: {\n width: `${size}px`,\n height: `${semiCircle ? size / 2 : size}px`,\n viewBox: `0 0 ${size} ${semiCircle ? size / 2 : size}`\n }\n }, [semiCircle && _h('path', {\n class: 'gauge-back-semi',\n attrs: {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none'\n }\n }), semiCircle && _h('path', {\n class: 'gauge-front-semi',\n attrs: {\n d: `M${size - borderWidth / 2},${size / 2} a1,1 0 0,0 -${size - borderWidth},0`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length / 2,\n 'stroke-dashoffset': length / 2 * (1 + progress),\n fill: borderBgColor ? 'none' : bgColor || 'none'\n }\n }), !semiCircle && borderBgColor && _h('circle', {\n class: 'gauge-back-circle',\n attrs: {\n stroke: borderBgColor,\n 'stroke-width': borderWidth,\n fill: bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius\n }\n }), !semiCircle && _h('circle', {\n class: 'gauge-front-circle',\n attrs: {\n transform: `rotate(-90 ${size / 2} ${size / 2})`,\n stroke: borderColor,\n 'stroke-width': borderWidth,\n 'stroke-dasharray': length,\n 'stroke-dashoffset': length * (1 - progress),\n fill: borderBgColor ? 'none' : bgColor || 'none',\n cx: size / 2,\n cy: size / 2,\n r: radius\n }\n }), valueText && _h('text', {\n class: 'gauge-value-text',\n attrs: {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': valueFontWeight,\n 'font-size': valueFontSize,\n fill: valueTextColor,\n dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle ? 'middle' : null\n }\n }, [valueText]), labelText && _h('text', {\n class: 'gauge-label-text',\n attrs: {\n x: '50%',\n y: semiCircle ? '100%' : '50%',\n 'font-weight': labelFontWeight,\n 'font-size': labelFontSize,\n fill: labelTextColor,\n dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,\n 'text-anchor': 'middle',\n 'dominant-baseline': !semiCircle ? 'middle' : null\n }\n }, [labelText])])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-toggle',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n checked: Boolean,\n defaultChecked: Boolean,\n disabled: Boolean,\n readonly: Boolean,\n name: String,\n value: [String, Number, Array]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n disabled,\n id,\n style,\n name,\n readonly,\n checked,\n defaultChecked,\n value\n } = props;\n const labelClasses = Utils.classNames('toggle', className, {\n disabled\n }, Mixins.colorClasses(props));\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n disabled,\n readOnly: readonly,\n value,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox',\n name: name\n }\n });\n }\n return _h('label', {\n ref: 'el',\n style: style,\n class: labelClasses,\n attrs: {\n id: id\n }\n }, [inputEl, _h('span', {\n class: 'toggle-icon'\n })]);\n },\n\n watch: {\n 'props.checked': function watchChecked(newValue) {\n const self = this;\n if (!self.f7Toggle) return;\n self.f7Toggle.checked = newValue;\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n self.f7Toggle = f7.toggle.create({\n el: self.$refs.el,\n on: {\n change(toggle) {\n self.dispatchEvent('toggle:change toggleChange', toggle.checked);\n }\n\n }\n });\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Toggle && self.f7Toggle.destroy && self.f7Toggle.$el) self.f7Toggle.destroy();\n },\n\n methods: {\n toggle() {\n const self = this;\n if (self.f7Toggle && self.f7Toggle.toggle) self.f7Toggle.toggle();\n },\n\n onChange(event) {\n const self = this;\n self.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-range',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n value: {\n type: [Number, Array, String],\n default: 0\n },\n min: {\n type: [Number, String],\n default: 0\n },\n max: {\n type: [Number, String],\n default: 100\n },\n step: {\n type: [Number, String],\n default: 1\n },\n label: {\n type: Boolean,\n default: false\n },\n dual: {\n type: Boolean,\n default: false\n },\n vertical: {\n type: Boolean,\n default: false\n },\n verticalReversed: {\n type: Boolean,\n default: false\n },\n draggableBar: {\n type: Boolean,\n default: true\n },\n formatLabel: Function,\n scale: {\n type: Boolean,\n default: false\n },\n scaleSteps: {\n type: Number,\n default: 5\n },\n scaleSubSteps: {\n type: Number,\n default: 0\n },\n formatScaleLabel: Function,\n limitKnobPosition: {\n type: Boolean,\n default: undefined\n },\n name: String,\n input: Boolean,\n inputId: String,\n disabled: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n disabled,\n className,\n style,\n input,\n inputId,\n name,\n vertical,\n verticalReversed\n } = self.props;\n const classes = Utils.classNames(className, 'range-slider', {\n 'range-slider-horizontal': !vertical,\n 'range-slider-vertical': vertical,\n 'range-slider-vertical-reversed': vertical && verticalReversed,\n disabled\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [input && _h('input', {\n attrs: {\n type: 'range',\n name: name,\n id: inputId\n }\n }), this.$slots['default']]);\n },\n\n watch: {\n 'props.value': function watchValue(newValue) {\n const self = this;\n if (!self.f7Range) return;\n self.f7Range.setValue(newValue);\n }\n },\n\n mounted() {\n const self = this;\n self.$f7ready(f7 => {\n if (!self.props.init) return;\n const props = self.props;\n const {\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition\n } = props;\n self.f7Range = f7.range.create(Utils.noUndefinedProps({\n el: self.$refs.el,\n value,\n min,\n max,\n step,\n label,\n dual,\n draggableBar,\n vertical,\n verticalReversed,\n formatLabel,\n scale,\n scaleSteps,\n scaleSubSteps,\n formatScaleLabel,\n limitKnobPosition,\n on: {\n change(range, val) {\n self.dispatchEvent('range:change rangeChange', val);\n },\n\n changed(range, val) {\n self.dispatchEvent('range:changed rangeChanged', val);\n }\n\n }\n }));\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Range && self.f7Range.destroy) self.f7Range.destroy();\n },\n\n methods: {\n setValue(newValue) {\n const self = this;\n if (self.f7Range && self.f7Range.setValue) self.f7Range.setValue(newValue);\n },\n\n getValue() {\n const self = this;\n\n if (self.f7Range && self.f7Range.getValue) {\n return self.f7Range.getValue();\n }\n\n return undefined;\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-text-editor',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps, {\n mode: {\n type: String,\n default: undefined\n },\n value: {\n type: String,\n default: undefined\n },\n buttons: Array,\n customButtons: Object,\n dividers: {\n type: Boolean,\n default: undefined\n },\n imageUrlText: {\n type: String,\n default: undefined\n },\n linkUrlText: {\n type: String,\n default: undefined\n },\n placeholder: {\n type: String,\n default: undefined\n },\n clearFormattingOnPaste: {\n type: Boolean,\n default: undefined\n },\n resizable: {\n type: Boolean,\n default: false\n }\n }),\n\n created() {\n Utils.bindMethods(this, 'onChange onInput onFocus onBlur onButtonClick onKeyboardOpen onKeyboardClose onPopoverOpen onPopoverClose'.split(' '));\n },\n\n mounted() {\n const props = this.props;\n const {\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste\n } = props;\n const params = Utils.noUndefinedProps({\n el: this.$refs.el,\n mode,\n value,\n buttons,\n customButtons,\n dividers,\n imageUrlText,\n linkUrlText,\n placeholder,\n clearFormattingOnPaste,\n on: {\n change: this.onChange,\n input: this.onInput,\n focus: this.onFocus,\n blur: this.onBlur,\n buttonClick: this.onButtonClick,\n keyboardOpen: this.onKeyboardOpen,\n keyboardClose: this.onKeyboardClose,\n popoverOpen: this.onPopoverOpen,\n popoverClose: this.onPopoverClose\n }\n });\n this.$f7ready(f7 => {\n this.f7TextEditor = f7.textEditor.create(params);\n });\n },\n\n beforeDestroy() {\n if (this.f7TextEditor && this.f7TextEditor.destroy) {\n this.f7TextEditor.destroy();\n }\n },\n\n watch: {\n 'props.value': function watchValue() {\n if (this.f7TextEditor) {\n this.f7TextEditor.setValue(this.props.value);\n }\n }\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n resizable\n } = props;\n const classes = Utils.classNames(className, 'text-editor', resizable && 'text-editor-resizable', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['root-start'], _h('div', {\n class: 'text-editor-content',\n attrs: {\n contenteditable: true\n }\n }, [this.$slots['default']]), this.$slots['root-end'], this.$slots['root']]);\n },\n\n methods: {\n onChange(editor, value) {\n this.dispatchEvent('texteditor:change textEditorChange', value);\n },\n\n onInput() {\n this.dispatchEvent('texteditor:change textEditorChange');\n },\n\n onFocus() {\n this.dispatchEvent('texteditor:focus textEditorFocus');\n },\n\n onBlur() {\n this.dispatchEvent('texteditor:blur textEditorBlur');\n },\n\n onButtonClick(editor, button) {\n this.dispatchEvent('texteditor:buttonclick textEditorButtonClick', button);\n },\n\n onKeyboardOpen() {\n this.dispatchEvent('texteditor:keyboardopen textEditorKeyboardOpen');\n },\n\n onKeyboardClose() {\n this.dispatchEvent('texteditor:keyboardclose textEditorKeyboardClose');\n },\n\n onPopoverOpen() {\n this.dispatchEvent('texteditor:popoveropen textEditorPopoverOpen');\n },\n\n onPopoverClose() {\n this.dispatchEvent('texteditor:popoverclose textEditorPopoverClose');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Toggle from './toggle';\nimport F7Range from './range';\nimport F7TextEditor from './text-editor';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-input',\n props: Object.assign({\n type: String,\n name: String,\n value: [String, Number, Array, Date, Object],\n defaultValue: [String, Number, Array],\n inputmode: String,\n placeholder: String,\n id: [String, Number],\n inputId: [String, Number],\n size: [String, Number],\n accept: [String, Number],\n autocomplete: [String],\n autocorrect: [String],\n autocapitalize: [String],\n spellcheck: [String],\n autofocus: Boolean,\n autosave: String,\n checked: Boolean,\n disabled: Boolean,\n max: [String, Number],\n min: [String, Number],\n step: [String, Number],\n maxlength: [String, Number],\n minlength: [String, Number],\n multiple: Boolean,\n readonly: Boolean,\n required: Boolean,\n inputStyle: [String, Object],\n pattern: String,\n validate: [Boolean, String],\n validateOnBlur: Boolean,\n onValidate: Function,\n tabindex: [String, Number],\n resizable: Boolean,\n clearButton: Boolean,\n noFormStoreData: Boolean,\n noStoreData: Boolean,\n ignoreStoreData: Boolean,\n errorMessage: String,\n errorMessageForce: Boolean,\n info: String,\n outline: Boolean,\n wrap: {\n type: Boolean,\n default: true\n },\n dropdown: {\n type: [String, Boolean],\n default: 'auto'\n },\n calendarParams: Object,\n colorPickerParams: Object,\n textEditorParams: Object\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n inputFocused: false,\n inputInvalid: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n type,\n name,\n value,\n defaultValue,\n inputmode,\n placeholder,\n id,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n checked,\n disabled,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n readonly,\n required,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n tabindex,\n resizable,\n clearButton,\n errorMessage,\n errorMessageForce,\n info,\n wrap,\n dropdown,\n style,\n className,\n noStoreData,\n noFormStoreData,\n ignoreStoreData,\n outline,\n textEditorParams\n } = props;\n const domValue = self.domValue();\n const inputHasValue = self.inputHasValue();\n let inputEl;\n\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n\n const inputClassName = Utils.classNames(!wrap && className, {\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || self.state.inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': self.state.inputFocused\n });\n let input;\n let inputValue;\n\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n\n const valueProps = {};\n\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n\n {\n input = _h(InputTag, {\n ref: 'inputEl',\n style: inputStyle,\n class: inputClassName,\n domProps: Object.assign({\n checked,\n disabled,\n readOnly: readonly,\n multiple,\n required\n }, valueProps),\n on: {\n focus: self.onFocus,\n blur: self.onBlur,\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputmode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autocomplete: autocomplete,\n autocorrect: autocorrect,\n autocapitalize: autocapitalize,\n spellcheck: spellcheck,\n autofocus: autofocus,\n autoSave: autosave,\n max: max,\n maxlength: maxlength,\n min: min,\n minlength: minlength,\n step: step,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n 'data-validate': validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n 'data-validate-on-blur': validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabindex: tabindex,\n 'data-error-message': errorMessageForce ? undefined : errorMessage\n }\n }, [children]);\n }\n return input;\n };\n\n const {\n default: slotsDefault,\n info: slotsInfo\n } = self.$slots;\n\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', slotsDefault);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (slotsDefault && slotsDefault.length > 0 || !type) {\n inputEl = slotsDefault;\n } else if (type === 'toggle') {\n inputEl = _h(F7Toggle, {\n on: {\n change: self.onChange\n },\n attrs: {\n checked: checked,\n readonly: readonly,\n name: name,\n value: value,\n disabled: disabled,\n id: inputId\n }\n });\n } else if (type === 'range') {\n inputEl = _h(F7Range, {\n on: {\n rangeChange: self.onChange\n },\n attrs: {\n value: value,\n disabled: disabled,\n min: min,\n max: max,\n step: step,\n name: name,\n id: inputId,\n input: true\n }\n });\n } else if (type === 'texteditor') {\n inputEl = _h(F7TextEditor, __vueComponentTransformJSXProps(Object.assign({}, textEditorParams, {\n on: {\n textEditorFocus: self.onFocus,\n textEditorBlur: self.onBlur,\n textEditorInput: self.onInput,\n textEditorChange: self.onChange\n },\n attrs: {\n value: value,\n resizable: resizable,\n placeholder: placeholder\n }\n })));\n } else {\n inputEl = createInput('input');\n }\n\n if (wrap) {\n const wrapClasses = Utils.classNames(className, 'input', {\n 'input-outline': outline,\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n }, Mixins.colorClasses(props));\n return _h('div', {\n class: wrapClasses,\n style: style,\n attrs: {\n id: id\n }\n }, [inputEl, errorMessage && errorMessageForce && _h('div', {\n class: 'input-error-message'\n }, [errorMessage]), clearButton && _h('span', {\n class: 'input-clear-button'\n }), (info || slotsInfo && slotsInfo.length) && _h('div', {\n class: 'input-info'\n }, [info, this.$slots['info']])]);\n }\n\n return inputEl;\n },\n\n watch: {\n 'props.value': function watchValue() {\n const self = this;\n const {\n type\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n if (!self.$f7) return;\n self.updateInputOnDidUpdate = true;\n\n if (self.f7Calendar) {\n self.f7Calendar.setValue(self.props.value);\n }\n\n if (self.f7ColorPicker) {\n self.f7ColorPicker.setValue(self.props.value);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onFocus onBlur onInput onChange onTextareaResize onInputNotEmpty onInputEmpty onInputClear'.split(' '));\n },\n\n mounted() {\n const self = this;\n self.$f7ready(f7 => {\n const {\n validate,\n validateOnBlur,\n resizable,\n type,\n clearButton,\n value,\n defaultValue,\n calendarParams,\n colorPickerParams\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.addEventListener('input:notempty', self.onInputNotEmpty, false);\n\n if (type === 'textarea' && resizable) {\n inputEl.addEventListener('textarea:resize', self.onTextareaResize, false);\n }\n\n if (clearButton) {\n inputEl.addEventListener('input:empty', self.onInputEmpty, false);\n inputEl.addEventListener('input:clear', self.onInputClear, false);\n }\n\n if (type === 'datepicker') {\n self.f7Calendar = f7.calendar.create(Object.assign({\n inputEl,\n value,\n on: {\n change(calendar, calendarValue) {\n self.dispatchEvent('calendar:change calendarChange', calendarValue);\n }\n\n }\n }, calendarParams || {}));\n }\n\n if (type === 'colorpicker') {\n self.f7ColorPicker = f7.colorPicker.create(Object.assign({\n inputEl,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n self.dispatchEvent('colorpicker:change colorPickerChange', colorPickerValue);\n }\n\n }\n }, colorPickerParams || {}));\n }\n\n f7.input.checkEmptyState(inputEl);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n self.validateInput(inputEl);\n }, 0);\n }\n\n if (resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n });\n },\n\n updated() {\n const self = this;\n const {\n validate,\n validateOnBlur,\n resizable\n } = self.props;\n const f7 = self.$f7;\n if (!f7) return;\n\n if (self.updateInputOnDidUpdate) {\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n self.updateInputOnDidUpdate = false;\n f7.input.checkEmptyState(inputEl);\n\n if (validate && !validateOnBlur) {\n self.validateInput(inputEl);\n }\n\n if (resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n type,\n resizable,\n clearButton\n } = self.props;\n if (type === 'range' || type === 'toggle') return;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.removeEventListener('input:notempty', self.onInputNotEmpty, false);\n\n if (type === 'textarea' && resizable) {\n inputEl.removeEventListener('textarea:resize', self.onTextareaResize, false);\n }\n\n if (clearButton) {\n inputEl.removeEventListener('input:empty', self.onInputEmpty, false);\n inputEl.removeEventListener('input:clear', self.onInputClear, false);\n }\n\n if (self.f7Calendar && self.f7Calendar.destroy) {\n self.f7Calendar.destroy();\n }\n\n if (self.f7ColorPicker && self.f7ColorPicker.destroy) {\n self.f7ColorPicker.destroy();\n }\n\n delete self.f7Calendar;\n delete self.f7ColorPicker;\n },\n\n methods: {\n domValue() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n if (!inputEl) return undefined;\n return inputEl.value;\n },\n\n inputHasValue() {\n const self = this;\n const {\n value,\n type\n } = self.props;\n\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n const domValue = self.domValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n },\n\n validateInput(inputEl) {\n const self = this;\n const f7 = self.$f7;\n if (!f7 || !inputEl) return;\n const validity = inputEl.validity;\n if (!validity) return;\n const {\n onValidate\n } = self.props;\n\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n\n if (self.state.inputInvalid !== true) {\n self.setState({\n inputInvalid: true\n });\n }\n } else if (self.state.inputInvalid !== false) {\n if (onValidate) onValidate(true);\n self.setState({\n inputInvalid: false\n });\n }\n },\n\n onTextareaResize(event) {\n this.dispatchEvent('textarea:resize textareaResize', event);\n },\n\n onInputNotEmpty(event) {\n this.dispatchEvent('input:notempty inputNotEmpty', event);\n },\n\n onInputEmpty(event) {\n this.dispatchEvent('input:empty inputEmpty', event);\n },\n\n onInputClear(event) {\n this.dispatchEvent('input:clear inputClear', event);\n },\n\n onInput(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('input', ...args);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n },\n\n onFocus(...args) {\n this.dispatchEvent('focus', ...args);\n this.setState({\n inputFocused: true\n });\n },\n\n onBlur(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('blur', ...args);\n\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n\n self.setState({\n inputFocused: false\n });\n },\n\n onChange(...args) {\n this.dispatchEvent('change', ...args);\n\n if (this.props.type === 'texteditor') {\n this.dispatchEvent('texteditor:change textEditorChange', args[1]);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Badge from './badge';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-link',\n props: Object.assign({\n id: [String, Number],\n noLinkClass: Boolean,\n text: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n tabbarLabel: Boolean,\n iconOnly: Boolean,\n badge: [String, Number],\n badgeColor: [String],\n iconBadge: [String, Number],\n href: {\n type: [String, Boolean],\n default: '#'\n },\n target: String,\n tooltip: String,\n tooltipTrigger: String,\n smartSelect: Boolean,\n smartSelectParams: Object\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isTabbarLabel: props.tabbarLabel\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n text,\n badge,\n badgeColor,\n iconOnly,\n iconBadge,\n icon,\n iconColor,\n iconSize,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n id,\n style\n } = props;\n const defaultSlots = self.$slots.default || [];\n Object.keys(self.$slots).forEach(key => {\n if (typeof self.$slots[key] === 'undefined' || key === 'default') return;\n self.$slots[key].forEach(child => defaultSlots.push(child));\n });\n let iconEl;\n let textEl;\n let badgeEl;\n let iconBadgeEl;\n\n if (text) {\n if (badge) badgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [badge]);\n textEl = _h('span', {\n class: self.state.isTabbarLabel ? 'tabbar-label' : ''\n }, [text, badgeEl]);\n }\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n if (iconBadge) {\n iconBadgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [iconBadge]);\n }\n\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n }, [iconBadgeEl]);\n }\n\n if (iconOnly || !text && defaultSlots && defaultSlots.length === 0 || !text && !defaultSlots) {\n self.iconOnlyComputed = true;\n } else {\n self.iconOnlyComputed = false;\n }\n\n return _h('a', __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n style: style,\n class: self.classes\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [iconEl, textEl, defaultSlots]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n el.addEventListener('click', self.onClick);\n const {\n tabbarLabel,\n tabLink,\n tooltip,\n tooltipTrigger,\n smartSelect,\n smartSelectParams,\n routeProps\n } = self.props;\n let isTabbarLabel = false;\n\n if (tabbarLabel || (tabLink || tabLink === '') && self.$$(el).parents('.tabbar-labels').length) {\n isTabbarLabel = true;\n }\n\n self.setState({\n isTabbarLabel\n });\n if (routeProps) el.f7RouteProps = routeProps;\n self.$f7ready(f7 => {\n if (smartSelect) {\n const ssParams = Utils.extend({\n el\n }, smartSelectParams || {});\n self.f7SmartSelect = f7.smartSelect.create(ssParams);\n }\n\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n el.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n\n if (self.f7SmartSelect && self.f7SmartSelect.destroy) {\n self.f7SmartSelect.destroy();\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n target,\n tabLink\n } = props;\n let hrefComputed = href;\n if (href === true) hrefComputed = '#';\n if (href === false) hrefComputed = undefined;\n return Utils.extend({\n href: hrefComputed,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive,\n noLinkClass,\n smartSelect,\n className\n } = props;\n return Utils.classNames(className, {\n link: !(noLinkClass || self.state.isTabbarLabel),\n 'icon-only': self.iconOnlyComputed,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive,\n 'smart-select': smartSelect\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-button',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n link: [Boolean, String],\n href: [Boolean, String],\n target: String,\n tooltip: String,\n tooltipTrigger: String\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = this.props;\n const {\n className,\n id,\n style,\n title,\n text\n } = props;\n return _h('li', {\n style: style,\n class: className,\n attrs: {\n id: id\n }\n }, [_h('a', __vueComponentTransformJSXProps(Object.assign({\n class: self.classes\n }, self.attrs, {\n ref: 'linkEl'\n })), [this.$slots['default'] || [title || text]])]);\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n link,\n href,\n target,\n tabLink\n } = props;\n return Utils.extend({\n href: typeof link === 'boolean' && typeof href === 'boolean' ? '#' : link || href,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n tabLink,\n tabLinkActive\n } = props;\n return Utils.classNames({\n 'list-button': true,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive\n }, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n const {\n routeProps,\n tooltip,\n tooltipTrigger\n } = self.props;\n\n if (routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n linkEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: linkEl,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n const {\n routeProps\n } = self.props;\n\n if (routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const linkEl = self.$refs.linkEl;\n linkEl.removeEventListener('click', this.onClick);\n delete linkEl.f7RouteProps;\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-group',\n props: Object.assign({\n id: [String, Number],\n mediaList: Boolean,\n sortable: Boolean,\n sortableOpposite: Boolean,\n sortableTapHold: Boolean,\n sortableMoveElements: {\n type: Boolean,\n default: undefined\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n mediaList,\n sortable,\n sortableOpposite,\n sortableTapHold,\n sortableMoveElements\n } = props;\n const classes = Utils.classNames(className, 'list-group', {\n 'media-list': mediaList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-opposite': sortableOpposite\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [_h('ul', [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-index',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n listEl: [String, Object],\n indexes: {\n type: [String, Array],\n default: 'auto'\n },\n scrollList: {\n type: Boolean,\n default: true\n },\n label: {\n type: Boolean,\n default: false\n },\n iosItemHeight: {\n type: Number,\n default: 14\n },\n mdItemHeight: {\n type: Number,\n default: 14\n },\n auroraItemHeight: {\n type: Number,\n default: 14\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'list-index', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n beforeDestroy() {\n if (!this.props.init) return;\n\n if (this.f7ListIndex && this.f7ListIndex.destroy) {\n this.f7ListIndex.destroy();\n }\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const el = self.$refs.el;\n const {\n listEl,\n indexes,\n iosItemHeight,\n mdItemHeight,\n auroraItemHeight,\n scrollList,\n label\n } = self.props;\n self.f7ListIndex = f7.listIndex.create({\n el,\n listEl,\n indexes,\n iosItemHeight,\n mdItemHeight,\n auroraItemHeight,\n scrollList,\n label,\n on: {\n select(index, itemContent, itemIndex) {\n self.dispatchEvent('listindex:select listIndexSelect', itemContent, itemIndex);\n }\n\n }\n });\n });\n },\n\n watch: {\n 'props.indexes': function watchIndexes() {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.params.indexes = this.props.indexes;\n this.update();\n }\n },\n methods: {\n update() {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.update();\n },\n\n scrollListToIndex(indexContent) {\n if (!this.f7ListIndex) return;\n this.f7ListIndex.scrollListToIndex(indexContent);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7TextEditor from './text-editor';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-input',\n props: Object.assign({\n id: [String, Number],\n sortable: {\n type: Boolean,\n default: undefined\n },\n media: String,\n dropdown: {\n type: [String, Boolean],\n default: 'auto'\n },\n wrap: {\n type: Boolean,\n default: true\n },\n input: {\n type: Boolean,\n default: true\n },\n type: {\n type: String,\n default: 'text'\n },\n name: String,\n value: [String, Number, Array, Date, Object],\n defaultValue: [String, Number, Array],\n inputmode: String,\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean,\n placeholder: String,\n inputId: [String, Number],\n size: [String, Number],\n accept: [String, Number],\n autocomplete: [String],\n autocorrect: [String],\n autocapitalize: [String],\n spellcheck: [String],\n autofocus: Boolean,\n autosave: String,\n max: [String, Number],\n min: [String, Number],\n step: [String, Number],\n maxlength: [String, Number],\n minlength: [String, Number],\n multiple: Boolean,\n inputStyle: [String, Object],\n pattern: String,\n validate: [Boolean, String],\n validateOnBlur: Boolean,\n onValidate: Function,\n tabindex: [String, Number],\n resizable: Boolean,\n clearButton: Boolean,\n noFormStoreData: Boolean,\n noStoreData: Boolean,\n ignoreStoreData: Boolean,\n errorMessage: String,\n errorMessageForce: Boolean,\n info: String,\n outline: Boolean,\n label: [String, Number],\n inlineLabel: Boolean,\n floatingLabel: Boolean,\n calendarParams: Object,\n colorPickerParams: Object,\n textEditorParams: Object\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isSortable: props.sortable,\n inputFocused: false,\n inputInvalid: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n inputFocused,\n inputInvalid\n } = self.state;\n const props = self.props;\n const {\n id,\n style,\n className,\n sortable,\n media,\n dropdown,\n input: renderInput,\n wrap,\n type,\n name,\n value,\n defaultValue,\n readonly,\n required,\n disabled,\n inputmode,\n placeholder,\n inputId,\n size,\n accept,\n autocomplete,\n autocorrect,\n autocapitalize,\n spellcheck,\n autofocus,\n autosave,\n max,\n min,\n step,\n maxlength,\n minlength,\n multiple,\n inputStyle,\n pattern,\n validate,\n validateOnBlur,\n tabindex,\n resizable,\n clearButton,\n noFormStoreData,\n noStoreData,\n ignoreStoreData,\n errorMessage,\n errorMessageForce,\n info,\n outline,\n label,\n inlineLabel,\n floatingLabel,\n textEditorParams\n } = props;\n const domValue = self.domValue();\n const inputHasValue = self.inputHasValue();\n const isSortable = sortable || self.state.isSortable;\n\n const createInput = (InputTag, children) => {\n const needsValue = type !== 'file' && type !== 'datepicker' && type !== 'colorpicker';\n const needsType = InputTag === 'input';\n let inputType = type;\n\n if (inputType === 'datepicker' || inputType === 'colorpicker') {\n inputType = 'text';\n }\n\n const inputClassName = Utils.classNames({\n resizable: inputType === 'textarea' && resizable,\n 'no-store-data': noFormStoreData || noStoreData || ignoreStoreData,\n 'input-invalid': errorMessage && errorMessageForce || inputInvalid,\n 'input-with-value': inputHasValue,\n 'input-focused': inputFocused\n });\n let input;\n let inputValue;\n\n if (needsValue) {\n if (typeof value !== 'undefined') inputValue = value;else inputValue = domValue;\n }\n\n const valueProps = {};\n\n if (type !== 'datepicker' && type !== 'colorpicker') {\n if ('value' in props) valueProps.value = inputValue;\n if ('defaultValue' in props) valueProps.defaultValue = defaultValue;\n }\n\n {\n input = _h(InputTag, {\n ref: 'inputEl',\n style: inputStyle,\n class: inputClassName,\n domProps: Object.assign({\n disabled,\n readOnly: readonly,\n multiple,\n required\n }, valueProps),\n on: {\n focus: self.onFocus,\n blur: self.onBlur,\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n type: needsType ? inputType : undefined,\n placeholder: placeholder,\n inputmode: inputmode,\n id: inputId,\n size: size,\n accept: accept,\n autocomplete: autocomplete,\n autocorrect: autocorrect,\n autocapitalize: autocapitalize,\n spellcheck: spellcheck,\n autofocus: autofocus,\n autoSave: autosave,\n max: max,\n maxlength: maxlength,\n min: min,\n minlength: minlength,\n step: step,\n pattern: pattern,\n validate: typeof validate === 'string' && validate.length ? validate : undefined,\n 'data-validate': validate === true || validate === '' || validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n 'data-validate-on-blur': validateOnBlur === true || validateOnBlur === '' ? true : undefined,\n tabindex: tabindex,\n 'data-error-message': errorMessageForce ? undefined : errorMessage\n }\n }, [children]);\n }\n return input;\n };\n\n let inputEl;\n\n if (renderInput) {\n if (type === 'select' || type === 'textarea' || type === 'file') {\n if (type === 'select') {\n inputEl = createInput('select', self.$slots.default);\n } else if (type === 'file') {\n inputEl = createInput('input');\n } else {\n inputEl = createInput('textarea');\n }\n } else if (type === 'texteditor') {\n inputEl = _h(F7TextEditor, __vueComponentTransformJSXProps(Object.assign({}, textEditorParams, {\n on: {\n textEditorFocus: self.onFocus,\n textEditorBlur: self.onBlur,\n textEditorInput: self.onInput,\n textEditorChange: self.onChange\n },\n attrs: {\n value: value,\n resizable: resizable,\n placeholder: placeholder\n }\n })));\n } else {\n inputEl = createInput('input');\n }\n }\n\n const hasErrorMessage = !!errorMessage || self.$slots['error-message'] && self.$slots['error-message'].length;\n\n const ItemContent = _h('div', {\n ref: 'itemContentEl',\n class: Utils.classNames('item-content item-input', !wrap && className, !wrap && {\n disabled\n }, !wrap && Mixins.colorClasses(props), {\n 'inline-label': inlineLabel,\n 'item-input-outline': outline,\n 'item-input-focused': inputFocused,\n 'item-input-with-info': !!info || self.$slots.info && self.$slots.info.length,\n 'item-input-with-value': inputHasValue,\n 'item-input-with-error-message': hasErrorMessage && errorMessageForce || inputInvalid,\n 'item-input-invalid': hasErrorMessage && errorMessageForce || inputInvalid\n })\n }, [this.$slots['content-start'], (media || self.$slots.media) && _h('div', {\n class: 'item-media'\n }, [media && _h('img', {\n attrs: {\n src: media\n }\n }), this.$slots['media']]), _h('div', {\n class: 'item-inner'\n }, [this.$slots['inner-start'], (label || self.$slots.label) && _h('div', {\n class: Utils.classNames('item-title item-label', {\n 'item-floating-label': floatingLabel\n })\n }, [label, this.$slots['label']]), _h('div', {\n class: Utils.classNames('item-input-wrap', {\n 'input-dropdown': dropdown === 'auto' ? type === 'select' : dropdown\n })\n }, [inputEl, this.$slots['input'], hasErrorMessage && errorMessageForce && _h('div', {\n class: 'item-input-error-message'\n }, [errorMessage, this.$slots['error-message']]), clearButton && _h('span', {\n class: 'input-clear-button'\n }), (info || self.$slots.info) && _h('div', {\n class: 'item-input-info'\n }, [info, this.$slots['info']])]), this.$slots['inner'], this.$slots['inner-end']]), this.$slots['content'], this.$slots['content-end']]);\n\n if (!wrap) {\n return ItemContent;\n }\n\n return _h('li', {\n ref: 'el',\n style: style,\n class: Utils.classNames(className, {\n disabled\n }, Mixins.colorClasses(props)),\n attrs: {\n id: id\n }\n }, [this.$slots['root-start'], ItemContent, isSortable && _h('div', {\n class: 'sortable-handler'\n }), this.$slots['root'], this.$slots['root-end']]);\n },\n\n watch: {\n 'props.value': function watchValue() {\n const self = this;\n if (!self.$f7) return;\n self.updateInputOnDidUpdate = true;\n\n if (self.f7Calendar) {\n self.f7Calendar.setValue(self.props.value);\n }\n\n if (self.f7ColorPicker) {\n self.f7ColorPicker.setValue(self.props.value);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, 'onChange onInput onFocus onBlur onTextareaResize onInputNotEmpty onInputEmpty onInputClear'.split(' '));\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const itemContentEl = self.$refs.itemContentEl;\n if (!el && !itemContentEl) return;\n self.$f7ready(f7 => {\n const {\n validate,\n validateOnBlur,\n resizable,\n value,\n defaultValue,\n type,\n calendarParams,\n colorPickerParams\n } = self.props;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.addEventListener('input:notempty', self.onInputNotEmpty, false);\n inputEl.addEventListener('textarea:resize', self.onTextareaResize, false);\n inputEl.addEventListener('input:empty', self.onInputEmpty, false);\n inputEl.addEventListener('input:clear', self.onInputClear, false);\n\n if (type === 'datepicker') {\n self.f7Calendar = f7.calendar.create(Object.assign({\n inputEl,\n value,\n on: {\n change(calendar, calendarValue) {\n self.dispatchEvent('calendar:change calendarChange', calendarValue);\n }\n\n }\n }, calendarParams || {}));\n }\n\n if (type === 'colorpicker') {\n self.f7ColorPicker = f7.colorPicker.create(Object.assign({\n inputEl,\n value,\n on: {\n change(colorPicker, colorPickerValue) {\n self.dispatchEvent('colorpicker:change colorPickerChange', colorPickerValue);\n }\n\n }\n }, colorPickerParams || {}));\n }\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && (typeof value !== 'undefined' && value !== null && value !== '' || typeof defaultValue !== 'undefined' && defaultValue !== null && defaultValue !== '')) {\n setTimeout(() => {\n self.validateInput(inputEl);\n }, 0);\n }\n\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n });\n self.$listEl = self.$$(el || itemContentEl).parents('.list, .list-group').eq(0);\n\n if (self.$listEl.length) {\n self.setState({\n isSortable: self.$listEl.hasClass('sortable')\n });\n }\n },\n\n updated() {\n const self = this;\n const {\n $listEl\n } = self;\n if (!$listEl || $listEl && $listEl.length === 0) return;\n const isSortable = $listEl.hasClass('sortable');\n\n if (isSortable !== self.state.isSortable) {\n self.setState({\n isSortable\n });\n }\n\n const {\n validate,\n validateOnBlur,\n resizable,\n type\n } = self.props;\n const f7 = self.$f7;\n if (!f7) return;\n\n if (self.updateInputOnDidUpdate) {\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n self.updateInputOnDidUpdate = false;\n\n if (validate && !validateOnBlur) {\n self.validateInput(inputEl);\n }\n\n if (type === 'textarea' && resizable) {\n f7.input.resizeTextarea(inputEl);\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const inputEl = self.$refs.inputEl;\n if (!inputEl) return;\n inputEl.removeEventListener('input:notempty', self.onInputNotEmpty, false);\n inputEl.removeEventListener('textarea:resize', self.onTextareaResize, false);\n inputEl.removeEventListener('input:empty', self.onInputEmpty, false);\n inputEl.removeEventListener('input:clear', self.onInputClear, false);\n\n if (self.f7Calendar && self.f7Calendar.destroy) {\n self.f7Calendar.destroy();\n }\n\n if (self.f7ColorPicker && self.f7ColorPicker.destroy) {\n self.f7ColorPicker.destroy();\n }\n\n delete self.f7Calendar;\n delete self.f7ColorPicker;\n },\n\n methods: {\n domValue() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n if (!inputEl) return undefined;\n return inputEl.value;\n },\n\n inputHasValue() {\n const self = this;\n const {\n value,\n type\n } = self.props;\n\n if (type === 'datepicker' && Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n const domValue = self.domValue();\n return typeof value === 'undefined' ? domValue || domValue === 0 : value || value === 0;\n },\n\n validateInput(inputEl) {\n const self = this;\n const f7 = self.$f7;\n if (!f7 || !inputEl) return;\n const validity = inputEl.validity;\n if (!validity) return;\n const {\n onValidate\n } = self.props;\n\n if (!validity.valid) {\n if (onValidate) onValidate(false);\n\n if (self.state.inputInvalid !== true) {\n self.setState({\n inputInvalid: true\n });\n }\n } else if (self.state.inputInvalid !== false) {\n if (onValidate) onValidate(true);\n self.setState({\n inputInvalid: false\n });\n }\n },\n\n onTextareaResize(event) {\n this.dispatchEvent('textarea:resize textareaResize', event);\n },\n\n onInputNotEmpty(event) {\n this.dispatchEvent('input:notempty inputNotEmpty', event);\n },\n\n onInputEmpty(event) {\n this.dispatchEvent('input:empty inputEmpty', event);\n },\n\n onInputClear(event) {\n this.dispatchEvent('input:clear inputClear', event);\n },\n\n onInput(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('input', ...args);\n\n if (!(validateOnBlur || validateOnBlur === '') && (validate || validate === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n },\n\n onFocus(...args) {\n this.dispatchEvent('focus', ...args);\n this.setState({\n inputFocused: true\n });\n },\n\n onBlur(...args) {\n const self = this;\n const {\n validate,\n validateOnBlur\n } = self.props;\n self.dispatchEvent('blur', ...args);\n\n if ((validate || validate === '' || validateOnBlur || validateOnBlur === '') && self.$refs && self.$refs.inputEl) {\n self.validateInput(self.$refs.inputEl);\n }\n\n self.setState({\n inputFocused: false\n });\n },\n\n onChange(...args) {\n this.dispatchEvent('change', ...args);\n\n if (this.props.type === 'texteditor') {\n this.dispatchEvent('texteditor:change textEditorChange', args[0]);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-cell',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'item-cell', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Badge from './badge';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-content',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n media: String,\n subtitle: [String, Number],\n header: [String, Number],\n footer: [String, Number],\n after: [String, Number],\n badge: [String, Number],\n badgeColor: String,\n mediaList: Boolean,\n mediaItem: Boolean,\n checkbox: Boolean,\n checked: Boolean,\n defaultChecked: Boolean,\n indeterminate: Boolean,\n radio: Boolean,\n radioIcon: String,\n name: String,\n value: [String, Number, Array],\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n radio,\n radioIcon,\n checkbox,\n value,\n name,\n checked,\n defaultChecked,\n readonly,\n disabled,\n required,\n media,\n header,\n footer,\n title,\n subtitle,\n text,\n after,\n badge,\n mediaList,\n mediaItem,\n badgeColor\n } = props;\n const slotsContentStart = [];\n const slotsContent = [];\n const slotsContentEnd = [];\n const slotsInnerStart = [];\n const slotsInner = [];\n const slotsInnerEnd = [];\n const slotsAfterStart = [];\n const slotsAfter = [];\n const slotsAfterEnd = [];\n const slotsMedia = [];\n const slotsBeforeTitle = [];\n const slotsTitle = [];\n const slotsAfterTitle = [];\n const slotsSubtitle = [];\n const slotsText = [];\n const slotsHeader = [];\n const slotsFooter = [];\n let titleEl;\n let afterWrapEl;\n let afterEl;\n let badgeEl;\n let innerEl;\n let titleRowEl;\n let subtitleEl;\n let textEl;\n let mediaEl;\n let inputEl;\n let inputIconEl;\n let headerEl;\n let footerEl;\n const slotsDefault = self.$slots.default;\n const flattenSlots = [];\n\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(slot => {\n if (Array.isArray(slot)) flattenSlots.push(...slot);else flattenSlots.push(slot);\n });\n }\n\n const passedSlotsContentStart = self.$slots['content-start'];\n\n if (passedSlotsContentStart && passedSlotsContentStart.length) {\n slotsContentStart.push(...passedSlotsContentStart);\n }\n\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let slotName;\n slotName = child.data ? child.data.slot : undefined;\n if (!slotName || slotName === 'inner') slotsInner.push(child);\n if (slotName === 'content-start') slotsContentStart.push(child);\n if (slotName === 'content') slotsContent.push(child);\n if (slotName === 'content-end') slotsContentEnd.push(child);\n if (slotName === 'after-start') slotsAfterStart.push(child);\n if (slotName === 'after') slotsAfter.push(child);\n if (slotName === 'after-end') slotsAfterEnd.push(child);\n if (slotName === 'media') slotsMedia.push(child);\n if (slotName === 'inner-start') slotsInnerStart.push(child);\n if (slotName === 'inner-end') slotsInnerEnd.push(child);\n if (slotName === 'before-title') slotsBeforeTitle.push(child);\n if (slotName === 'title') slotsTitle.push(child);\n if (slotName === 'after-title') slotsAfterTitle.push(child);\n if (slotName === 'subtitle') slotsSubtitle.push(child);\n if (slotName === 'text') slotsText.push(child);\n if (slotName === 'header') slotsHeader.push(child);\n if (slotName === 'footer') slotsFooter.push(child);\n });\n\n if (radio || checkbox) {\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n checked,\n readonly,\n disabled,\n required,\n value\n },\n on: {\n change: this.onChange\n },\n attrs: {\n name: name,\n type: radio ? 'radio' : 'checkbox'\n }\n });\n }\n inputIconEl = _h('i', {\n class: `icon icon-${radio ? 'radio' : 'checkbox'}`\n });\n }\n\n if (media || slotsMedia.length) {\n let mediaImgEl;\n\n if (media) {\n mediaImgEl = _h('img', {\n attrs: {\n src: media\n }\n });\n }\n\n mediaEl = _h('div', {\n class: 'item-media'\n }, [mediaImgEl, slotsMedia]);\n }\n\n const isMedia = mediaItem || mediaList;\n\n if (header || slotsHeader.length) {\n headerEl = _h('div', {\n class: 'item-header'\n }, [header, slotsHeader]);\n }\n\n if (footer || slotsFooter.length) {\n footerEl = _h('div', {\n class: 'item-footer'\n }, [footer, slotsFooter]);\n }\n\n if (title || slotsTitle.length || !isMedia && headerEl || !isMedia && footerEl) {\n titleEl = _h('div', {\n class: 'item-title'\n }, [!isMedia && headerEl, title, slotsTitle, !isMedia && footerEl]);\n }\n\n if (subtitle || slotsSubtitle.length) {\n subtitleEl = _h('div', {\n class: 'item-subtitle'\n }, [subtitle, slotsSubtitle]);\n }\n\n if (text || slotsText.length) {\n textEl = _h('div', {\n class: 'item-text'\n }, [text, slotsText]);\n }\n\n if (after || badge || slotsAfter.length) {\n if (after) {\n afterEl = _h('span', [after]);\n }\n\n if (badge) {\n badgeEl = _h(F7Badge, {\n attrs: {\n color: badgeColor\n }\n }, [badge]);\n }\n\n afterWrapEl = _h('div', {\n class: 'item-after'\n }, [slotsAfterStart, afterEl, badgeEl, slotsAfter, slotsAfterEnd]);\n }\n\n if (isMedia) {\n titleRowEl = _h('div', {\n class: 'item-title-row'\n }, [slotsBeforeTitle, titleEl, slotsAfterTitle, afterWrapEl]);\n innerEl = _h('div', {\n ref: 'innerEl',\n class: 'item-inner'\n }, [slotsInnerStart, headerEl, titleRowEl, subtitleEl, textEl, slotsInner, footerEl, slotsInnerEnd]);\n } else {\n innerEl = _h('div', {\n ref: 'innerEl',\n class: 'item-inner'\n }, [slotsInnerStart, slotsBeforeTitle, titleEl, slotsAfterTitle, afterWrapEl, slotsInner, slotsInnerEnd]);\n }\n\n const ItemContentTag = checkbox || radio ? 'label' : 'div';\n const classes = Utils.classNames(className, 'item-content', {\n 'item-checkbox': checkbox,\n 'item-radio': radio,\n 'item-radio-icon-start': radio && radioIcon === 'start',\n 'item-radio-icon-end': radio && radioIcon === 'end'\n }, Mixins.colorClasses(props));\n return _h(ItemContentTag, {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [slotsContentStart, inputEl, inputIconEl, mediaEl, innerEl, slotsContent, slotsContentEnd]);\n },\n\n created() {\n Utils.bindMethods(this, 'onClick onChange'.split(' '));\n },\n\n mounted() {\n const self = this;\n const {\n el,\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (indeterminate && inputEl) {\n inputEl.indeterminate = true;\n }\n\n el.addEventListener('click', self.onClick);\n },\n\n updated() {\n const self = this;\n const {\n inputEl\n } = self.$refs;\n const {\n indeterminate\n } = self.props;\n\n if (inputEl) {\n inputEl.indeterminate = indeterminate;\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n el.removeEventListener('click', self.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item-row',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'item-row', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport F7ListItemContent from './list-item-content';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list-item',\n props: Object.assign({\n id: [String, Number],\n title: [String, Number],\n text: [String, Number],\n media: String,\n subtitle: [String, Number],\n header: [String, Number],\n footer: [String, Number],\n tooltip: String,\n tooltipTrigger: String,\n link: [Boolean, String],\n target: String,\n tabLink: [Boolean, String],\n tabLinkActive: Boolean,\n after: [String, Number],\n badge: [String, Number],\n badgeColor: String,\n mediaItem: Boolean,\n mediaList: Boolean,\n divider: Boolean,\n groupTitle: Boolean,\n swipeout: Boolean,\n swipeoutOpened: Boolean,\n sortable: {\n type: Boolean,\n default: undefined\n },\n sortableOpposite: {\n type: Boolean,\n default: undefined\n },\n accordionItem: Boolean,\n accordionItemOpened: Boolean,\n smartSelect: Boolean,\n smartSelectParams: Object,\n noChevron: Boolean,\n chevronCenter: Boolean,\n checkbox: Boolean,\n radio: Boolean,\n radioIcon: String,\n checked: Boolean,\n defaultChecked: Boolean,\n indeterminate: Boolean,\n name: String,\n value: [String, Number, Array],\n readonly: Boolean,\n required: Boolean,\n disabled: Boolean,\n virtualListIndex: Number\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n isMedia: props.mediaItem || props.mediaList,\n isSortable: props.sortable,\n isSortableOpposite: props.sortableOpposite,\n isSimple: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let linkEl;\n let itemContentEl;\n const props = self.props;\n const {\n id,\n style,\n className,\n title,\n text,\n media,\n subtitle,\n header,\n footer,\n link,\n tabLink,\n tabLinkActive,\n href,\n target,\n after,\n badge,\n badgeColor,\n mediaItem,\n mediaList,\n divider,\n groupTitle,\n swipeout,\n accordionItem,\n accordionItemOpened,\n smartSelect,\n checkbox,\n radio,\n radioIcon,\n checked,\n defaultChecked,\n indeterminate,\n name,\n value,\n readonly,\n required,\n disabled,\n sortable,\n sortableOpposite,\n noChevron,\n chevronCenter,\n virtualListIndex\n } = props;\n const isMedia = mediaItem || mediaList || self.state.isMedia;\n const isSortable = sortable || self.state.isSortable;\n const isSortableOpposite = isSortable && (sortableOpposite || self.state.isSortableOpposite);\n const isSimple = self.state.isSimple;\n\n if (!isSimple) {\n const needsEvents = !(link || href || accordionItem || smartSelect);\n itemContentEl = _h(F7ListItemContent, {\n on: needsEvents ? {\n click: self.onClick,\n change: self.onChange\n } : undefined,\n attrs: {\n title: title,\n text: text,\n media: media,\n subtitle: subtitle,\n after: after,\n header: header,\n footer: footer,\n badge: badge,\n badgeColor: badgeColor,\n mediaList: isMedia,\n accordionItem: accordionItem,\n checkbox: checkbox,\n checked: checked,\n defaultChecked: defaultChecked,\n indeterminate: indeterminate,\n radio: radio,\n radioIcon: radioIcon,\n name: name,\n value: value,\n readonly: readonly,\n required: required,\n disabled: disabled\n }\n }, [this.$slots['content-start'], this.$slots['content'], this.$slots['content-end'], this.$slots['media'], this.$slots['inner-start'], this.$slots['inner'], this.$slots['inner-end'], this.$slots['after-start'], this.$slots['after'], this.$slots['after-end'], this.$slots['header'], this.$slots['footer'], this.$slots['before-title'], this.$slots['title'], this.$slots['after-title'], this.$slots['subtitle'], this.$slots['text'], swipeout || accordionItem ? null : self.$slots.default, isSortable && sortable !== false && isSortableOpposite && _h('div', {\n class: 'sortable-handler',\n slot: 'content-start'\n })]);\n\n if (link || href || accordionItem || smartSelect) {\n const linkAttrs = Object.assign({\n href: link === true ? '' : link || href,\n target,\n 'data-tab': Utils.isStringProp(tabLink) && tabLink || undefined\n }, Mixins.linkRouterAttrs(props), {}, Mixins.linkActionsAttrs(props));\n const linkClasses = Utils.classNames({\n 'item-link': true,\n 'smart-select': smartSelect,\n 'tab-link': tabLink || tabLink === '',\n 'tab-link-active': tabLinkActive\n }, Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n linkEl = _h('a', __vueComponentTransformJSXProps(Object.assign({\n ref: 'linkEl',\n class: linkClasses\n }, linkAttrs)), [itemContentEl]);\n }\n }\n\n const liClasses = Utils.classNames(className, {\n 'item-divider': divider,\n 'list-group-title': groupTitle,\n 'media-item': isMedia,\n swipeout,\n 'accordion-item': accordionItem,\n 'accordion-item-opened': accordionItemOpened,\n disabled: disabled && !(radio || checkbox),\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter,\n 'disallow-sorting': sortable === false\n }, Mixins.colorClasses(props));\n\n if (divider || groupTitle) {\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [_h('span', [this.$slots['default'] || [title]])]);\n }\n\n if (isSimple) {\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [title, this.$slots['default']]);\n }\n\n const linkItemEl = link || href || smartSelect || accordionItem ? linkEl : itemContentEl;\n return _h('li', {\n ref: 'el',\n style: style,\n class: liClasses,\n attrs: {\n id: id,\n 'data-virtual-list-index': virtualListIndex\n }\n }, [this.$slots['root-start'], swipeout ? _h('div', {\n class: 'swipeout-content'\n }, [linkItemEl]) : linkItemEl, isSortable && sortable !== false && !isSortableOpposite && _h('div', {\n class: 'sortable-handler'\n }), (swipeout || accordionItem) && self.$slots.default, this.$slots['root'], this.$slots['root-end']]);\n },\n\n watch: {\n 'props.tooltip': function watchTooltip(newText) {\n const self = this;\n\n if (!newText && self.f7Tooltip) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n return;\n }\n\n if (newText && !self.f7Tooltip && self.$f7) {\n self.f7Tooltip = self.$f7.tooltip.create({\n targetEl: self.$refs.el,\n text: newText,\n trigger: self.props.tooltipTrigger\n });\n return;\n }\n\n if (!newText || !self.f7Tooltip) return;\n self.f7Tooltip.setText(newText);\n },\n 'props.swipeoutOpened': function watchSwipeoutOpened(opened) {\n const self = this;\n if (!self.props.swipeout) return;\n const el = self.$refs.el;\n\n if (opened) {\n self.$f7.swipeout.open(el);\n } else {\n self.$f7.swipeout.close(el);\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onChange', 'onSwipeoutOpen', 'onSwipeoutOpened', 'onSwipeoutClose', 'onSwipeoutClosed', 'onSwipeoutDelete', 'onSwipeoutDeleted', 'onSwipeoutOverswipeEnter', 'onSwipeoutOverswipeExit', 'onSwipeout', 'onAccBeforeOpen', 'onAccOpen', 'onAccOpened', 'onAccBeforeClose', 'onAccClose', 'onAccClosed']);\n },\n\n mounted() {\n const self = this;\n const {\n el,\n linkEl\n } = self.$refs;\n if (!el) return;\n const {\n link,\n href,\n smartSelect,\n swipeout,\n swipeoutOpened,\n accordionItem,\n smartSelectParams,\n routeProps,\n tooltip,\n tooltipTrigger\n } = self.props;\n const needsEvents = !(link || href || accordionItem || smartSelect);\n\n if (!needsEvents && linkEl) {\n linkEl.addEventListener('click', self.onClick);\n }\n\n if (linkEl && routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n self.$listEl = self.$$(el).parents('.list, .list-group').eq(0);\n\n if (self.$listEl.length) {\n self.setState({\n isMedia: self.$listEl.hasClass('media-list'),\n isSimple: self.$listEl.hasClass('simple-list'),\n isSortable: self.$listEl.hasClass('sortable'),\n isSortableOpposite: self.$listEl.hasClass('sortable-opposite')\n });\n }\n\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n\n if (swipeout) {\n f7.on('swipeoutOpen', self.onSwipeoutOpen);\n f7.on('swipeoutOpened', self.onSwipeoutOpened);\n f7.on('swipeoutClose', self.onSwipeoutClose);\n f7.on('swipeoutClosed', self.onSwipeoutClosed);\n f7.on('swipeoutDelete', self.onSwipeoutDelete);\n f7.on('swipeoutDeleted', self.onSwipeoutDeleted);\n f7.on('swipeoutOverswipeEnter', self.onSwipeoutOverswipeEnter);\n f7.on('swipeoutOverswipeExit', self.onSwipeoutOverswipeExit);\n f7.on('swipeout', self.onSwipeout);\n }\n\n if (accordionItem) {\n f7.on('accordionBeforeOpen', self.onAccBeforeOpen);\n f7.on('accordionOpen', self.onAccOpen);\n f7.on('accordionOpened', self.onAccOpened);\n f7.on('accordionBeforeClose', self.onAccBeforeClose);\n f7.on('accordionClose', self.onAccClose);\n f7.on('accordionClosed', self.onAccClosed);\n }\n\n if (smartSelect) {\n const ssParams = Utils.extend({\n el: el.querySelector('a.smart-select')\n }, smartSelectParams || {});\n self.f7SmartSelect = f7.smartSelect.create(ssParams);\n }\n\n if (swipeoutOpened) {\n f7.swipeout.open(el);\n }\n\n if (tooltip) {\n self.f7Tooltip = f7.tooltip.create({\n targetEl: el,\n text: tooltip,\n trigger: tooltipTrigger\n });\n }\n });\n },\n\n updated() {\n const self = this;\n const {\n $listEl\n } = self;\n const {\n linkEl\n } = self.$refs;\n const {\n routeProps\n } = self.props;\n\n if (linkEl && routeProps) {\n linkEl.f7RouteProps = routeProps;\n }\n\n if (!$listEl || $listEl && $listEl.length === 0) return;\n const isMedia = $listEl.hasClass('media-list');\n const isSimple = $listEl.hasClass('simple-list');\n const isSortable = $listEl.hasClass('sortable');\n const isSortableOpposite = $listEl.hasClass('sortable-opposite');\n\n if (isMedia !== self.state.isMedia) {\n self.setState({\n isMedia\n });\n }\n\n if (isSimple !== self.state.isSimple) {\n self.setState({\n isSimple\n });\n }\n\n if (isSortable !== self.state.isSortable) {\n self.setState({\n isSortable\n });\n\n if (isSortableOpposite !== self.state.isSortableOpposite) {\n self.setState({\n isSortableOpposite\n });\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n const {\n linkEl\n } = self.$refs;\n const {\n link,\n href,\n smartSelect,\n swipeout,\n accordionItem\n } = self.props;\n const needsEvents = !(link || href || accordionItem || smartSelect);\n\n if (linkEl) {\n if (!needsEvents) {\n linkEl.removeEventListener('click', self.onClick);\n }\n\n delete linkEl.f7RouteProps;\n }\n\n if (self.$f7) {\n const f7 = self.$f7;\n\n if (swipeout) {\n f7.off('swipeoutOpen', self.onSwipeoutOpen);\n f7.off('swipeoutOpened', self.onSwipeoutOpened);\n f7.off('swipeoutClose', self.onSwipeoutClose);\n f7.off('swipeoutClosed', self.onSwipeoutClosed);\n f7.off('swipeoutDelete', self.onSwipeoutDelete);\n f7.off('swipeoutDeleted', self.onSwipeoutDeleted);\n f7.off('swipeoutOverswipeEnter', self.onSwipeoutOverswipeEnter);\n f7.off('swipeoutOverswipeExit', self.onSwipeoutOverswipeExit);\n f7.off('swipeout', self.onSwipeout);\n }\n\n if (accordionItem) {\n f7.off('accordionBeforeOpen', self.onAccBeforeOpen);\n f7.off('accordionOpen', self.onAccOpen);\n f7.off('accordionOpened', self.onAccOpened);\n f7.off('accordionBeforeClose', self.onAccBeforeClose);\n f7.off('accordionClose', self.onAccClose);\n f7.off('accordionClosed', self.onAccClosed);\n }\n }\n\n if (smartSelect && self.f7SmartSelect) {\n self.f7SmartSelect.destroy();\n }\n\n if (self.f7Tooltip && self.f7Tooltip.destroy) {\n self.f7Tooltip.destroy();\n self.f7Tooltip = null;\n delete self.f7Tooltip;\n }\n\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n const self = this;\n\n if (event.target.tagName.toLowerCase() !== 'input') {\n self.dispatchEvent('click', event);\n }\n },\n\n onSwipeoutOverswipeEnter(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:overswipeenter swipeoutOverswipeEnter');\n },\n\n onSwipeoutOverswipeExit(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:overswipeexit swipeoutOverswipeExit');\n },\n\n onSwipeoutDeleted(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:deleted swipeoutDeleted');\n },\n\n onSwipeoutDelete(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:delete swipeoutDelete');\n },\n\n onSwipeoutClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:close swipeoutClose');\n },\n\n onSwipeoutClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:closed swipeoutClosed');\n },\n\n onSwipeoutOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:open swipeoutOpen');\n },\n\n onSwipeoutOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout:opened swipeoutOpened');\n },\n\n onSwipeout(el, progress) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('swipeout', progress);\n },\n\n onAccBeforeClose(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:beforeclose accordionBeforeClose', prevent);\n },\n\n onAccClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:close accordionClose');\n },\n\n onAccClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:closed accordionClosed');\n },\n\n onAccBeforeOpen(el, prevent) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:beforeopen accordionBeforeOpen', prevent);\n },\n\n onAccOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:open accordionOpen');\n },\n\n onAccOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('accordion:opened accordionOpened');\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-list',\n props: Object.assign({\n id: [String, Number],\n inset: Boolean,\n xsmallInset: Boolean,\n smallInset: Boolean,\n mediumInset: Boolean,\n largeInset: Boolean,\n xlargeInset: Boolean,\n mediaList: Boolean,\n sortable: Boolean,\n sortableTapHold: Boolean,\n sortableEnabled: Boolean,\n sortableMoveElements: {\n type: Boolean,\n default: undefined\n },\n sortableOpposite: Boolean,\n accordionList: Boolean,\n accordionOpposite: Boolean,\n contactsList: Boolean,\n simpleList: Boolean,\n linksList: Boolean,\n noHairlines: Boolean,\n noHairlinesBetween: Boolean,\n noHairlinesMd: Boolean,\n noHairlinesBetweenMd: Boolean,\n noHairlinesIos: Boolean,\n noHairlinesBetweenIos: Boolean,\n noHairlinesAurora: Boolean,\n noHairlinesBetweenAurora: Boolean,\n noChevron: Boolean,\n chevronCenter: Boolean,\n tab: Boolean,\n tabActive: Boolean,\n form: Boolean,\n formStoreData: Boolean,\n inlineLabels: Boolean,\n virtualList: Boolean,\n virtualListParams: Object\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n form,\n sortableMoveElements\n } = props;\n const {\n list: slotsList,\n default: slotsDefault\n } = self.$slots;\n const rootChildrenBeforeList = [];\n const rootChildrenAfterList = [];\n const ulChildren = slotsList || [];\n const flattenSlots = Utils.flattenArray(slotsDefault);\n let wasUlChild = false;\n flattenSlots.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag;\n {\n tag = child.tag;\n }\n\n if (!tag && 'vue' === 'react' || tag && !(tag === 'li' || tag === 'F7ListItem' || tag === 'F7ListButton' || tag === 'F7ListInput' || tag.indexOf('list-item') >= 0 || tag.indexOf('list-button') >= 0 || tag.indexOf('list-input') >= 0 || tag.indexOf('f7-list-item') >= 0 || tag.indexOf('f7-list-button') >= 0 || tag.indexOf('f7-list-input') >= 0)) {\n if (wasUlChild) rootChildrenAfterList.push(child);else rootChildrenBeforeList.push(child);\n } else if (tag) {\n wasUlChild = true;\n ulChildren.push(child);\n }\n });\n const ListTag = form ? 'form' : 'div';\n\n if (ulChildren.length > 0) {\n return _h(ListTag, {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [self.$slots['before-list'], rootChildrenBeforeList, _h('ul', [ulChildren]), self.$slots['after-list'], rootChildrenAfterList]);\n } else {\n return _h(ListTag, {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id,\n 'data-sortable-move-elements': typeof sortableMoveElements !== 'undefined' ? sortableMoveElements.toString() : undefined\n }\n }, [self.$slots['before-list'], rootChildrenBeforeList, self.$slots['after-list'], rootChildrenAfterList]);\n }\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n inset,\n xsmallInset,\n smallInset,\n mediumInset,\n largeInset,\n xlargeInset,\n mediaList,\n simpleList,\n linksList,\n sortable,\n sortableTapHold,\n sortableEnabled,\n sortableOpposite,\n accordionList,\n accordionOpposite,\n contactsList,\n virtualList,\n tab,\n tabActive,\n noHairlines,\n noHairlinesIos,\n noHairlinesMd,\n noHairlinesAurora,\n noHairlinesBetween,\n noHairlinesBetweenIos,\n noHairlinesBetweenMd,\n noHairlinesBetweenAurora,\n formStoreData,\n inlineLabels,\n className,\n noChevron,\n chevronCenter\n } = props;\n return Utils.classNames(className, 'list', {\n inset,\n 'xsmall-inset': xsmallInset,\n 'small-inset': smallInset,\n 'medium-inset': mediumInset,\n 'large-inset': largeInset,\n 'xlarge-inset': xlargeInset,\n 'media-list': mediaList,\n 'simple-list': simpleList,\n 'links-list': linksList,\n sortable,\n 'sortable-tap-hold': sortableTapHold,\n 'sortable-enabled': sortableEnabled,\n 'sortable-opposite': sortableOpposite,\n 'accordion-list': accordionList,\n 'accordion-opposite': accordionOpposite,\n 'contacts-list': contactsList,\n 'virtual-list': virtualList,\n tab,\n 'tab-active': tabActive,\n 'no-hairlines': noHairlines,\n 'no-hairlines-md': noHairlinesMd,\n 'no-hairlines-ios': noHairlinesIos,\n 'no-hairlines-aurora': noHairlinesAurora,\n 'no-hairlines-between': noHairlinesBetween,\n 'no-hairlines-between-md': noHairlinesBetweenMd,\n 'no-hairlines-between-ios': noHairlinesBetweenIos,\n 'no-hairlines-between-aurora': noHairlinesBetweenAurora,\n 'form-store-data': formStoreData,\n 'inline-labels': inlineLabels,\n 'no-chevron': noChevron,\n 'chevron-center': chevronCenter\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onSortableEnable', 'onSortableDisable', 'onSortableSort', 'onTabShow', 'onTabHide', 'onSubmit']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n virtualList,\n virtualListParams,\n form\n } = self.props;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('sortableEnable', self.onSortableEnable);\n f7.on('sortableDisable', self.onSortableDisable);\n f7.on('sortableSort', self.onSortableSort);\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n\n if (form) {\n el.addEventListener('submit', self.onSubmit);\n }\n\n if (!virtualList) return;\n const vlParams = virtualListParams || {};\n if (!vlParams.renderItem && !vlParams.itemTemplate && !vlParams.renderExternal) return;\n self.f7VirtualList = f7.virtualList.create(Utils.extend({\n el,\n on: {\n itemBeforeInsert(itemEl, item) {\n const vl = this;\n self.dispatchEvent('virtual:itembeforeinsert virtualItemBeforeInsert', vl, itemEl, item);\n },\n\n beforeClear(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:beforeclear virtualBeforeClear', vl, fragment);\n },\n\n itemsBeforeInsert(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:itemsbeforeinsert virtualItemsBeforeInsert', vl, fragment);\n },\n\n itemsAfterInsert(fragment) {\n const vl = this;\n self.dispatchEvent('virtual:itemsafterinsert virtualItemsAfterInsert', vl, fragment);\n }\n\n }\n }, vlParams));\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n const f7 = self.$f7;\n if (!el || !f7) return;\n f7.off('sortableEnable', self.onSortableEnable);\n f7.off('sortableDisable', self.onSortableDisable);\n f7.off('sortableSort', self.onSortableSort);\n f7.off('tabShow', self.onTabShow);\n f7.off('tabHide', self.onTabHide);\n el.removeEventListener('submit', self.onSubmit);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n if (!(self.virtualList && self.f7VirtualList)) return;\n if (self.f7VirtualList.destroy) self.f7VirtualList.destroy();\n },\n\n methods: {\n onSubmit(event) {\n this.dispatchEvent('submit', event);\n },\n\n onSortableEnable(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('sortable:enable sortableEnable');\n },\n\n onSortableDisable(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('sortable:disable sortableDisable');\n },\n\n onSortableSort(el, sortData, listEl) {\n if (this.eventTargetEl !== listEl) return;\n this.dispatchEvent('sortable:sort sortableSort', sortData);\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-login-screen-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'login-screen-title', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-login-screen',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'login-screen', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7LoginScreen) return;\n\n if (opened) {\n self.f7LoginScreen.open();\n } else {\n self.f7LoginScreen.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.$f7ready(() => {\n self.f7LoginScreen = self.$f7.loginScreen.create({\n el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n });\n\n if (self.props.opened) {\n self.f7LoginScreen.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7LoginScreen) self.f7LoginScreen.destroy();\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('loginscreen:open loginScreenOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('loginscreen:opened loginScreenOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('loginscreen:close loginScreenClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('loginscreen:closed loginScreenClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7LoginScreen) return undefined;\n return self.f7LoginScreen.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7LoginScreen) return undefined;\n return self.f7LoginScreen.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-dropdown-item',\n props: Object.assign({\n id: [String, Number],\n text: String,\n link: Boolean,\n href: String,\n target: String,\n divider: Boolean\n }, Mixins.colorProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n link,\n href,\n text,\n divider,\n menuClose\n } = props;\n const isLink = link || href || href === '';\n const Tag = isLink ? 'a' : 'div';\n const classes = Utils.classNames({\n 'menu-dropdown-link': isLink && !divider,\n 'menu-dropdown-item': !isLink && !divider,\n 'menu-dropdown-divider': divider\n }, className, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props), {\n 'menu-close': typeof menuClose === 'undefined'\n });\n return _h(Tag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n class: classes,\n style: style\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [text, this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n el.addEventListener('click', self.onClick);\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n el.removeEventListener('click', self.onClick);\n delete el.f7RouteProps;\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n link,\n href,\n target\n } = props;\n let hrefComputed = href;\n if (typeof hrefComputed === 'undefined' && link) hrefComputed = '#';\n return Utils.extend({\n href: hrefComputed,\n target\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-dropdown',\n props: Object.assign({\n id: [String, Number],\n contentHeight: String,\n position: String,\n left: Boolean,\n center: Boolean,\n right: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n contentHeight,\n position,\n left,\n center,\n right\n } = props;\n let positionComputed = position || 'left';\n if (left) positionComputed = 'left';\n if (center) positionComputed = 'center';\n if (right) positionComputed = 'right';\n const classes = Utils.classNames('menu-dropdown', `menu-dropdown-${positionComputed}`, Mixins.colorClasses(props), className);\n return _h('div', {\n class: classes,\n style: style,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'menu-dropdown-content',\n style: {\n height: contentHeight\n }\n }, [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu-item',\n props: Object.assign({\n id: [String, Number],\n text: String,\n iconOnly: Boolean,\n href: String,\n link: Boolean,\n target: String,\n dropdown: Boolean\n }, Mixins.colorProps, {}, Mixins.linkIconProps, {}, Mixins.linkRouterProps, {}, Mixins.linkActionsProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style,\n link,\n href,\n text,\n dropdown,\n iconOnly,\n icon,\n iconColor,\n iconSize,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora\n } = props;\n const slots = self.$slots;\n let iconEl;\n let iconOnlyComputed;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n if (iconOnly || !text && slots.text && slots.text.length === 0 || !text && !slots.text) {\n iconOnlyComputed = true;\n } else {\n iconOnlyComputed = false;\n }\n\n const isLink = link || href || href === '';\n const Tag = isLink ? 'a' : 'div';\n const isDropdown = dropdown || dropdown === '';\n const classes = Utils.classNames({\n 'menu-item': true,\n 'menu-item-dropdown': isDropdown,\n 'icon-only': iconOnlyComputed\n }, className, Mixins.colorClasses(props), Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n return _h(Tag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'el',\n class: classes,\n style: style\n }, self.attrs, {\n attrs: {\n id: id\n }\n })), [(text || slots.text && slots.text.length || iconEl) && _h('div', {\n class: 'menu-item-content'\n }, [text, iconEl, this.$slots['text']]), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onOpened', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n self.eventTargetEl = el;\n el.addEventListener('click', self.onClick);\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n self.$f7ready(f7 => {\n f7.on('menuOpened', self.onOpened);\n f7.on('menuClosed', self.onClosed);\n });\n },\n\n updated() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const {\n routeProps\n } = self.props;\n if (routeProps) el.f7RouteProps = routeProps;\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('menuOpened', self.onOpened);\n self.$f7.off('menuClosed', self.onOpened);\n self.eventTargetEl = null;\n delete el.f7RouteProps;\n delete self.eventTargetEl;\n },\n\n computed: {\n attrs() {\n const self = this;\n const props = self.props;\n const {\n href,\n link,\n target\n } = props;\n let hrefComputed = href;\n if (typeof hrefComputed === 'undefined' && link) hrefComputed = '#';\n return Utils.extend({\n href: hrefComputed,\n target\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n onClick(e) {\n this.dispatchEvent('click', e);\n },\n\n onOpened(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('menuOpened menu:opened', el);\n },\n\n onClosed(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('menuClosed menu:closed', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-menu',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n className,\n style\n } = props;\n return _h('div', {\n class: Utils.classNames('menu', Mixins.colorClasses(props), className),\n style: style,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'menu-inner'\n }, [this.$slots['default']])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-message',\n props: Object.assign({\n id: [String, Number],\n text: String,\n name: String,\n avatar: String,\n type: {\n type: String,\n default: 'sent'\n },\n image: String,\n header: String,\n footer: String,\n textHeader: String,\n textFooter: String,\n first: Boolean,\n last: Boolean,\n tail: Boolean,\n sameName: Boolean,\n sameHeader: Boolean,\n sameFooter: Boolean,\n sameAvatar: Boolean,\n typing: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n text,\n name,\n avatar,\n image,\n header,\n footer,\n textHeader,\n textFooter,\n typing,\n id,\n style\n } = props;\n const {\n start: slotsStart,\n end: slotsEnd,\n default: slotsDefault,\n 'content-start': slotsContentStart,\n 'content-end': slotsContentEnd,\n avatar: slotsAvatar,\n name: slotsName,\n header: slotsHeader,\n footer: slotsFooter,\n image: slotsImage,\n text: slotsText,\n 'text-header': slotsTextHeader,\n 'text-footer': slotsTextFooter,\n 'bubble-start': slotsBubbleStart,\n 'bubble-end': slotsBubbleEnd\n } = self.$slots;\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [slotsStart, (avatar || slotsAvatar) && _h('div', {\n ref: 'avatarEl',\n class: 'message-avatar',\n style: {\n backgroundImage: avatar && `url(${avatar})`\n }\n }, [slotsAvatar]), _h('div', {\n class: 'message-content'\n }, [slotsContentStart, (slotsName || name) && _h('div', {\n ref: 'nameEl',\n class: 'message-name'\n }, [slotsName || name]), (slotsHeader || header) && _h('div', {\n ref: 'headerEl',\n class: 'message-header'\n }, [slotsHeader || header]), _h('div', {\n ref: 'bubbleEl',\n class: 'message-bubble'\n }, [slotsBubbleStart, (slotsImage || image) && _h('div', {\n class: 'message-image'\n }, [slotsImage || _h('img', {\n attrs: {\n src: image\n }\n })]), (slotsTextHeader || textHeader) && _h('div', {\n class: 'message-text-header'\n }, [slotsTextHeader || textHeader]), (slotsText || text || typing) && _h('div', {\n ref: 'textEl',\n class: 'message-text'\n }, [slotsText || text, typing && _h('div', {\n class: 'message-typing-indicator'\n }, [_h('div'), _h('div'), _h('div')])]), (slotsTextFooter || textFooter) && _h('div', {\n class: 'message-text-footer'\n }, [slotsTextFooter || textFooter]), slotsBubbleEnd, slotsDefault]), (slotsFooter || footer) && _h('div', {\n ref: 'footerEl',\n class: 'message-footer'\n }, [slotsFooter || footer]), slotsContentEnd]), slotsEnd]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n type,\n typing,\n first,\n last,\n tail,\n sameName,\n sameHeader,\n sameFooter,\n sameAvatar,\n className\n } = props;\n return Utils.classNames(className, 'message', {\n 'message-sent': type === 'sent',\n 'message-received': type === 'received',\n 'message-typing': typing,\n 'message-first': first,\n 'message-last': last,\n 'message-tail': tail,\n 'message-same-name': sameName,\n 'message-same-header': sameHeader,\n 'message-same-footer': sameFooter,\n 'message-same-avatar': sameAvatar\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onNameClick', 'onTextClick', 'onAvatarClick', 'onHeaderClick', 'onFooterClick', 'onBubbleClick']);\n },\n\n mounted() {\n const {\n el,\n nameEl,\n textEl,\n avatarEl,\n headerEl,\n footerEl,\n bubbleEl\n } = this.$refs;\n el.addEventListener('click', this.onClick);\n if (nameEl) nameEl.addEventListener('click', this.onNameClick);\n if (textEl) textEl.addEventListener('click', this.onTextClick);\n if (avatarEl) avatarEl.addEventListener('click', this.onAvatarClick);\n if (headerEl) headerEl.addEventListener('click', this.onHeaderClick);\n if (footerEl) footerEl.addEventListener('click', this.onFooterClick);\n if (bubbleEl) bubbleEl.addEventListener('click', this.onBubbleClick);\n },\n\n beforeDestroy() {\n const {\n el,\n nameEl,\n textEl,\n avatarEl,\n headerEl,\n footerEl,\n bubbleEl\n } = this.$refs;\n el.removeEventListener('click', this.onClick);\n if (nameEl) nameEl.removeEventListener('click', this.onNameClick);\n if (textEl) textEl.removeEventListener('click', this.onTextClick);\n if (avatarEl) avatarEl.removeEventListener('click', this.onAvatarClick);\n if (headerEl) headerEl.removeEventListener('click', this.onHeaderClick);\n if (footerEl) footerEl.removeEventListener('click', this.onFooterClick);\n if (bubbleEl) bubbleEl.removeEventListener('click', this.onBubbleClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onNameClick(event) {\n this.dispatchEvent('click:name clickName', event);\n },\n\n onTextClick(event) {\n this.dispatchEvent('click:text clickText', event);\n },\n\n onAvatarClick(event) {\n this.dispatchEvent('click:avatar clickAvatar', event);\n },\n\n onHeaderClick(event) {\n this.dispatchEvent('click:header clickHeader', event);\n },\n\n onFooterClick(event) {\n this.dispatchEvent('click:footer clickFooter', event);\n },\n\n onBubbleClick(event) {\n this.dispatchEvent('click:bubble clickBubble', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-attachment',\n props: Object.assign({\n id: [String, Number],\n image: String,\n deletable: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n deletable,\n image,\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-attachment', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [image && _h('img', {\n attrs: {\n src: image\n }\n }), deletable && _h('span', {\n ref: 'deleteEl',\n class: 'messagebar-attachment-delete'\n }), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onDeleteClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.addEventListener('click', this.onDeleteClick);\n }\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n\n if (this.$refs.deleteEl) {\n this.$refs.deleteEl.removeEventListener('click', this.onDeleteClick);\n }\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('attachment:click attachmentClick', event);\n },\n\n onDeleteClick(event) {\n this.dispatchEvent('attachment:delete attachmentDelete', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-attachments',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-attachments', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet-image',\n props: Object.assign({\n id: [String, Number],\n image: String,\n checked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n image,\n checked,\n id,\n className,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet-image', 'checkbox', Mixins.colorClasses(props));\n const styles = Utils.extend({\n backgroundImage: image && `url(${image})`\n }, style || {});\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'checkbox'\n }\n });\n }\n return _h('label', {\n class: classes,\n style: styles,\n attrs: {\n id: id\n }\n }, [inputEl, _h('i', {\n class: 'icon icon-checkbox'\n }), this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n methods: {\n onChange(event) {\n if (this.props.checked) this.dispatchEvent('checked', event);else this.dispatchEvent('unchecked', event);\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet-item',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet-item', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar-sheet',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messagebar-sheet', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Input from './input';\nimport F7Link from './link';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messagebar',\n props: Object.assign({\n id: [String, Number],\n sheetVisible: Boolean,\n attachmentsVisible: Boolean,\n top: Boolean,\n resizable: {\n type: Boolean,\n default: true\n },\n bottomOffset: {\n type: Number,\n default: 0\n },\n topOffset: {\n type: Number,\n default: 0\n },\n maxHeight: Number,\n resizePage: {\n type: Boolean,\n default: true\n },\n sendLink: String,\n value: [String, Number, Array],\n disabled: Boolean,\n readonly: Boolean,\n textareaId: [Number, String],\n name: String,\n placeholder: {\n type: String,\n default: 'Message'\n },\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n created() {\n Utils.bindMethods(this, ['onChange', 'onInput', 'onFocus', 'onBlur', 'onClick', 'onAttachmentDelete', 'onAttachmentClick,', 'onResizePage']);\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n placeholder,\n disabled,\n name,\n readonly,\n resizable,\n value,\n sendLink,\n id,\n style\n } = self.props;\n const {\n default: slotsDefault,\n 'before-inner': slotsBeforeInner,\n 'after-inner': slotsAfterInner,\n 'send-link': slotsSendLink,\n 'inner-start': slotsInnerStart,\n 'inner-end': slotsInnerEnd,\n 'before-area': slotsBeforeArea,\n 'after-area': slotsAfterArea\n } = self.$slots;\n const innerEndEls = [];\n let messagebarAttachmentsEl;\n let messagebarSheetEl;\n\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let tag;\n tag = child.tag;\n\n if (tag && (tag.indexOf('messagebar-attachments') >= 0 || tag === 'F7MessagebarAttachments' || tag === 'f7-messagebar-attachments')) {\n messagebarAttachmentsEl = child;\n } else if (tag && (tag.indexOf('messagebar-sheet') >= 0 || tag === 'F7MessagebarSheet' || tag === 'f7-messagebar-sheet')) {\n messagebarSheetEl = child;\n } else {\n innerEndEls.push(child);\n }\n });\n }\n\n const valueProps = {};\n if ('value' in self.props) valueProps.value = value;\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [slotsBeforeInner, _h('div', {\n class: 'toolbar-inner'\n }, [slotsInnerStart, _h('div', {\n class: 'messagebar-area'\n }, [slotsBeforeArea, messagebarAttachmentsEl, _h(F7Input, __vueComponentTransformJSXProps(Object.assign({\n ref: 'area'\n }, valueProps, {\n on: {\n input: self.onInput,\n change: self.onChange,\n focus: self.onFocus,\n blur: self.onBlur\n },\n attrs: {\n type: 'textarea',\n wrap: false,\n placeholder: placeholder,\n disabled: disabled,\n name: name,\n readonly: readonly,\n resizable: resizable\n }\n }))), slotsAfterArea]), (sendLink && sendLink.length > 0 || slotsSendLink) && _h(F7Link, {\n on: {\n click: self.onClick\n }\n }, [slotsSendLink || sendLink]), slotsInnerEnd, innerEndEls]), slotsAfterInner, messagebarSheetEl]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n attachmentsVisible,\n sheetVisible\n } = props;\n return Utils.classNames(className, 'toolbar', 'messagebar', {\n 'messagebar-attachments-visible': attachmentsVisible,\n 'messagebar-sheet-visible': sheetVisible\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.sheetVisible': function watchSheetVisible() {\n const self = this;\n if (!self.props.resizable || !self.f7Messagebar) return;\n self.updateSheetVisible = true;\n },\n 'props.attachmentsVisible': function watchAttachmentsVisible() {\n const self = this;\n if (!self.props.resizable || !self.f7Messagebar) return;\n self.updateAttachmentsVisible = true;\n }\n },\n\n mounted() {\n const self = this;\n const {\n init,\n top,\n resizePage,\n bottomOffset,\n topOffset,\n maxHeight\n } = self.props;\n if (!init) return;\n const el = self.$refs.el;\n if (!el) return;\n const params = Utils.noUndefinedProps({\n el,\n top,\n resizePage,\n bottomOffset,\n topOffset,\n maxHeight,\n on: {\n attachmentDelete: self.onAttachmentDelete,\n attachmentClick: self.onAttachmentClick,\n resizePage: self.onResizePage\n }\n });\n self.$f7ready(() => {\n self.f7Messagebar = self.$f7.messagebar.create(params);\n });\n },\n\n updated() {\n const self = this;\n if (!self.f7Messagebar) return;\n const {\n sheetVisible,\n attachmentsVisible\n } = self.props;\n\n if (self.updateSheetVisible) {\n self.updateSheetVisible = false;\n self.f7Messagebar.sheetVisible = sheetVisible;\n self.f7Messagebar.resizePage();\n }\n\n if (self.updateAttachmentsVisible) {\n self.updateAttachmentsVisible = false;\n self.f7Messagebar.attachmentsVisible = attachmentsVisible;\n self.f7Messagebar.resizePage();\n }\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Messagebar && self.f7Messagebar.destroy) self.f7Messagebar.destroy();\n },\n\n methods: {\n clear(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.clear(...args);\n },\n\n getValue(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.getValue(...args);\n },\n\n setValue(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.setValue(...args);\n },\n\n setPlaceholder(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.setPlaceholder(...args);\n },\n\n resize(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.resizePage(...args);\n },\n\n focus(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.focus(...args);\n },\n\n blur(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.blur(...args);\n },\n\n attachmentsShow(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsShow(...args);\n },\n\n attachmentsHide(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsHide(...args);\n },\n\n attachmentsToggle(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.attachmentsToggle(...args);\n },\n\n sheetShow(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetShow(...args);\n },\n\n sheetHide(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetHide(...args);\n },\n\n sheetToggle(...args) {\n if (!this.f7Messagebar) return undefined;\n return this.f7Messagebar.sheetToggle(...args);\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n onFocus(event) {\n this.dispatchEvent('focus', event);\n },\n\n onBlur(event) {\n this.dispatchEvent('blur', event);\n },\n\n onClick(event) {\n const self = this;\n let value;\n {\n value = self.$refs.area.$refs.inputEl.value;\n }\n const clear = self.f7Messagebar ? () => {\n self.f7Messagebar.clear();\n } : () => {};\n this.dispatchEvent('submit', value, clear);\n this.dispatchEvent('send', value, clear);\n this.dispatchEvent('click', event);\n },\n\n onAttachmentDelete(instance, attachmentEl, attachmentElIndex) {\n this.dispatchEvent('messagebar:attachmentdelete messagebarAttachmentDelete', instance, attachmentEl, attachmentElIndex);\n },\n\n onAttachmentClick(instance, attachmentEl, attachmentElIndex) {\n this.dispatchEvent('messagebar:attachmentclick messagebarAttachmentClick', instance, attachmentEl, attachmentElIndex);\n },\n\n onResizePage(instance) {\n this.dispatchEvent('messagebar:resizepage messagebarResizePage', instance);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messages-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'messages-title', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-messages',\n props: Object.assign({\n id: [String, Number],\n autoLayout: {\n type: Boolean,\n default: false\n },\n messages: {\n type: Array,\n\n default() {\n return [];\n }\n\n },\n newMessagesFirst: {\n type: Boolean,\n default: false\n },\n scrollMessages: {\n type: Boolean,\n default: true\n },\n scrollMessagesOnEdge: {\n type: Boolean,\n default: true\n },\n firstMessageRule: Function,\n lastMessageRule: Function,\n tailMessageRule: Function,\n sameNameMessageRule: Function,\n sameHeaderMessageRule: Function,\n sameFooterMessageRule: Function,\n sameAvatarMessageRule: Function,\n customClassMessageRule: Function,\n renderMessage: Function,\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'messages', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n beforeUpdate() {\n const self = this;\n if (!self.props.init) return;\n const el = self.$refs.el;\n if (!el) return;\n const children = el.children;\n if (!children) return;\n\n for (let i = 0; i < children.length; i += 1) {\n children[i].classList.add('message-appeared');\n }\n },\n\n updated() {\n const self = this;\n const {\n init,\n autoLayout,\n scrollMessages\n } = self.props;\n if (!init) return;\n const el = self.$refs.el;\n if (!el) return;\n const children = el.children;\n if (!children) return;\n\n for (let i = 0; i < children.length; i += 1) {\n if (!children[i].classList.contains('message-appeared')) {\n children[i].classList.add('message-appear-from-bottom');\n }\n }\n\n if (self.f7Messages && self.f7Messages.layout && autoLayout) {\n self.f7Messages.layout();\n }\n\n if (self.f7Messages && self.f7Messages.scroll && scrollMessages) {\n self.f7Messages.scroll();\n }\n },\n\n mounted() {\n const self = this;\n const {\n init,\n autoLayout,\n messages,\n newMessagesFirst,\n scrollMessages,\n scrollMessagesOnEdge,\n firstMessageRule,\n lastMessageRule,\n tailMessageRule,\n sameNameMessageRule,\n sameHeaderMessageRule,\n sameFooterMessageRule,\n sameAvatarMessageRule,\n customClassMessageRule,\n renderMessage\n } = self.props;\n if (!init) return;\n self.$f7ready(f7 => {\n self.f7Messages = f7.messages.create(Utils.noUndefinedProps({\n el: self.$refs.el,\n autoLayout,\n messages,\n newMessagesFirst,\n scrollMessages,\n scrollMessagesOnEdge,\n firstMessageRule,\n lastMessageRule,\n tailMessageRule,\n sameNameMessageRule,\n sameHeaderMessageRule,\n sameFooterMessageRule,\n sameAvatarMessageRule,\n customClassMessageRule,\n renderMessage\n }));\n });\n },\n\n beforeDestroy() {\n if (this.f7Messages && this.f7Messages.destroy) this.f7Messages.destroy();\n },\n\n methods: {\n renderMessages(messagesToRender, method) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.renderMessages(messagesToRender, method);\n },\n\n layout() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.layout();\n },\n\n scroll(duration, scrollTop) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.scroll(duration, scrollTop);\n },\n\n clear() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.clear();\n },\n\n removeMessage(messageToRemove, layout) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.removeMessage(messageToRemove, layout);\n },\n\n removeMessages(messagesToRemove, layout) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.removeMessages(messagesToRemove, layout);\n },\n\n addMessage(...args) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.addMessage(...args);\n },\n\n addMessages(...args) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.addMessages(...args);\n },\n\n showTyping(message) {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.showTyping(message);\n },\n\n hideTyping() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.hideTyping();\n },\n\n destroy() {\n if (!this.f7Messages) return undefined;\n return this.f7Messages.destroy();\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Link from './link';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-left',\n props: Object.assign({\n id: [String, Number],\n backLink: [Boolean, String],\n backLinkUrl: String,\n backLinkForce: Boolean,\n backLinkShowText: {\n type: Boolean,\n default: undefined\n },\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding,\n className,\n style,\n id\n } = props;\n let linkEl;\n let needBackLinkText = backLinkShowText;\n if (typeof needBackLinkText === 'undefined') needBackLinkText = !this.$theme.md;\n\n if (backLink) {\n const text = backLink !== true && needBackLinkText ? backLink : undefined;\n linkEl = _h(F7Link, {\n class: !text ? 'icon-only' : undefined,\n on: {\n click: this.onBackClick\n },\n attrs: {\n href: backLinkUrl || '#',\n back: true,\n icon: 'icon-back',\n force: backLinkForce || undefined,\n text: text\n }\n });\n }\n\n const classes = Utils.classNames(className, 'left', {\n sliding\n }, Mixins.colorClasses(props));\n const children = [];\n const slots = this.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [linkEl, children]);\n },\n\n created() {\n Utils.bindMethods(this, ['onBackClick']);\n },\n\n methods: {\n onBackClick(event) {\n this.dispatchEvent('back-click backClick click:back clickBack', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-right',\n props: Object.assign({\n id: [String, Number],\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n sliding\n } = props;\n const classes = Utils.classNames(className, 'right', {\n sliding\n }, Mixins.colorClasses(props));\n const children = [];\n const slots = this.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [children]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-title',\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n const classes = Utils.classNames(className, 'title-large', Mixins.colorClasses(props));\n const children = [];\n const slots = self.$slots;\n\n if (slots && Object.keys(slots).length) {\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'title-large-text'\n }, [children])]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-nav-title',\n props: Object.assign({\n id: [String, Number],\n title: String,\n subtitle: String,\n sliding: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n title,\n subtitle,\n id,\n style,\n sliding,\n className\n } = props;\n let subtitleEl;\n\n if (subtitle) {\n subtitleEl = _h('span', {\n class: 'subtitle'\n }, [subtitle]);\n }\n\n const classes = Utils.classNames(className, 'title', {\n sliding\n }, Mixins.colorClasses(props));\n let children;\n const slots = self.$slots;\n\n if (slots && Object.keys(slots).length) {\n children = [];\n Object.keys(slots).forEach(key => {\n children.push(...slots[key]);\n });\n }\n\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [children, !children && title, !children && subtitleEl]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7NavLeft from './nav-left';\nimport F7NavTitle from './nav-title';\nimport F7NavRight from './nav-right';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-navbar',\n props: Object.assign({\n id: [String, Number],\n backLink: [Boolean, String],\n backLinkUrl: String,\n backLinkForce: Boolean,\n backLinkShowText: {\n type: Boolean,\n default: undefined\n },\n sliding: {\n type: Boolean,\n default: true\n },\n title: String,\n subtitle: String,\n hidden: Boolean,\n noShadow: Boolean,\n noHairline: Boolean,\n innerClass: String,\n innerClassName: String,\n large: Boolean,\n largeTransparent: Boolean,\n transparent: Boolean,\n titleLarge: String\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null,\n routerPositionClass: '',\n largeCollapsed: false,\n routerNavbarRole: null,\n routerNavbarRoleDetailRoot: false,\n routerNavbarMasterStack: false,\n transparentVisible: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n backLink,\n backLinkUrl,\n backLinkForce,\n backLinkShowText,\n sliding,\n title,\n subtitle,\n innerClass,\n innerClassName,\n className,\n id,\n style,\n hidden,\n noShadow,\n noHairline,\n large,\n largeTransparent,\n transparent,\n titleLarge\n } = props;\n const {\n _theme: theme,\n routerPositionClass,\n largeCollapsed,\n transparentVisible\n } = self.state;\n let leftEl;\n let titleEl;\n let rightEl;\n let titleLargeEl;\n const addLeftTitleClass = theme && theme.ios && self.$f7 && !self.$f7.params.navbar.iosCenterTitle;\n const addCenterTitleClass = theme && theme.md && self.$f7 && self.$f7.params.navbar.mdCenterTitle || theme && theme.aurora && self.$f7 && self.$f7.params.navbar.auroraCenterTitle;\n const slots = self.$slots;\n const isLarge = large || largeTransparent;\n const isTransparent = transparent || isLarge && largeTransparent;\n const isTransparentVisible = isTransparent && transparentVisible;\n const classes = Utils.classNames(className, 'navbar', routerPositionClass && routerPositionClass, {\n 'navbar-hidden': hidden,\n 'navbar-large': isLarge,\n 'navbar-large-collapsed': isLarge && largeCollapsed,\n 'navbar-transparent': isTransparent,\n 'navbar-transparent-visible': isTransparentVisible,\n 'navbar-master': this.state.routerNavbarRole === 'master',\n 'navbar-master-detail': this.state.routerNavbarRole === 'detail',\n 'navbar-master-detail-root': this.state.routerNavbarRoleDetailRoot === true,\n 'navbar-master-stacked': this.state.routerNavbarMasterStack === true,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline\n }, Mixins.colorClasses(props));\n\n if (backLink || slots['nav-left'] || slots.left) {\n leftEl = _h(F7NavLeft, {\n on: {\n backClick: self.onBackClick\n },\n attrs: {\n backLink: backLink,\n backLinkUrl: backLinkUrl,\n backLinkForce: backLinkForce,\n backLinkShowText: backLinkShowText\n }\n }, [slots['nav-left'], slots.left]);\n }\n\n if (title || subtitle || slots.title) {\n titleEl = _h(F7NavTitle, {\n attrs: {\n title: title,\n subtitle: subtitle\n }\n }, [slots.title]);\n }\n\n if (slots['nav-right'] || slots.right) {\n rightEl = _h(F7NavRight, [slots['nav-right'], slots.right]);\n }\n\n let largeTitle = titleLarge;\n if (!largeTitle && large && title) largeTitle = title;\n\n if (largeTitle || slots['title-large']) {\n titleLargeEl = _h('div', {\n class: 'title-large'\n }, [_h('div', {\n class: 'title-large-text'\n }, [largeTitle || '', this.$slots['title-large']])]);\n }\n\n const innerEl = _h('div', {\n class: Utils.classNames('navbar-inner', innerClass, innerClassName, {\n sliding,\n 'navbar-inner-left-title': addLeftTitleClass,\n 'navbar-inner-centered-title': addCenterTitleClass\n })\n }, [leftEl, titleEl, rightEl, titleLargeEl, this.$slots['default']]);\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'navbar-bg'\n }), this.$slots['before-inner'], innerEl, this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onBackClick', 'onHide', 'onShow', 'onExpand', 'onCollapse', 'onNavbarPosition', 'onNavbarRole', 'onNavbarMasterStack', 'onNavbarMasterUnstack', 'onTransparentHide', 'onTransparentShow']);\n },\n\n mounted() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el) return;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('navbarShow', self.onShow);\n f7.on('navbarHide', self.onHide);\n f7.on('navbarCollapse', self.onCollapse);\n f7.on('navbarExpand', self.onExpand);\n f7.on('navbarPosition', self.onNavbarPosition);\n f7.on('navbarRole', self.onNavbarRole);\n f7.on('navbarMasterStack', self.onNavbarMasterStack);\n f7.on('navbarMasterUnstack', self.onNavbarMasterUnstack);\n f7.on('navbarTransparentShow', self.onNavbarTransparentShow);\n f7.on('navbarTransparentHide', self.onNavbarTransparentHide);\n });\n },\n\n updated() {\n const self = this;\n if (!self.$f7) return;\n const el = self.$refs.el;\n self.$f7.navbar.size(el);\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('navbarShow', self.onShow);\n f7.off('navbarHide', self.onHide);\n f7.off('navbarCollapse', self.onCollapse);\n f7.off('navbarExpand', self.onExpand);\n f7.off('navbarPosition', self.onNavbarPosition);\n f7.off('navbarRole', self.onNavbarRole);\n f7.off('navbarMasterStack', self.onNavbarMasterStack);\n f7.off('navbarMasterUnstack', self.onNavbarMasterUnstack);\n f7.off('navbarTransparentShow', self.onNavbarTransparentShow);\n f7.off('navbarTransparentHide', self.onNavbarTransparentHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('navbar:hide navbarHide');\n },\n\n onShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('navbar:show navbarShow');\n },\n\n onExpand(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n largeCollapsed: false\n });\n this.dispatchEvent('navbar:expand navbarExpand');\n },\n\n onCollapse(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n largeCollapsed: true\n });\n this.dispatchEvent('navbar:collapse navbarCollapse');\n },\n\n onNavbarTransparentShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n transparentVisible: true\n });\n this.dispatchEvent('navbar:transparentshow navbarTransparentShow');\n },\n\n onNavbarTransparentHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n transparentVisible: false\n });\n this.dispatchEvent('navbar:transparenthide navbarTransparentHide');\n },\n\n onNavbarPosition(navbarEl, position) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerPositionClass: position ? `navbar-${position}` : ''\n });\n },\n\n onNavbarRole(navbarEl, rolesData) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarRole: rolesData.role,\n routerNavbarRoleDetailRoot: rolesData.detailRoot\n });\n },\n\n onNavbarMasterStack(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarMasterStack: true\n });\n },\n\n onNavbarMasterUnstack(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.setState({\n routerNavbarMasterStack: false\n });\n },\n\n hide(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.hide(self.$refs.el, animate);\n },\n\n show(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.show(self.$refs.el, animate);\n },\n\n size() {\n const self = this;\n if (!self.$f7) return;\n self.$f7.navbar.size(self.$refs.el);\n },\n\n onBackClick(event) {\n this.dispatchEvent('back-click backClick click:back clickBack', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-preloader',\n props: Object.assign({\n id: [String, Number],\n size: [Number, String]\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const {\n sizeComputed,\n props\n } = self;\n const {\n id,\n style,\n className\n } = props;\n const theme = self.state._theme;\n const preloaderStyle = {};\n\n if (sizeComputed) {\n preloaderStyle.width = `${sizeComputed}px`;\n preloaderStyle.height = `${sizeComputed}px`;\n preloaderStyle['--f7-preloader-size'] = `${sizeComputed}px`;\n }\n\n if (style) Utils.extend(preloaderStyle, style || {});\n let innerEl;\n\n if (theme && theme.md) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-gap'\n }), _h('span', {\n class: 'preloader-inner-left'\n }, [_h('span', {\n class: 'preloader-inner-half-circle'\n })]), _h('span', {\n class: 'preloader-inner-right'\n }, [_h('span', {\n class: 'preloader-inner-half-circle'\n })])]);\n } else if (theme && theme.ios) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n }), _h('span', {\n class: 'preloader-inner-line'\n })]);\n } else if (theme && theme.aurora) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n }, [_h('span', {\n class: 'preloader-inner-circle'\n })]);\n } else if (!theme) {\n innerEl = _h('span', {\n class: 'preloader-inner'\n });\n }\n\n const classes = Utils.classNames(className, 'preloader', Mixins.colorClasses(props));\n return _h('span', {\n style: preloaderStyle,\n class: classes,\n attrs: {\n id: id\n }\n }, [innerEl]);\n },\n\n computed: {\n sizeComputed() {\n let s = this.props.size;\n\n if (s && typeof s === 'string' && s.indexOf('px') >= 0) {\n s = s.replace('px', '');\n }\n\n return s;\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n methods: {\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport Preloader from './preloader';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-page-content',\n props: Object.assign({\n id: [String, Number],\n tab: Boolean,\n tabActive: Boolean,\n ptr: Boolean,\n ptrDistance: Number,\n ptrPreloader: {\n type: Boolean,\n default: true\n },\n ptrBottom: Boolean,\n ptrMousewheel: Boolean,\n infinite: Boolean,\n infiniteTop: Boolean,\n infiniteDistance: Number,\n infinitePreloader: {\n type: Boolean,\n default: true\n },\n hideBarsOnScroll: Boolean,\n hideNavbarOnScroll: Boolean,\n hideToolbarOnScroll: Boolean,\n messagesContent: Boolean,\n loginScreen: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n ptr,\n ptrPreloader,\n ptrDistance,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infinitePreloader,\n id,\n style,\n infiniteDistance,\n infiniteTop\n } = props;\n let ptrEl;\n let infiniteEl;\n\n if (ptr && ptrPreloader) {\n ptrEl = _h('div', {\n class: 'ptr-preloader'\n }, [_h(Preloader), _h('div', {\n class: 'ptr-arrow'\n })]);\n }\n\n if (infinite && infinitePreloader) {\n infiniteEl = _h(Preloader, {\n class: 'infinite-scroll-preloader'\n });\n }\n\n return _h('div', {\n style: style,\n class: self.classes,\n ref: 'el',\n attrs: {\n id: id,\n 'data-ptr-distance': ptrDistance || undefined,\n 'data-ptr-mousewheel': ptrMousewheel || undefined,\n 'data-infinite-distance': infiniteDistance || undefined\n }\n }, [ptrBottom ? null : ptrEl, infiniteTop ? infiniteEl : null, self.$slots.default, infiniteTop ? null : infiniteEl, ptrBottom ? ptrEl : null]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n tab,\n tabActive,\n ptr,\n ptrBottom,\n infinite,\n infiniteTop,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n messagesContent,\n loginScreen\n } = props;\n return Utils.classNames(className, 'page-content', {\n tab,\n 'tab-active': tabActive,\n 'ptr-content': ptr,\n 'ptr-bottom': ptrBottom,\n 'infinite-scroll-content': infinite,\n 'infinite-scroll-top': infiniteTop,\n 'hide-bars-on-scroll': hideBarsOnScroll,\n 'hide-navbar-on-scroll': hideNavbarOnScroll,\n 'hide-toolbar-on-scroll': hideToolbarOnScroll,\n 'messages-content': messagesContent,\n 'login-screen-content': loginScreen\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onPtrPullStart', 'onPtrPullMove', 'onPtrPullEnd', 'onPtrRefresh', 'onPtrDone', 'onInfinite', 'onTabShow', 'onTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n ptr,\n infinite,\n tab\n } = self.props;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n\n if (ptr) {\n f7.on('ptrPullStart', self.onPtrPullStart);\n f7.on('ptrPullMove', self.onPtrPullMove);\n f7.on('ptrPullEnd', self.onPtrPullEnd);\n f7.on('ptrRefresh', self.onPtrRefresh);\n f7.on('ptrDone', self.onPtrDone);\n }\n\n if (infinite) {\n f7.on('infinite', self.onInfinite);\n }\n\n if (tab) {\n f7.on('tabShow', self.onTabShow);\n f7.on('tabHide', self.onTabHide);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.$f7) return;\n self.$f7.off('ptrPullStart', self.onPtrPullStart);\n self.$f7.off('ptrPullMove', self.onPtrPullMove);\n self.$f7.off('ptrPullEnd', self.onPtrPullEnd);\n self.$f7.off('ptrRefresh', self.onPtrRefresh);\n self.$f7.off('ptrDone', self.onPtrDone);\n self.$f7.off('infinite', self.onInfinite);\n self.$f7.off('tabShow', self.onTabShow);\n self.$f7.off('tabHide', self.onTabHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onPtrPullStart(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullstart ptrPullStart');\n },\n\n onPtrPullMove(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullmove ptrPullMove');\n },\n\n onPtrPullEnd(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:pullend ptrPullEnd');\n },\n\n onPtrRefresh(el, done) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:refresh ptrRefresh', done);\n },\n\n onPtrDone(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('ptr:done ptrDone');\n },\n\n onInfinite(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('infinite');\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7PageContent from './page-content';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-page',\n props: Object.assign({\n id: [String, Number],\n name: String,\n stacked: Boolean,\n withSubnavbar: {\n type: Boolean,\n default: undefined\n },\n subnavbar: {\n type: Boolean,\n default: undefined\n },\n withNavbarLarge: {\n type: Boolean,\n default: undefined\n },\n navbarLarge: {\n type: Boolean,\n default: undefined\n },\n noNavbar: Boolean,\n noToolbar: Boolean,\n tabs: Boolean,\n pageContent: {\n type: Boolean,\n default: true\n },\n noSwipeback: Boolean,\n ptr: Boolean,\n ptrDistance: Number,\n ptrPreloader: {\n type: Boolean,\n default: true\n },\n ptrBottom: Boolean,\n ptrMousewheel: Boolean,\n infinite: Boolean,\n infiniteTop: Boolean,\n infiniteDistance: Number,\n infinitePreloader: {\n type: Boolean,\n default: true\n },\n hideBarsOnScroll: Boolean,\n hideNavbarOnScroll: Boolean,\n hideToolbarOnScroll: Boolean,\n messagesContent: Boolean,\n loginScreen: Boolean\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n hasSubnavbar: false,\n hasNavbarLarge: false,\n hasNavbarLargeCollapsed: false,\n hasCardExpandableOpened: false,\n routerPositionClass: '',\n routerForceUnstack: false,\n routerPageRole: null,\n routerPageRoleDetailRoot: false,\n routerPageMasterStack: false\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n name,\n pageContent,\n messagesContent,\n ptr,\n ptrDistance,\n ptrPreloader,\n ptrBottom,\n ptrMousewheel,\n infinite,\n infiniteDistance,\n infinitePreloader,\n infiniteTop,\n hideBarsOnScroll,\n hideNavbarOnScroll,\n hideToolbarOnScroll,\n loginScreen,\n className,\n stacked,\n tabs,\n subnavbar,\n withSubnavbar,\n navbarLarge,\n withNavbarLarge,\n noNavbar,\n noToolbar,\n noSwipeback\n } = props;\n const fixedList = [];\n const staticList = [];\n const {\n static: slotsStatic,\n fixed: slotsFixed,\n default: slotsDefault\n } = self.$slots;\n let fixedTags;\n fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index'.split(' ');\n let hasSubnavbar;\n let hasMessages;\n let hasNavbarLarge;\n hasMessages = self.$options.propsData.messagesContent;\n\n if (slotsDefault) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n {\n const tag = child.tag;\n\n if (!tag) {\n if (pageContent) staticList.push(child);\n return;\n }\n\n if (tag.indexOf('subnavbar') >= 0) hasSubnavbar = true;\n\n if (tag.indexOf('navbar') >= 0) {\n if (child.componentOptions && child.componentOptions.propsData && 'large' in child.componentOptions.propsData && (child.componentOptions.propsData.large || child.componentOptions.propsData.large === '')) {\n hasNavbarLarge = true;\n }\n }\n\n if (typeof hasMessages === 'undefined' && tag.indexOf('messages') >= 0) hasMessages = true;\n\n for (let j = 0; j < fixedTags.length; j += 1) {\n if (tag.indexOf(fixedTags[j]) >= 0) {\n isFixedTag = true;\n }\n }\n }\n\n if (pageContent) {\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n }\n });\n }\n\n const forceSubnavbar = typeof subnavbar === 'undefined' && typeof withSubnavbar === 'undefined' ? hasSubnavbar || this.state.hasSubnavbar : false;\n const forceNavbarLarge = typeof navbarLarge === 'undefined' && typeof withNavbarLarge === 'undefined' ? hasNavbarLarge || this.state.hasNavbarLarge : false;\n const classes = Utils.classNames(className, 'page', this.state.routerPositionClass, {\n stacked: stacked && !this.state.routerForceUnstack,\n tabs,\n 'page-with-subnavbar': subnavbar || withSubnavbar || forceSubnavbar,\n 'page-with-navbar-large': navbarLarge || withNavbarLarge || forceNavbarLarge,\n 'no-navbar': noNavbar,\n 'no-toolbar': noToolbar,\n 'no-swipeback': noSwipeback,\n 'page-master': this.state.routerPageRole === 'master',\n 'page-master-detail': this.state.routerPageRole === 'detail',\n 'page-master-detail-root': this.state.routerPageRoleDetailRoot === true,\n 'page-master-stacked': this.state.routerPageMasterStack === true,\n 'page-with-navbar-large-collapsed': this.state.hasNavbarLargeCollapsed === true,\n 'page-with-card-opened': this.state.hasCardExpandableOpened === true,\n 'login-screen-page': loginScreen\n }, Mixins.colorClasses(props));\n\n if (!pageContent) {\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-name': name\n }\n }, [slotsFixed, slotsStatic, slotsDefault]);\n }\n\n const pageContentEl = _h(F7PageContent, {\n on: {\n ptrPullStart: self.onPtrPullStart,\n ptrPullMove: self.onPtrPullMove,\n ptrPullEnd: self.onPtrPullEnd,\n ptrRefresh: self.onPtrRefresh,\n ptrDone: self.onPtrDone,\n infinite: self.onInfinite\n },\n attrs: {\n ptr: ptr,\n ptrDistance: ptrDistance,\n ptrPreloader: ptrPreloader,\n ptrBottom: ptrBottom,\n ptrMousewheel: ptrMousewheel,\n infinite: infinite,\n infiniteTop: infiniteTop,\n infiniteDistance: infiniteDistance,\n infinitePreloader: infinitePreloader,\n hideBarsOnScroll: hideBarsOnScroll,\n hideNavbarOnScroll: hideNavbarOnScroll,\n hideToolbarOnScroll: hideToolbarOnScroll,\n messagesContent: messagesContent || hasMessages,\n loginScreen: loginScreen\n }\n }, [slotsStatic, staticList]);\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-name': name\n }\n }, [fixedList, slotsFixed, pageContentEl]);\n },\n\n created() {\n Utils.bindMethods(this, ['onPtrPullStart', 'onPtrPullMove', 'onPtrPullEnd', 'onPtrRefresh', 'onPtrDone', 'onInfinite', 'onPageMounted', 'onPageInit', 'onPageReinit', 'onPageBeforeIn', 'onPageBeforeOut', 'onPageAfterOut', 'onPageAfterIn', 'onPageBeforeRemove', 'onPageBeforeUnmount', 'onPageStack', 'onPageUnstack', 'onPagePosition', 'onPageRole', 'onPageMasterStack', 'onPageMasterUnstack', 'onPageNavbarLargeCollapsed', 'onPageNavbarLargeExpanded', 'onCardOpened', 'onCardClose', 'onPageTabShow', 'onPageTabHide']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n f7.on('pageMounted', self.onPageMounted);\n f7.on('pageInit', self.onPageInit);\n f7.on('pageReinit', self.onPageReinit);\n f7.on('pageBeforeIn', self.onPageBeforeIn);\n f7.on('pageBeforeOut', self.onPageBeforeOut);\n f7.on('pageAfterOut', self.onPageAfterOut);\n f7.on('pageAfterIn', self.onPageAfterIn);\n f7.on('pageBeforeRemove', self.onPageBeforeRemove);\n f7.on('pageBeforeUnmount', self.onPageBeforeUnmount);\n f7.on('pageStack', self.onPageStack);\n f7.on('pageUnstack', self.onPageUnstack);\n f7.on('pagePosition', self.onPagePosition);\n f7.on('pageRole', self.onPageRole);\n f7.on('pageMasterStack', self.onPageMasterStack);\n f7.on('pageMasterUnstack', self.onPageMasterUnstack);\n f7.on('pageNavbarLargeCollapsed', self.onPageNavbarLargeCollapsed);\n f7.on('pageNavbarLargeExpanded', self.onPageNavbarLargeExpanded);\n f7.on('cardOpened', self.onCardOpened);\n f7.on('cardClose', self.onCardClose);\n f7.on('pageTabShow', self.onPageTabShow);\n f7.on('pageTabHide', self.onPageTabHide);\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.$f7) return;\n const f7 = self.$f7;\n f7.off('pageMounted', self.onPageMounted);\n f7.off('pageInit', self.onPageInit);\n f7.off('pageReinit', self.onPageReinit);\n f7.off('pageBeforeIn', self.onPageBeforeIn);\n f7.off('pageBeforeOut', self.onPageBeforeOut);\n f7.off('pageAfterOut', self.onPageAfterOut);\n f7.off('pageAfterIn', self.onPageAfterIn);\n f7.off('pageBeforeRemove', self.onPageBeforeRemove);\n f7.off('pageBeforeUnmount', self.onPageBeforeUnmount);\n f7.off('pageStack', self.onPageStack);\n f7.off('pageUnstack', self.onPageUnstack);\n f7.off('pagePosition', self.onPagePosition);\n f7.off('pageRole', self.onPageRole);\n f7.off('pageMasterStack', self.onPageMasterStack);\n f7.off('pageMasterUnstack', self.onPageMasterUnstack);\n f7.off('pageNavbarLargeCollapsed', self.onPageNavbarLargeCollapsed);\n f7.off('pageNavbarLargeExpanded', self.onPageNavbarLargeExpanded);\n f7.off('cardOpened', self.onCardOpened);\n f7.off('cardClose', self.onCardClose);\n f7.off('pageTabShow', self.onPageTabShow);\n f7.off('pageTabHide', self.onPageTabHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onPtrPullStart(...args) {\n this.dispatchEvent('ptr:pullstart ptrPullStart', ...args);\n },\n\n onPtrPullMove(...args) {\n this.dispatchEvent('ptr:pullmove ptrPullMove', ...args);\n },\n\n onPtrPullEnd(...args) {\n this.dispatchEvent('ptr:pullend ptrPullEnd', ...args);\n },\n\n onPtrRefresh(...args) {\n this.dispatchEvent('ptr:refresh ptrRefresh', ...args);\n },\n\n onPtrDone(...args) {\n this.dispatchEvent('ptr:done ptrDone', ...args);\n },\n\n onInfinite(...args) {\n this.dispatchEvent('infinite', ...args);\n },\n\n onPageMounted(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:mounted pageMounted', page);\n },\n\n onPageInit(page) {\n if (this.eventTargetEl !== page.el) return;\n const {\n withSubnavbar,\n subnavbar,\n withNavbarLarge,\n navbarLarge\n } = this.props;\n\n if (typeof withSubnavbar === 'undefined' && typeof subnavbar === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length || page.$el.children('.navbar').find('.subnavbar').length) {\n this.setState({\n hasSubnavbar: true\n });\n }\n }\n\n if (typeof withNavbarLarge === 'undefined' && typeof navbarLarge === 'undefined') {\n if (page.$navbarEl && page.$navbarEl.hasClass('navbar-large')) {\n this.setState({\n hasNavbarLarge: true\n });\n }\n }\n\n this.dispatchEvent('page:init pageInit', page);\n },\n\n onPageReinit(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:reinit pageReinit', page);\n },\n\n onPageBeforeIn(page) {\n if (this.eventTargetEl !== page.el) return;\n\n if (!page.swipeBack) {\n if (page.from === 'next') {\n this.setState({\n routerPositionClass: 'page-next'\n });\n }\n\n if (page.from === 'previous') {\n this.setState({\n routerPositionClass: 'page-previous'\n });\n }\n }\n\n this.dispatchEvent('page:beforein pageBeforeIn', page);\n },\n\n onPageBeforeOut(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeout pageBeforeOut', page);\n },\n\n onPageAfterOut(page) {\n if (this.eventTargetEl !== page.el) return;\n\n if (page.to === 'next') {\n this.setState({\n routerPositionClass: 'page-next'\n });\n }\n\n if (page.to === 'previous') {\n this.setState({\n routerPositionClass: 'page-previous'\n });\n }\n\n this.dispatchEvent('page:afterout pageAfterOut', page);\n },\n\n onPageAfterIn(page) {\n if (this.eventTargetEl !== page.el) return;\n this.setState({\n routerPositionClass: 'page-current'\n });\n this.dispatchEvent('page:afterin pageAfterIn', page);\n },\n\n onPageBeforeRemove(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeremove pageBeforeRemove', page);\n },\n\n onPageBeforeUnmount(page) {\n if (this.eventTargetEl !== page.el) return;\n this.dispatchEvent('page:beforeunmount pageBeforeUnmount', page);\n },\n\n onPageStack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerForceUnstack: false\n });\n },\n\n onPageUnstack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerForceUnstack: true\n });\n },\n\n onPagePosition(pageEl, position) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPositionClass: `page-${position}`\n });\n },\n\n onPageRole(pageEl, rolesData) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageRole: rolesData.role,\n routerPageRoleDetailRoot: rolesData.detailRoot\n });\n },\n\n onPageMasterStack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageMasterStack: true\n });\n },\n\n onPageMasterUnstack(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n routerPageMasterStack: false\n });\n },\n\n onPageNavbarLargeCollapsed(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasNavbarLargeCollapsed: true\n });\n },\n\n onPageNavbarLargeExpanded(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasNavbarLargeCollapsed: false\n });\n },\n\n onCardOpened(cardEl, pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasCardExpandableOpened: true\n });\n },\n\n onCardClose(cardEl, pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.setState({\n hasCardExpandableOpened: false\n });\n },\n\n onPageTabShow(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.dispatchEvent('page:tabshow pageTabShow');\n },\n\n onPageTabHide(pageEl) {\n if (this.eventTargetEl !== pageEl) return;\n this.dispatchEvent('page:tabhide pageTabHide');\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-panel',\n props: Object.assign({\n id: [String, Number],\n side: String,\n effect: String,\n cover: Boolean,\n reveal: Boolean,\n left: Boolean,\n right: Boolean,\n opened: Boolean,\n resizable: Boolean,\n backdrop: {\n type: Boolean,\n default: true\n },\n backdropEl: {\n type: String,\n default: undefined\n },\n visibleBreakpoint: {\n type: Number,\n default: undefined\n },\n collapsedBreakpoint: {\n type: Number,\n default: undefined\n },\n swipe: Boolean,\n swipeNoFollow: Boolean,\n swipeOnlyClose: Boolean,\n swipeActiveArea: {\n type: Number,\n default: 0\n },\n swipeThreshold: {\n type: Number,\n default: 0\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n id,\n style,\n resizable\n } = props;\n return _h('div', {\n ref: 'el',\n style: style,\n class: this.classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && _h('div', {\n class: 'panel-resize-handler'\n })]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n left,\n reveal,\n className,\n resizable\n } = props;\n let {\n side,\n effect\n } = props;\n side = side || (left ? 'left' : 'right');\n effect = effect || (reveal ? 'reveal' : 'cover');\n return Utils.classNames(className, 'panel', {\n 'panel-resizable': resizable,\n [`panel-${side}`]: side,\n [`panel-${effect}`]: effect\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n watch: {\n 'props.resizable': function watchResizable(resizable) {\n const self = this;\n if (!self.f7Panel) return;\n if (resizable) self.f7Panel.enableResizable();else self.f7Panel.disableResizable();\n },\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Panel) return;\n\n if (opened) {\n self.f7Panel.open();\n } else {\n self.f7Panel.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onBackdropClick', 'onSwipe', 'onSwipeOpen', 'onBreakpoint', 'onCollapsedBreakpoint', 'onResize']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n const {\n opened,\n resizable,\n backdrop,\n backdropEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold\n } = self.props;\n self.$f7ready(() => {\n const $ = self.$$;\n if (!$) return;\n\n if ($('.panel-backdrop').length === 0) {\n $('<div class=\"panel-backdrop\"></div>').insertBefore(el);\n }\n\n const params = Utils.noUndefinedProps({\n el,\n resizable,\n backdrop,\n backdropEl,\n visibleBreakpoint,\n collapsedBreakpoint,\n swipe,\n swipeNoFollow,\n swipeOnlyClose,\n swipeActiveArea,\n swipeThreshold,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed,\n backdropClick: self.onBackdropClick,\n swipe: self.onSwipe,\n swipeOpen: self.onSwipeOpen,\n collapsedBreakpoint: self.onCollapsedBreakpoint,\n breakpoint: self.onBreakpoint,\n resize: self.onResize\n }\n });\n self.f7Panel = self.$f7.panel.create(params);\n\n if (opened) {\n self.f7Panel.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.f7Panel && self.f7Panel.destroy) {\n self.f7Panel.destroy();\n }\n },\n\n methods: {\n onOpen(event) {\n this.dispatchEvent('panel:open panelOpen', event);\n },\n\n onOpened(event) {\n this.dispatchEvent('panel:opened panelOpened', event);\n },\n\n onClose(event) {\n this.dispatchEvent('panel:close panelClose', event);\n },\n\n onClosed(event) {\n this.dispatchEvent('panel:closed panelClosed', event);\n },\n\n onBackdropClick(event) {\n this.dispatchEvent('panel:backdrop-click panelBackdropClick', event);\n },\n\n onSwipe(event) {\n this.dispatchEvent('panel:swipe panelSwipe', event);\n },\n\n onSwipeOpen(event) {\n this.dispatchEvent('panel:swipeopen panelSwipeOpen', event);\n },\n\n onBreakpoint(event) {\n this.dispatchEvent('panel:breakpoint panelBreakpoint', event);\n },\n\n onCollapsedBreakpoint(event) {\n this.dispatchEvent('panel:collapsedbreakpoint panelCollapsedBreakpoint', event);\n },\n\n onResize(...args) {\n this.dispatchEvent('panel:resize panelResize', ...args);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.close(animate);\n },\n\n toggle(animate) {\n const self = this;\n if (!self.f7Panel) return;\n self.f7Panel.toggle(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-photo-browser',\n props: {\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n params: Object,\n photos: Array,\n exposition: {\n type: Boolean,\n default: true\n },\n expositionHideCaptions: {\n type: Boolean,\n default: false\n },\n type: {\n type: String\n },\n navbar: {\n type: Boolean,\n default: true\n },\n toolbar: {\n type: Boolean,\n default: true\n },\n theme: {\n type: String\n },\n captionsTheme: {\n type: String\n },\n iconsColor: {\n type: String\n },\n swipeToClose: {\n type: Boolean,\n default: true\n },\n pageBackLinkText: {\n type: String,\n default: undefined\n },\n popupCloseLinkText: {\n type: String,\n default: undefined\n },\n navbarOfText: {\n type: String,\n default: undefined\n },\n navbarShowCount: {\n type: Boolean,\n default: undefined\n },\n swiper: {\n type: Object\n },\n url: {\n type: String\n },\n routableModals: {\n type: Boolean,\n default: true\n },\n virtualSlides: {\n type: Boolean,\n default: true\n },\n view: [String, Object],\n renderNavbar: Function,\n renderToolbar: Function,\n renderCaption: Function,\n renderObject: Function,\n renderLazyPhoto: Function,\n renderPhoto: Function,\n renderPage: Function,\n renderPopup: Function,\n renderStandalone: Function\n },\n\n render() {\n const _h = this.$createElement;\n return null;\n },\n\n watch: {\n 'props.photos': function watchPhotos(newValue) {\n const self = this;\n const pb = self.f7PhotoBrowser;\n if (!pb) return;\n self.f7PhotoBrowser.params.photos = newValue;\n\n if (pb.opened && pb.swiper) {\n pb.swiper.update();\n }\n }\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7PhotoBrowser && self.f7PhotoBrowser.destroy) self.f7PhotoBrowser.destroy();\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n let params;\n if (typeof self.props.params !== 'undefined') params = self.props.params;else params = Object.assign({}, self.props);\n Object.keys(params).forEach(param => {\n if (typeof params[param] === 'undefined' || params[param] === '') delete params[param];\n });\n params = Utils.extend({}, params, {\n on: {\n open() {\n self.dispatchEvent('photobrowser:open photoBrowserOpen');\n },\n\n close() {\n self.dispatchEvent('photobrowser:close photoBrowserClose');\n },\n\n opened() {\n self.dispatchEvent('photobrowser:opened photoBrowserOpened');\n },\n\n closed() {\n self.dispatchEvent('photobrowser:closed photoBrowserClosed');\n },\n\n swipeToClose() {\n self.dispatchEvent('photobrowser:swipetoclose photoBrowserSwipeToClose');\n }\n\n }\n });\n self.f7PhotoBrowser = f7.photoBrowser.create(params);\n });\n },\n\n methods: {\n open(index) {\n return this.f7PhotoBrowser.open(index);\n },\n\n close() {\n return this.f7PhotoBrowser.close();\n },\n\n expositionToggle() {\n return this.f7PhotoBrowser.expositionToggle();\n },\n\n expositionEnable() {\n return this.f7PhotoBrowser.expositionEnable();\n },\n\n expositionDisable() {\n return this.f7PhotoBrowser.expositionDisable();\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-popover',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n target: [String, Object],\n backdrop: Boolean,\n backdropEl: [String, Object, window.HTMLElement],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'popover', Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: 'popover-angle'\n }), _h('div', {\n class: 'popover-inner'\n }, [this.$slots['default']])]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Popover) return;\n\n if (opened) {\n self.f7Popover.open();\n } else {\n self.f7Popover.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n target,\n opened,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape\n } = props;\n const popoverParams = {\n el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n if (target) popoverParams.targetEl = target;\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.closeByBackdropClick !== 'undefined') popoverParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') popoverParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') popoverParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.backdrop !== 'undefined') popoverParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') popoverParams.backdropEl = backdropEl;\n }\n self.$f7ready(() => {\n self.f7Popover = self.$f7.popover.create(popoverParams);\n\n if (opened && target) {\n self.f7Popover.open(target, false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Popover) self.f7Popover.destroy();\n },\n\n methods: {\n onOpen(instance) {\n this.dispatchEvent('popover:open popoverOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('popover:opened popoverOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('popover:close popoverClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('popover:closed popoverClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Popover) return undefined;\n return self.f7Popover.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Popover) return undefined;\n return self.f7Popover.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-popup',\n props: Object.assign({\n id: [String, Number],\n tabletFullscreen: Boolean,\n opened: Boolean,\n animate: Boolean,\n backdrop: Boolean,\n backdropEl: [String, Object, window.HTMLElement],\n closeByBackdropClick: Boolean,\n closeOnEscape: Boolean,\n swipeToClose: {\n type: [Boolean, String],\n default: false\n },\n swipeHandler: [String, Object, window.HTMLElement],\n push: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tabletFullscreen,\n push\n } = props;\n const classes = Utils.classNames(className, 'popup', {\n 'popup-tablet-fullscreen': tabletFullscreen,\n 'popup-push': push\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Popup) return;\n\n if (opened) {\n self.f7Popup.open();\n } else {\n self.f7Popup.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onSwipeStart', 'onSwipeMove', 'onSwipeEnd', 'onSwipeClose']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n closeByBackdropClick,\n backdrop,\n backdropEl,\n animate,\n closeOnEscape,\n swipeToClose,\n swipeHandler\n } = props;\n const popupParams = {\n el,\n on: {\n swipeStart: self.onSwipeStart,\n swipeMove: self.onSwipeMove,\n swipeEnd: self.onSwipeEnd,\n swipeClose: self.onSwipeClose,\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed\n }\n };\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.closeByBackdropClick !== 'undefined') popupParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeOnEscape !== 'undefined') popupParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.animate !== 'undefined') popupParams.animate = animate;\n if (typeof propsData.backdrop !== 'undefined') popupParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') popupParams.backdropEl = backdropEl;\n if (typeof propsData.swipeToClose !== 'undefined') popupParams.swipeToClose = swipeToClose;\n if (typeof propsData.swipeHandler !== 'undefined') popupParams.swipeHandler = swipeHandler;\n }\n self.$f7ready(() => {\n self.f7Popup = self.$f7.popup.create(popupParams);\n\n if (self.props.opened) {\n self.f7Popup.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Popup) self.f7Popup.destroy();\n },\n\n methods: {\n onSwipeStart(instance) {\n this.dispatchEvent('popup:swipestart popupSwipeStart', instance);\n },\n\n onSwipeMove(instance) {\n this.dispatchEvent('popup:swipemove popupSwipeMove', instance);\n },\n\n onSwipeEnd(instance) {\n this.dispatchEvent('popup:swipeend popupSwipeEnd', instance);\n },\n\n onSwipeClose(instance) {\n this.dispatchEvent('popup:swipeclose popupSwipeClose', instance);\n },\n\n onOpen(instance) {\n this.dispatchEvent('popup:open popupOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('popup:opened popupOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('popup:close popupClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('popup:closed popupClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Popup) return undefined;\n return self.f7Popup.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Popup) return undefined;\n return self.f7Popup.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-progressbar',\n props: Object.assign({\n id: [String, Number],\n progress: Number,\n infinite: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n progress,\n id,\n style,\n infinite,\n className\n } = props;\n const transformStyle = {\n transform: progress ? `translate3d(${-100 + progress}%, 0, 0)` : '',\n WebkitTransform: progress ? `translate3d(${-100 + progress}%, 0, 0)` : ''\n };\n const classes = Utils.classNames(className, 'progressbar', {\n 'progressbar-infinite': infinite\n }, Mixins.colorClasses(props));\n return _h('span', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id,\n 'data-progress': progress\n }\n }, [_h('span', {\n style: transformStyle\n })]);\n },\n\n methods: {\n set(progress, speed) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.progressbar.set(self.$refs.el, progress, speed);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-radio',\n props: Object.assign({\n id: [String, Number],\n checked: Boolean,\n name: [Number, String],\n value: [Number, String, Boolean],\n disabled: Boolean,\n readonly: Boolean,\n defaultChecked: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n name,\n value,\n disabled,\n readonly,\n checked,\n defaultChecked,\n id,\n style,\n className\n } = props;\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value,\n disabled,\n readonly,\n checked\n },\n on: {\n change: self.onChange\n },\n attrs: {\n type: 'radio',\n name: name\n }\n });\n }\n\n const iconEl = _h('i', {\n class: 'icon-radio'\n });\n\n const classes = Utils.classNames(className, 'radio', {\n disabled\n }, Mixins.colorClasses(props));\n return _h('label', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [inputEl, iconEl, this.$slots['default']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onChange']);\n },\n\n methods: {\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-row',\n props: Object.assign({\n id: [String, Number],\n noGap: Boolean,\n tag: {\n type: String,\n default: 'div'\n },\n resizable: Boolean,\n resizableFixed: Boolean,\n resizableAbsolute: Boolean,\n resizableHandler: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tag,\n noGap,\n resizable,\n resizableFixed,\n resizableAbsolute,\n resizableHandler\n } = props;\n const RowTag = tag;\n const classes = Utils.classNames(className, 'row', {\n 'no-gap': noGap,\n resizable,\n 'resizable-fixed': resizableFixed,\n 'resizable-absolute': resizableAbsolute\n }, Mixins.colorClasses(props));\n return _h(RowTag, {\n style: style,\n class: classes,\n ref: 'el',\n attrs: {\n id: id\n }\n }, [this.$slots['default'], resizable && resizableHandler && _h('span', {\n class: 'resize-handler'\n })]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onResize']);\n },\n\n mounted() {\n const self = this;\n self.eventTargetEl = self.$refs.el;\n self.eventTargetEl.addEventListener('click', self.onClick);\n self.$f7ready(f7 => {\n f7.on('gridResize', self.onResize);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const el = self.$refs.el;\n if (!el || !self.$f7) return;\n el.removeEventListener('click', self.onClick);\n self.$f7.off('gridResize', self.onResize);\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onResize(el) {\n if (el === this.eventTargetEl) {\n this.dispatchEvent('grid:resize gridResize');\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-searchbar',\n props: Object.assign({\n id: [String, Number],\n noShadow: Boolean,\n noHairline: Boolean,\n form: {\n type: Boolean,\n default: true\n },\n placeholder: {\n type: String,\n default: 'Search'\n },\n disableButton: {\n type: Boolean,\n default: true\n },\n disableButtonText: {\n type: String,\n default: 'Cancel'\n },\n clearButton: {\n type: Boolean,\n default: true\n },\n value: [String, Number, Array],\n inputEvents: {\n type: String,\n default: 'change input compositionend'\n },\n expandable: Boolean,\n inline: Boolean,\n searchContainer: [String, Object],\n searchIn: {\n type: String,\n default: '.item-title'\n },\n searchItem: {\n type: String,\n default: 'li'\n },\n searchGroup: {\n type: String,\n default: '.list-group'\n },\n searchGroupTitle: {\n type: String,\n default: '.item-divider, .list-group-title'\n },\n foundEl: {\n type: [String, Object],\n default: '.searchbar-found'\n },\n notFoundEl: {\n type: [String, Object],\n default: '.searchbar-not-found'\n },\n backdrop: {\n type: Boolean,\n default: undefined\n },\n backdropEl: [String, Object],\n hideOnEnableEl: {\n type: [String, Object],\n default: '.searchbar-hide-on-enable'\n },\n hideOnSearchEl: {\n type: [String, Object],\n default: '.searchbar-hide-on-search'\n },\n ignore: {\n type: String,\n default: '.searchbar-ignore'\n },\n customSearch: {\n type: Boolean,\n default: false\n },\n removeDiacritics: {\n type: Boolean,\n default: false\n },\n hideDividers: {\n type: Boolean,\n default: true\n },\n hideGroups: {\n type: Boolean,\n default: true\n },\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n let clearEl;\n let disableEl;\n const props = self.props;\n const {\n placeholder,\n clearButton,\n disableButton,\n disableButtonText,\n form,\n noShadow,\n noHairline,\n expandable,\n className,\n style,\n id,\n value,\n inline\n } = props;\n\n if (clearButton) {\n clearEl = _h('span', {\n ref: 'clearEl',\n class: 'input-clear-button'\n });\n }\n\n if (disableButton) {\n disableEl = _h('span', {\n ref: 'disableEl',\n class: 'searchbar-disable-button'\n }, [disableButtonText]);\n }\n\n const SearchbarTag = form ? 'form' : 'div';\n const classes = Utils.classNames(className, 'searchbar', {\n 'searchbar-inline': inline,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline,\n 'searchbar-expandable': expandable\n }, Mixins.colorClasses(props));\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n value\n },\n on: {\n input: self.onInput,\n change: self.onChange,\n focus: self.onFocus,\n blur: self.onBlur\n },\n attrs: {\n placeholder: placeholder,\n type: 'search'\n }\n });\n }\n return _h(SearchbarTag, {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], _h('div', {\n class: 'searchbar-inner'\n }, [this.$slots['inner-start'], _h('div', {\n class: 'searchbar-input-wrap'\n }, [this.$slots['input-wrap-start'], inputEl, _h('i', {\n class: 'searchbar-icon'\n }), clearEl, this.$slots['input-wrap-end']]), disableEl, this.$slots['inner-end'], this.$slots['default']]), this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onSubmit', 'onClearButtonClick', 'onDisableButtonClick', 'onInput', 'onChange', 'onFocus', 'onBlur']);\n },\n\n mounted() {\n const self = this;\n const {\n init,\n inputEvents,\n searchContainer,\n searchIn,\n searchItem,\n searchGroup,\n searchGroupTitle,\n hideOnEnableEl,\n hideOnSearchEl,\n foundEl,\n notFoundEl,\n backdrop,\n backdropEl,\n disableButton,\n ignore,\n customSearch,\n removeDiacritics,\n hideDividers,\n hideGroups,\n form,\n expandable,\n inline\n } = self.props;\n const {\n el,\n clearEl,\n disableEl\n } = self.$refs;\n\n if (form && el) {\n el.addEventListener('submit', self.onSubmit, false);\n }\n\n if (clearEl) {\n clearEl.addEventListener('click', self.onClearButtonClick);\n }\n\n if (disableEl) {\n disableEl.addEventListener('click', self.onDisableButtonClick);\n }\n\n if (!init) return;\n self.$f7ready(() => {\n const params = Utils.noUndefinedProps({\n el: self.$refs.el,\n inputEvents,\n searchContainer,\n searchIn,\n searchItem,\n searchGroup,\n searchGroupTitle,\n hideOnEnableEl,\n hideOnSearchEl,\n foundEl,\n notFoundEl,\n backdrop,\n backdropEl,\n disableButton,\n ignore,\n customSearch,\n removeDiacritics,\n hideDividers,\n hideGroups,\n expandable,\n inline,\n on: {\n search(searchbar, query, previousQuery) {\n self.dispatchEvent('searchbar:search searchbarSearch', searchbar, query, previousQuery);\n },\n\n clear(searchbar, previousQuery) {\n self.dispatchEvent('searchbar:clear searchbarClear', searchbar, previousQuery);\n },\n\n enable(searchbar) {\n self.dispatchEvent('searchbar:enable searchbarEnable', searchbar);\n },\n\n disable(searchbar) {\n self.dispatchEvent('searchbar:disable searchbarDisable', searchbar);\n }\n\n }\n });\n Object.keys(params).forEach(key => {\n if (params[key] === '') {\n delete params[key];\n }\n });\n self.f7Searchbar = self.$f7.searchbar.create(params);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el,\n clearEl,\n disableEl\n } = self.$refs;\n\n if (self.props.form && el) {\n el.removeEventListener('submit', self.onSubmit, false);\n }\n\n if (clearEl) {\n clearEl.removeEventListener('click', self.onClearButtonClick);\n }\n\n if (disableEl) {\n disableEl.removeEventListener('click', self.onDisableButtonClick);\n }\n\n if (self.f7Searchbar && self.f7Searchbar.destroy) self.f7Searchbar.destroy();\n },\n\n methods: {\n search(query) {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.search(query);\n },\n\n enable() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.enable();\n },\n\n disable() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.disable();\n },\n\n toggle() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.toggle();\n },\n\n clear() {\n if (!this.f7Searchbar) return undefined;\n return this.f7Searchbar.clear();\n },\n\n onChange(event) {\n this.dispatchEvent('change', event);\n },\n\n onInput(event) {\n this.dispatchEvent('input', event);\n },\n\n onFocus(event) {\n this.dispatchEvent('focus', event);\n },\n\n onBlur(event) {\n this.dispatchEvent('blur', event);\n },\n\n onSubmit(event) {\n this.dispatchEvent('submit', event);\n },\n\n onClearButtonClick(event) {\n this.dispatchEvent('click:clear clickClear', event);\n },\n\n onDisableButtonClick(event) {\n this.dispatchEvent('click:disable clickDisable', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-segmented',\n props: Object.assign({\n id: [String, Number],\n raised: Boolean,\n raisedIos: Boolean,\n raisedMd: Boolean,\n raisedAurora: Boolean,\n round: Boolean,\n roundIos: Boolean,\n roundMd: Boolean,\n roundAurora: Boolean,\n strong: Boolean,\n strongIos: Boolean,\n strongMd: Boolean,\n strongAurora: Boolean,\n tag: {\n type: String,\n default: 'div'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n raised,\n raisedIos,\n raisedAurora,\n raisedMd,\n round,\n roundIos,\n roundAurora,\n roundMd,\n strong,\n strongIos,\n strongMd,\n strongAurora,\n id,\n style,\n tag\n } = props;\n const classNames = Utils.classNames(className, {\n segmented: true,\n 'segmented-raised': raised,\n 'segmented-raised-ios': raisedIos,\n 'segmented-raised-aurora': raisedAurora,\n 'segmented-raised-md': raisedMd,\n 'segmented-round': round,\n 'segmented-round-ios': roundIos,\n 'segmented-round-aurora': roundAurora,\n 'segmented-round-md': roundMd,\n 'segmented-strong': strong,\n 'segmented-strong-ios': strongIos,\n 'segmented-strong-md': strongMd,\n 'segmented-strong-aurora': strongAurora\n }, Mixins.colorClasses(props));\n const SegmentedTag = tag;\n return _h(SegmentedTag, {\n style: style,\n class: classNames,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], (strong || strongIos || strongMd || strongAurora) && _h('span', {\n class: 'segmented-highlight'\n })]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Mixins from '../utils/mixins';\nimport Utils from '../utils/utils';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-sheet',\n props: Object.assign({\n id: [String, Number],\n opened: Boolean,\n top: Boolean,\n bottom: Boolean,\n position: String,\n backdrop: Boolean,\n backdropEl: [String, Object, window.HTMLElement],\n closeByBackdropClick: Boolean,\n closeByOutsideClick: Boolean,\n closeOnEscape: Boolean,\n push: Boolean,\n swipeToClose: Boolean,\n swipeToStep: Boolean,\n swipeHandler: [String, Object, window.HTMLElement]\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const fixedList = [];\n const staticList = [];\n const props = self.props;\n const {\n id,\n style,\n className,\n top,\n bottom,\n position,\n push\n } = props;\n let fixedTags;\n fixedTags = 'navbar toolbar tabbar subnavbar searchbar messagebar fab list-index'.split(' ');\n const slotsDefault = self.$slots.default;\n\n if (slotsDefault && slotsDefault.length) {\n slotsDefault.forEach(child => {\n if (typeof child === 'undefined') return;\n let isFixedTag = false;\n {\n const tag = child.tag;\n\n if (!tag) {\n return;\n }\n\n for (let j = 0; j < fixedTags.length; j += 1) {\n if (tag.indexOf(fixedTags[j]) >= 0) {\n isFixedTag = true;\n }\n }\n }\n if (isFixedTag) fixedList.push(child);else staticList.push(child);\n });\n }\n\n const innerEl = _h('div', {\n class: 'sheet-modal-inner'\n }, [staticList]);\n\n let positionComputed = 'bottom';\n if (position) positionComputed = position;else if (top) positionComputed = 'top';else if (bottom) positionComputed = 'bottom';\n const classes = Utils.classNames(className, 'sheet-modal', `sheet-modal-${positionComputed}`, {\n 'sheet-modal-push': push\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [fixedList, innerEl]);\n },\n\n watch: {\n 'props.opened': function watchOpened(opened) {\n const self = this;\n if (!self.f7Sheet) return;\n\n if (opened) {\n self.f7Sheet.open();\n } else {\n self.f7Sheet.close();\n }\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onOpen', 'onOpened', 'onClose', 'onClosed', 'onStepOpen', 'onStepClose', 'onStepProgress']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n if (!el) return;\n const props = self.props;\n const {\n opened,\n backdrop,\n backdropEl,\n closeByBackdropClick,\n closeByOutsideClick,\n closeOnEscape,\n swipeToClose,\n swipeToStep,\n swipeHandler\n } = props;\n const sheetParams = {\n el: self.$refs.el,\n on: {\n open: self.onOpen,\n opened: self.onOpened,\n close: self.onClose,\n closed: self.onClosed,\n stepOpen: self.onStepOpen,\n stepClose: self.onStepClose,\n stepProgress: self.onStepProgress\n }\n };\n {\n const propsData = self.$options.propsData;\n if (typeof propsData.backdrop !== 'undefined') sheetParams.backdrop = backdrop;\n if (typeof propsData.backdropEl !== 'undefined') sheetParams.backdropEl = backdropEl;\n if (typeof propsData.closeByBackdropClick !== 'undefined') sheetParams.closeByBackdropClick = closeByBackdropClick;\n if (typeof propsData.closeByOutsideClick !== 'undefined') sheetParams.closeByOutsideClick = closeByOutsideClick;\n if (typeof propsData.closeOnEscape !== 'undefined') sheetParams.closeOnEscape = closeOnEscape;\n if (typeof propsData.swipeToClose !== 'undefined') sheetParams.swipeToClose = swipeToClose;\n if (typeof propsData.swipeToStep !== 'undefined') sheetParams.swipeToStep = swipeToStep;\n if (typeof propsData.swipeHandler !== 'undefined') sheetParams.swipeHandler = swipeHandler;\n }\n self.$f7ready(() => {\n self.f7Sheet = self.$f7.sheet.create(sheetParams);\n\n if (opened) {\n self.f7Sheet.open(false);\n }\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (self.f7Sheet) self.f7Sheet.destroy();\n },\n\n methods: {\n onStepProgress(instance, progress) {\n this.dispatchEvent('sheet:stepprogress sheetStepProgress', instance, progress);\n },\n\n onStepOpen(instance) {\n this.dispatchEvent('sheet:stepopen sheetStepOpen', instance);\n },\n\n onStepClose(instance) {\n this.dispatchEvent('sheet:stepclose sheetStepClose', instance);\n },\n\n onOpen(instance) {\n this.dispatchEvent('sheet:open sheetOpen', instance);\n },\n\n onOpened(instance) {\n this.dispatchEvent('sheet:opened sheetOpened', instance);\n },\n\n onClose(instance) {\n this.dispatchEvent('sheet:close sheetClose', instance);\n },\n\n onClosed(instance) {\n this.dispatchEvent('sheet:closed sheetClosed', instance);\n },\n\n open(animate) {\n const self = this;\n if (!self.f7Sheet) return undefined;\n return self.f7Sheet.open(animate);\n },\n\n close(animate) {\n const self = this;\n if (!self.f7Sheet) return undefined;\n return self.f7Sheet.close(animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-skeleton-block',\n props: Object.assign({\n id: [String, Number],\n width: [Number, String],\n height: [Number, String],\n tag: {\n type: String,\n default: 'div'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n width,\n height,\n tag\n } = props;\n const classes = Utils.classNames('skeleton-block', className, Mixins.colorClasses(props));\n let styleAttribute = style;\n\n if (width) {\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n\n if (!styleAttribute) {\n styleAttribute = {\n width: widthValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n width: widthValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `width: ${widthValue}; ${styleAttribute}`;\n }\n }\n\n if (height) {\n const heightValue = typeof height === 'number' ? `${height}px` : height;\n\n if (!styleAttribute) {\n styleAttribute = {\n height: heightValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n height: heightValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `height: ${heightValue}; ${styleAttribute}`;\n }\n }\n\n const Tag = tag;\n return _h(Tag, {\n style: styleAttribute,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-skeleton-text',\n props: Object.assign({\n id: [String, Number],\n width: [Number, String],\n height: [Number, String],\n tag: {\n type: String,\n default: 'span'\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n width,\n height,\n tag\n } = props;\n const classes = Utils.classNames('skeleton-text', className, Mixins.colorClasses(props));\n let styleAttribute = style;\n\n if (width) {\n const widthValue = typeof width === 'number' ? `${width}px` : width;\n\n if (!styleAttribute) {\n styleAttribute = {\n width: widthValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n width: widthValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `width: ${widthValue}; ${styleAttribute}`;\n }\n }\n\n if (height) {\n const heightValue = typeof height === 'number' ? `${height}px` : height;\n\n if (!styleAttribute) {\n styleAttribute = {\n height: heightValue\n };\n } else if (typeof styleAttribute === 'object') {\n styleAttribute = Object.assign({\n height: heightValue\n }, styleAttribute);\n } else if (typeof styleAttribute === 'string') {\n styleAttribute = `height: ${heightValue}; ${styleAttribute}`;\n }\n }\n\n const Tag = tag;\n return _h(Tag, {\n style: styleAttribute,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-stepper',\n props: Object.assign({\n id: [String, Number],\n init: {\n type: Boolean,\n default: true\n },\n value: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n step: {\n type: Number,\n default: 1\n },\n formatValue: Function,\n name: String,\n inputId: String,\n input: {\n type: Boolean,\n default: true\n },\n inputType: {\n type: String,\n default: 'text'\n },\n inputReadonly: {\n type: Boolean,\n default: false\n },\n autorepeat: {\n type: Boolean,\n default: false\n },\n autorepeatDynamic: {\n type: Boolean,\n default: false\n },\n wraps: {\n type: Boolean,\n default: false\n },\n manualInputMode: {\n type: Boolean,\n default: false\n },\n decimalPoint: {\n type: Number,\n default: 4\n },\n buttonsEndInputMode: {\n type: Boolean,\n default: true\n },\n disabled: Boolean,\n buttonsOnly: Boolean,\n round: Boolean,\n roundMd: Boolean,\n roundIos: Boolean,\n roundAurora: Boolean,\n fill: Boolean,\n fillMd: Boolean,\n fillIos: Boolean,\n fillAurora: Boolean,\n large: Boolean,\n largeMd: Boolean,\n largeIos: Boolean,\n largeAurora: Boolean,\n small: Boolean,\n smallMd: Boolean,\n smallIos: Boolean,\n smallAurora: Boolean,\n raised: Boolean,\n raisedMd: Boolean,\n raisedIos: Boolean,\n raisedAurora: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n input,\n buttonsOnly,\n inputType,\n value,\n inputReadonly,\n min,\n max,\n step,\n id,\n style,\n name,\n inputId\n } = props;\n let inputWrapEl;\n let valueEl;\n\n if (input && !buttonsOnly) {\n let inputEl;\n {\n inputEl = _h('input', {\n ref: 'inputEl',\n domProps: {\n readOnly: inputReadonly,\n value\n },\n on: {\n input: self.onInput,\n change: self.onChange\n },\n attrs: {\n name: name,\n id: inputId,\n type: inputType,\n min: inputType === 'number' ? min : undefined,\n max: inputType === 'number' ? max : undefined,\n step: inputType === 'number' ? step : undefined\n }\n });\n }\n inputWrapEl = _h('div', {\n class: 'stepper-input-wrap'\n }, [inputEl]);\n }\n\n if (!input && !buttonsOnly) {\n valueEl = _h('div', {\n class: 'stepper-value'\n }, [value]);\n }\n\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [_h('div', {\n ref: 'minusEl',\n class: 'stepper-button-minus'\n }), inputWrapEl, valueEl, _h('div', {\n ref: 'plusEl',\n class: 'stepper-button-plus'\n })]);\n },\n\n computed: {\n classes() {\n const self = this;\n const props = self.props;\n const {\n round,\n roundIos,\n roundMd,\n roundAurora,\n fill,\n fillIos,\n fillMd,\n fillAurora,\n large,\n largeIos,\n largeMd,\n largeAurora,\n small,\n smallIos,\n smallMd,\n smallAurora,\n raised,\n raisedMd,\n raisedIos,\n raisedAurora,\n disabled\n } = props;\n return Utils.classNames(self.props.className, 'stepper', {\n disabled,\n 'stepper-round': round,\n 'stepper-round-ios': roundIos,\n 'stepper-round-md': roundMd,\n 'stepper-round-aurora': roundAurora,\n 'stepper-fill': fill,\n 'stepper-fill-ios': fillIos,\n 'stepper-fill-md': fillMd,\n 'stepper-fill-aurora': fillAurora,\n 'stepper-large': large,\n 'stepper-large-ios': largeIos,\n 'stepper-large-md': largeMd,\n 'stepper-large-aurora': largeAurora,\n 'stepper-small': small,\n 'stepper-small-ios': smallIos,\n 'stepper-small-md': smallMd,\n 'stepper-small-aurora': smallAurora,\n 'stepper-raised': raised,\n 'stepper-raised-ios': raisedIos,\n 'stepper-raised-md': raisedMd,\n 'stepper-raised-aurora': raisedAurora\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onInput', 'onMinusClick', 'onPlusClick']);\n },\n\n mounted() {\n const self = this;\n const {\n minusEl,\n plusEl\n } = self.$refs;\n\n if (minusEl) {\n minusEl.addEventListener('click', self.onMinusClick);\n }\n\n if (plusEl) {\n plusEl.addEventListener('click', self.onPlusClick);\n }\n\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const {\n min,\n max,\n value,\n step,\n formatValue,\n autorepeat,\n autorepeatDynamic,\n wraps,\n manualInputMode,\n decimalPoint,\n buttonsEndInputMode\n } = self.props;\n const el = self.$refs.el;\n if (!el) return;\n self.f7Stepper = f7.stepper.create(Utils.noUndefinedProps({\n el,\n min,\n max,\n value,\n step,\n formatValue,\n autorepeat,\n autorepeatDynamic,\n wraps,\n manualInputMode,\n decimalPoint,\n buttonsEndInputMode,\n on: {\n change(stepper, newValue) {\n self.dispatchEvent('stepper:change stepperChange', newValue);\n }\n\n }\n }));\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n minusEl,\n plusEl\n } = self.$refs;\n\n if (minusEl) {\n minusEl.removeEventListener('click', self.onMinusClick);\n }\n\n if (plusEl) {\n plusEl.removeEventListener('click', self.onPlusClick);\n }\n\n if (!self.props.init) return;\n\n if (self.f7Stepper && self.f7Stepper.destroy) {\n self.f7Stepper.destroy();\n }\n },\n\n methods: {\n increment() {\n if (!this.f7Stepper) return;\n this.f7Stepper.increment();\n },\n\n decrement() {\n if (!this.f7Stepper) return;\n this.f7Stepper.decrement();\n },\n\n setValue(newValue) {\n const self = this;\n if (self.f7Stepper && self.f7Stepper.setValue) self.f7Stepper.setValue(newValue);\n },\n\n getValue() {\n const self = this;\n\n if (self.f7Stepper && self.f7Stepper.getValue) {\n return self.f7Stepper.getValue();\n }\n\n return undefined;\n },\n\n onInput(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('input', event, stepper);\n },\n\n onChange(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('change', event, stepper);\n },\n\n onMinusClick(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('stepper:minusclick stepperMinusClick', event, stepper);\n },\n\n onPlusClick(event) {\n const stepper = this.f7Stepper;\n this.dispatchEvent('stepper:plusclick stepperPlusClick', event, stepper);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-subnavbar',\n props: Object.assign({\n id: [String, Number],\n sliding: Boolean,\n title: String,\n inner: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n inner,\n title,\n style,\n id,\n className,\n sliding\n } = props;\n const classes = Utils.classNames(className, 'subnavbar', {\n sliding\n }, Mixins.colorClasses(props));\n return _h('div', {\n class: classes,\n style: style,\n attrs: {\n id: id\n }\n }, [inner ? _h('div', {\n class: 'subnavbar-inner'\n }, [title && _h('div', {\n class: 'subnavbar-title'\n }, [title]), this.$slots['default']]) : this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swipeout-actions',\n props: Object.assign({\n id: [String, Number],\n left: Boolean,\n right: Boolean,\n side: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n left,\n right,\n side,\n className,\n id,\n style\n } = props;\n let sideComputed = side;\n\n if (!sideComputed) {\n if (left) sideComputed = 'left';\n if (right) sideComputed = 'right';\n }\n\n const classes = Utils.classNames(className, `swipeout-actions-${sideComputed}`, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swipeout-button',\n props: Object.assign({\n id: [String, Number],\n text: String,\n confirmTitle: String,\n confirmText: String,\n overswipe: Boolean,\n close: Boolean,\n delete: Boolean,\n href: String\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n overswipe,\n delete: deleteProp,\n close,\n href,\n confirmTitle,\n confirmText,\n text\n } = props;\n const classes = Utils.classNames(className, {\n 'swipeout-overswipe': overswipe,\n 'swipeout-delete': deleteProp,\n 'swipeout-close': close\n }, Mixins.colorClasses(props));\n return _h('a', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n href: href || '#',\n id: id,\n 'data-confirm': confirmText || undefined,\n 'data-confirm-title': confirmTitle || undefined\n }\n }, [this.$slots['default'] || [text]]);\n },\n\n created() {\n Utils.bindMethods(this, ['onClick']);\n },\n\n mounted() {\n this.$refs.el.addEventListener('click', this.onClick);\n },\n\n beforeDestroy() {\n this.$refs.el.removeEventListener('click', this.onClick);\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swiper-slide',\n props: {\n id: [String, Number],\n zoom: Boolean\n },\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style,\n zoom\n } = props;\n const classes = Utils.classNames(className, 'swiper-slide');\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [zoom ? _h('div', {\n class: 'swiper-zoom-container'\n }, [this.$slots['default']]) : this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-swiper',\n props: Object.assign({\n id: [String, Number],\n params: Object,\n pagination: Boolean,\n scrollbar: Boolean,\n navigation: Boolean,\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className\n } = props;\n let paginationEl;\n let scrollbarEl;\n let buttonNextEl;\n let buttonPrevEl;\n\n if (self.paginationComputed) {\n paginationEl = _h('div', {\n ref: 'paginationEl',\n class: 'swiper-pagination'\n });\n }\n\n if (self.scrollbarComputed) {\n scrollbarEl = _h('div', {\n ref: 'scrollbarEl',\n class: 'swiper-scrollbar'\n });\n }\n\n if (self.navigationComputed) {\n buttonNextEl = _h('div', {\n ref: 'nextEl',\n class: 'swiper-button-next'\n });\n buttonPrevEl = _h('div', {\n ref: 'prevEl',\n class: 'swiper-button-prev'\n });\n }\n\n const classes = Utils.classNames(className, 'swiper-container', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-wrapper'], _h('div', {\n class: 'swiper-wrapper'\n }, [this.$slots['default']]), paginationEl, scrollbarEl, buttonPrevEl, buttonNextEl, this.$slots['after-wrapper']]);\n },\n\n computed: {\n paginationComputed() {\n const self = this;\n const {\n pagination,\n params\n } = self.props;\n\n if (pagination === true || params && params.pagination && !params.pagination.el) {\n return true;\n }\n\n return false;\n },\n\n scrollbarComputed() {\n const self = this;\n const {\n scrollbar,\n params\n } = self.props;\n\n if (scrollbar === true || params && params.scrollbar && !params.scrollbar.el) {\n return true;\n }\n\n return false;\n },\n\n navigationComputed() {\n const self = this;\n const {\n navigation,\n params\n } = self.props;\n\n if (navigation === true || params && params.navigation && !params.navigation.nextEl && !params.navigation.prevEl) {\n return true;\n }\n\n return false;\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n updated() {\n const self = this;\n\n if (!self.initialUpdate) {\n self.initialUpdate = true;\n return;\n }\n\n if (self.swiper && self.swiper.update) self.swiper.update();\n },\n\n mounted() {\n const self = this;\n if (!self.props.init) return;\n self.$f7ready(f7 => {\n const newParams = {\n pagination: {},\n navigation: {},\n scrollbar: {}\n };\n const {\n params,\n pagination,\n navigation,\n scrollbar\n } = self.props;\n if (params) Utils.extend(newParams, params);\n if (pagination && !newParams.pagination.el) newParams.pagination.el = self.$refs.paginationEl;\n\n if (navigation && !newParams.navigation.nextEl && !newParams.navigation.prevEl) {\n newParams.navigation.nextEl = self.$refs.nextEl;\n newParams.navigation.prevEl = self.$refs.prevEl;\n }\n\n if (scrollbar && !newParams.scrollbar.el) newParams.scrollbar.el = self.$refs.scrollbarEl;\n self.swiper = f7.swiper.create(self.$refs.el, newParams);\n });\n },\n\n beforeDestroy() {\n const self = this;\n if (!self.props.init) return;\n if (self.swiper && self.swiper.destroy) self.swiper.destroy();\n }\n\n};","import f7 from '../utils/f7';\nimport Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-tab',\n props: Object.assign({\n id: [String, Number],\n tabActive: Boolean\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n tabContent: null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n tabActive,\n id,\n className,\n style\n } = props;\n const tabContent = self.state.tabContent;\n const classes = Utils.classNames(className, 'tab', {\n 'tab-active': tabActive\n }, Mixins.colorClasses(props));\n let TabContent;\n if (tabContent) TabContent = tabContent.component;\n {\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [tabContent ? _h(TabContent, {\n key: tabContent.id,\n props: tabContent.props\n }) : this.$slots['default']]);\n }\n },\n\n created() {\n Utils.bindMethods(this, ['onTabShow', 'onTabHide']);\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('tabRouterDidUpdate', self.routerData);\n },\n\n beforeDestroy() {\n const self = this;\n\n if (self.$f7) {\n self.$f7.off('tabShow', self.onTabShow);\n self.$f7.off('tabHide', self.onTabHide);\n }\n\n if (!self.routerData) return;\n f7.routers.tabs.splice(f7.routers.tabs.indexOf(self.routerData), 1);\n self.routerData = null;\n self.eventTargetEl = null;\n delete self.routerData;\n delete self.eventTargetEl;\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.setState({\n tabContent: null\n });\n self.$f7ready(() => {\n self.$f7.on('tabShow', self.onTabShow);\n self.$f7.on('tabHide', self.onTabHide);\n self.eventTargetEl = el;\n self.routerData = {\n el,\n component: self,\n\n setTabContent(tabContent) {\n self.setState({\n tabContent\n });\n }\n\n };\n f7.routers.tabs.push(self.routerData);\n });\n },\n\n methods: {\n show(animate) {\n if (!this.$f7) return;\n this.$f7.tab.show(this.$refs.el, animate);\n },\n\n onTabShow(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:show tabShow', el);\n },\n\n onTabHide(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('tab:hide tabHide', el);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-tabs',\n props: Object.assign({\n id: [String, Number],\n animated: Boolean,\n swipeable: Boolean,\n routable: Boolean,\n swiperParams: {\n type: Object,\n default: undefined\n }\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n animated,\n swipeable,\n id,\n style,\n className,\n routable\n } = props;\n const classes = Utils.classNames(className, Mixins.colorClasses(props));\n const wrapClasses = Utils.classNames({\n 'tabs-animated-wrap': animated,\n 'tabs-swipeable-wrap': swipeable\n });\n const tabsClasses = Utils.classNames({\n tabs: true,\n 'tabs-routable': routable\n });\n\n if (animated || swipeable) {\n return _h('div', {\n style: style,\n class: Utils.classNames(wrapClasses, classes),\n ref: 'wrapEl',\n attrs: {\n id: id\n }\n }, [_h('div', {\n class: tabsClasses\n }, [this.$slots['default']])]);\n }\n\n return _h('div', {\n style: style,\n class: Utils.classNames(tabsClasses, classes),\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n mounted() {\n const self = this;\n const {\n swipeable,\n swiperParams\n } = self.props;\n if (!swipeable || !swiperParams) return;\n const wrapEl = self.$refs.wrapEl;\n if (!wrapEl) return;\n wrapEl.f7SwiperParams = swiperParams;\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-toolbar',\n props: Object.assign({\n id: [String, Number],\n tabbar: Boolean,\n labels: Boolean,\n scrollable: Boolean,\n hidden: Boolean,\n noShadow: Boolean,\n noHairline: Boolean,\n noBorder: Boolean,\n position: {\n type: String,\n default: undefined\n },\n topMd: {\n type: Boolean,\n default: undefined\n },\n topIos: {\n type: Boolean,\n default: undefined\n },\n topAurora: {\n type: Boolean,\n default: undefined\n },\n top: {\n type: Boolean,\n default: undefined\n },\n bottomMd: {\n type: Boolean,\n default: undefined\n },\n bottomIos: {\n type: Boolean,\n default: undefined\n },\n bottomAurora: {\n type: Boolean,\n default: undefined\n },\n bottom: {\n type: Boolean,\n default: undefined\n },\n inner: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n const self = this;\n const $f7 = self.$f7;\n\n if (!$f7) {\n self.$f7ready(() => {\n self.setState({\n _theme: self.$theme\n });\n });\n }\n\n return {\n _theme: $f7 ? self.$theme : null\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n className,\n inner,\n tabbar,\n labels,\n scrollable,\n hidden,\n noShadow,\n noHairline,\n noBorder,\n topMd,\n topIos,\n topAurora,\n top,\n bottomMd,\n bottomIos,\n bottomAurora,\n bottom,\n position\n } = props;\n const theme = self.state._theme;\n const classes = Utils.classNames(className, 'toolbar', {\n tabbar,\n 'toolbar-bottom': theme && theme.md && bottomMd || theme && theme.ios && bottomIos || theme && theme.aurora && bottomAurora || bottom || position === 'bottom',\n 'toolbar-top': theme && theme.md && topMd || theme && theme.ios && topIos || theme && theme.aurora && topAurora || top || position === 'top',\n 'tabbar-labels': labels,\n 'tabbar-scrollable': scrollable,\n 'toolbar-hidden': hidden,\n 'no-shadow': noShadow,\n 'no-hairline': noHairline || noBorder\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n ref: 'el',\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['before-inner'], inner ? _h('div', {\n class: 'toolbar-inner'\n }, [this.$slots['default']]) : this.$slots['default'], this.$slots['after-inner']]);\n },\n\n created() {\n Utils.bindMethods(this, ['onHide', 'onShow']);\n },\n\n updated() {\n const self = this;\n\n if (self.props.tabbar && self.$f7) {\n self.$f7.toolbar.setHighlight(self.$refs.el);\n }\n },\n\n mounted() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el) return;\n self.$f7ready(f7 => {\n self.eventTargetEl = el;\n if (self.props.tabbar) f7.toolbar.setHighlight(el);\n f7.on('toolbarShow', self.onShow);\n f7.on('toolbarHide', self.onHide);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el\n } = self.$refs;\n if (!el || !self.$f7) return;\n const f7 = self.$f7;\n f7.off('toolbarShow', self.onShow);\n f7.off('toolbarHide', self.onHide);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onHide(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('toolbar:hide toolbarHide');\n },\n\n onShow(navbarEl) {\n if (this.eventTargetEl !== navbarEl) return;\n this.dispatchEvent('toolbar:show toolbarShow');\n },\n\n hide(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.toolbar.hide(this.$refs.el, animate);\n },\n\n show(animate) {\n const self = this;\n if (!self.$f7) return;\n self.$f7.toolbar.show(this.$refs.el, animate);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport F7Icon from './icon';\nimport __vueComponentTransformJSXProps from '../runtime-helpers/vue-component-transform-jsx-props.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number],\n toggle: {\n type: Boolean,\n default: undefined\n },\n itemToggle: Boolean,\n selectable: Boolean,\n selected: Boolean,\n opened: Boolean,\n label: String,\n loadChildren: Boolean,\n link: {\n type: [Boolean, String],\n default: undefined\n }\n }, Mixins.colorProps, {}, Mixins.linkActionsProps, {}, Mixins.linkRouterProps, {}, Mixins.linkIconProps),\n name: 'f7-treeview-item',\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n toggle,\n label,\n icon,\n iconMaterial,\n iconF7,\n iconMd,\n iconIos,\n iconAurora,\n iconSize,\n iconColor,\n link\n } = props;\n const slots = self.$slots;\n const hasChildren = slots.default && slots.default.length || slots.children && slots.children.length || slots['children-start'] && slots['children-start'].length;\n const needToggle = typeof toggle === 'undefined' ? hasChildren : toggle;\n let iconEl;\n\n if (icon || iconMaterial || iconF7 || iconMd || iconIos || iconAurora) {\n iconEl = _h(F7Icon, {\n attrs: {\n material: iconMaterial,\n f7: iconF7,\n icon: icon,\n md: iconMd,\n ios: iconIos,\n aurora: iconAurora,\n color: iconColor,\n size: iconSize\n }\n });\n }\n\n const TreeviewRootTag = link || link === '' ? 'a' : 'div';\n return _h('div', {\n ref: 'el',\n style: style,\n class: self.classes,\n attrs: {\n id: id\n }\n }, [_h(TreeviewRootTag, __vueComponentTransformJSXProps(Object.assign({\n ref: 'rootEl',\n class: self.itemRootClasses\n }, self.itemRootAttrs)), [this.$slots['root-start'], needToggle && _h('div', {\n class: 'treeview-toggle'\n }), _h('div', {\n class: 'treeview-item-content'\n }, [this.$slots['content-start'], iconEl, this.$slots['media'], _h('div', {\n class: 'treeview-item-label'\n }, [this.$slots['label-start'], label, this.$slots['label']]), this.$slots['content'], this.$slots['content-end']]), this.$slots['root'], this.$slots['root-end']]), hasChildren && _h('div', {\n class: 'treeview-item-children'\n }, [this.$slots['children-start'], this.$slots['default'], this.$slots['children']])]);\n },\n\n computed: {\n itemRootAttrs() {\n const self = this;\n const props = self.props;\n const {\n link\n } = props;\n let href = link;\n if (link === true) href = '#';\n if (link === false) href = undefined;\n return Utils.extend({\n href\n }, Mixins.linkRouterAttrs(props), Mixins.linkActionsAttrs(props));\n },\n\n itemRootClasses() {\n const self = this;\n const props = self.props;\n const {\n selectable,\n selected,\n itemToggle\n } = props;\n return Utils.classNames('treeview-item-root', {\n 'treeview-item-selectable': selectable,\n 'treeview-item-selected': selected,\n 'treeview-item-toggle': itemToggle\n }, Mixins.linkRouterClasses(props), Mixins.linkActionsClasses(props));\n },\n\n classes() {\n const self = this;\n const props = self.props;\n const {\n className,\n opened,\n loadChildren\n } = props;\n return Utils.classNames(className, 'treeview-item', {\n 'treeview-item-opened': opened,\n 'treeview-load-children': loadChildren\n }, Mixins.colorClasses(props));\n },\n\n props() {\n return __vueComponentProps(this);\n }\n\n },\n\n created() {\n Utils.bindMethods(this, ['onClick', 'onOpen', 'onClose', 'onLoadChildren']);\n },\n\n mounted() {\n const self = this;\n const {\n el,\n rootEl\n } = self.$refs;\n rootEl.addEventListener('click', self.onClick);\n if (!el) return;\n self.eventTargetEl = el;\n self.$f7ready(f7 => {\n f7.on('treeviewOpen', self.onOpen);\n f7.on('treeviewClose', self.onClose);\n f7.on('treeviewLoadChildren', self.onLoadChildren);\n });\n },\n\n beforeDestroy() {\n const self = this;\n const {\n el,\n rootEl\n } = self.$refs;\n rootEl.removeEventListener('click', self.onClick);\n if (!el || self.$f7) return;\n self.$f7.off('treeviewOpen', self.onOpen);\n self.$f7.off('treeviewClose', self.onClose);\n self.$f7.off('treeviewLoadChildren', self.onLoadChildren);\n self.eventTargetEl = null;\n delete self.eventTargetEl;\n },\n\n methods: {\n onClick(event) {\n this.dispatchEvent('click', event);\n },\n\n onOpen(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:open treeviewOpen', el);\n },\n\n onClose(el) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:close treeviewClose', el);\n },\n\n onLoadChildren(el, done) {\n if (this.eventTargetEl !== el) return;\n this.dispatchEvent('treeview:loadchildren treeviewLoadChildren', el, done);\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n props: Object.assign({\n id: [String, Number]\n }, Mixins.colorProps),\n name: 'f7-treeview',\n\n render() {\n const _h = this.$createElement;\n const props = this.props;\n const {\n className,\n id,\n style\n } = props;\n const classes = Utils.classNames(className, 'treeview', Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import f7 from '../utils/f7';\nimport Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentSetState from '../runtime-helpers/vue-component-set-state.js';\nimport __vueComponentDispatchEvent from '../runtime-helpers/vue-component-dispatch-event.js';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-view',\n props: Object.assign({\n id: [String, Number],\n tab: Boolean,\n tabActive: Boolean,\n name: String,\n router: Boolean,\n linksView: [Object, String],\n url: String,\n main: Boolean,\n stackPages: Boolean,\n xhrCache: Boolean,\n xhrCacheIgnore: Array,\n xhrCacheIgnoreGetParameters: Boolean,\n xhrCacheDuration: Number,\n preloadPreviousPage: Boolean,\n allowDuplicateUrls: Boolean,\n reloadPages: Boolean,\n reloadDetail: Boolean,\n masterDetailResizable: Boolean,\n masterDetailBreakpoint: Number,\n removeElements: Boolean,\n removeElementsWithTimeout: Boolean,\n removeElementsTimeout: Number,\n restoreScrollTopOnBack: Boolean,\n loadInitialPage: Boolean,\n iosSwipeBack: Boolean,\n iosSwipeBackAnimateShadow: Boolean,\n iosSwipeBackAnimateOpacity: Boolean,\n iosSwipeBackActiveArea: Number,\n iosSwipeBackThreshold: Number,\n mdSwipeBack: Boolean,\n mdSwipeBackAnimateShadow: Boolean,\n mdSwipeBackAnimateOpacity: Boolean,\n mdSwipeBackActiveArea: Number,\n mdSwipeBackThreshold: Number,\n auroraSwipeBack: Boolean,\n auroraSwipeBackAnimateShadow: Boolean,\n auroraSwipeBackAnimateOpacity: Boolean,\n auroraSwipeBackActiveArea: Number,\n auroraSwipeBackThreshold: Number,\n pushState: Boolean,\n pushStateRoot: String,\n pushStateAnimate: Boolean,\n pushStateAnimateOnLoad: Boolean,\n pushStateSeparator: String,\n pushStateOnLoad: Boolean,\n animate: Boolean,\n transition: String,\n iosDynamicNavbar: Boolean,\n iosAnimateNavbarBackIcon: Boolean,\n materialPageLoadDelay: Number,\n passRouteQueryToRequest: Boolean,\n passRouteParamsToRequest: Boolean,\n routes: Array,\n routesAdd: Array,\n routesBeforeEnter: [Function, Array],\n routesBeforeLeave: [Function, Array],\n init: {\n type: Boolean,\n default: true\n }\n }, Mixins.colorProps),\n\n data() {\n const props = __vueComponentProps(this);\n\n const state = (() => {\n return {\n pages: []\n };\n })();\n\n return {\n state\n };\n },\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n id,\n style,\n tab,\n main,\n tabActive,\n className\n } = props;\n const classes = Utils.classNames(className, 'view', {\n 'view-main': main,\n 'tab-active': tabActive,\n tab\n }, Mixins.colorClasses(props));\n return _h('div', {\n ref: 'el',\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default'], self.state.pages.map(page => {\n const PageComponent = page.component;\n {\n return _h(PageComponent, {\n key: page.id,\n props: page.props\n });\n }\n })]);\n },\n\n created() {\n const self = this;\n Utils.bindMethods(self, ['onSwipeBackMove', 'onSwipeBackBeforeChange', 'onSwipeBackAfterChange', 'onSwipeBackBeforeReset', 'onSwipeBackAfterReset', 'onTabShow', 'onTabHide', 'onViewInit']);\n },\n\n mounted() {\n const self = this;\n const el = self.$refs.el;\n self.$f7ready(f7Instance => {\n f7Instance.on('tabShow', self.onTabShow);\n f7Instance.on('tabHide', self.onTabHide);\n self.routerData = {\n el,\n component: self,\n pages: self.state.pages,\n instance: null,\n\n setPages(pages) {\n self.setState({\n pages\n });\n }\n\n };\n f7.routers.views.push(self.routerData);\n if (!self.props.init) return;\n self.routerData.instance = f7Instance.views.create(el, Object.assign({\n on: {\n init: self.onViewInit\n }\n }, Utils.noUndefinedProps(self.$options.propsData || {})));\n self.f7View = self.routerData.instance;\n self.f7View.on('resize', self.onResize);\n self.f7View.on('swipebackMove', self.onSwipeBackMove);\n self.f7View.on('swipebackBeforeChange', self.onSwipeBackBeforeChange);\n self.f7View.on('swipebackAfterChange', self.onSwipeBackAfterChange);\n self.f7View.on('swipebackBeforeReset', self.onSwipeBackBeforeReset);\n self.f7View.on('swipebackAfterReset', self.onSwipeBackAfterReset);\n });\n },\n\n beforeDestroy() {\n const self = this;\n\n if (f7.instance) {\n f7.instance.off('tabShow', self.onTabShow);\n f7.instance.off('tabHide', self.onTabHide);\n }\n\n if (self.f7View) {\n self.f7View.off('resize', self.onResize);\n self.f7View.off('swipebackMove', self.onSwipeBackMove);\n self.f7View.off('swipebackBeforeChange', self.onSwipeBackBeforeChange);\n self.f7View.off('swipebackAfterChange', self.onSwipeBackAfterChange);\n self.f7View.off('swipebackBeforeReset', self.onSwipeBackBeforeReset);\n self.f7View.off('swipebackAfterReset', self.onSwipeBackAfterReset);\n if (self.f7View.destroy) self.f7View.destroy();\n }\n\n f7.routers.views.splice(f7.routers.views.indexOf(self.routerData), 1);\n self.routerData = null;\n delete self.routerData;\n },\n\n updated() {\n const self = this;\n if (!self.routerData) return;\n f7.events.emit('viewRouterDidUpdate', self.routerData);\n },\n\n methods: {\n onViewInit(view) {\n const self = this;\n self.dispatchEvent('view:init viewInit', view);\n\n if (!self.props.init) {\n self.routerData.instance = view;\n self.f7View = self.routerData.instance;\n }\n },\n\n onResize(view, width) {\n this.dispatchEvent('view:resize viewResize', width);\n },\n\n onSwipeBackMove(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:move swipeBackMove', swipeBackData);\n },\n\n onSwipeBackBeforeChange(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:beforechange swipeBackBeforeChange', swipeBackData);\n },\n\n onSwipeBackAfterChange(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:afterchange swipeBackAfterChange', swipeBackData);\n },\n\n onSwipeBackBeforeReset(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:beforereset swipeBackBeforeReset', swipeBackData);\n },\n\n onSwipeBackAfterReset(data) {\n const swipeBackData = data;\n this.dispatchEvent('swipeback:afterreset swipeBackAfterReset', swipeBackData);\n },\n\n onTabShow(el) {\n if (el === this.$refs.el) {\n this.dispatchEvent('tab:show tabShow', el);\n }\n },\n\n onTabHide(el) {\n if (el === this.$refs.el) {\n this.dispatchEvent('tab:hide tabHide', el);\n }\n },\n\n dispatchEvent(events, ...args) {\n __vueComponentDispatchEvent(this, events, ...args);\n },\n\n setState(updater, callback) {\n __vueComponentSetState(this, updater, callback);\n }\n\n },\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","import Utils from '../utils/utils';\nimport Mixins from '../utils/mixins';\nimport __vueComponentProps from '../runtime-helpers/vue-component-props.js';\nexport default {\n name: 'f7-views',\n props: Object.assign({\n id: [String, Number],\n tabs: Boolean\n }, Mixins.colorProps),\n\n render() {\n const _h = this.$createElement;\n const self = this;\n const props = self.props;\n const {\n className,\n id,\n style,\n tabs\n } = props;\n const classes = Utils.classNames(className, 'views', {\n tabs\n }, Mixins.colorClasses(props));\n return _h('div', {\n style: style,\n class: classes,\n attrs: {\n id: id\n }\n }, [this.$slots['default']]);\n },\n\n computed: {\n props() {\n return __vueComponentProps(this);\n }\n\n }\n};","/* eslint no-underscore-dangle: \"off\" */\nimport f7 from './f7';\nimport Utils from './utils';\n\nlet routerComponentIdCounter = 0;\n\nexport default {\n proto: {\n pageComponentLoader(routerEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n const el = routerEl;\n let viewRouter;\n f7.routers.views.forEach((data) => {\n if (data.el && data.el === routerEl) {\n viewRouter = data;\n }\n });\n\n if (!viewRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const pageData = {\n component,\n id,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n if (viewRouter.component) {\n viewRouter.component.$f7router = router;\n viewRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== viewRouter || resolved) return;\n f7.events.off('viewRouterDidUpdate', onDidUpdate);\n\n const pageEl = el.children[el.children.length - 1];\n pageData.el = pageEl;\n\n resolve(pageEl);\n resolved = true;\n }\n\n f7.events.on('viewRouterDidUpdate', onDidUpdate);\n\n viewRouter.pages.push(pageData);\n viewRouter.setPages(viewRouter.pages);\n },\n removePage($pageEl) {\n if (!$pageEl) return;\n const router = this;\n let f7Page;\n if ('length' in $pageEl && $pageEl[0]) f7Page = $pageEl[0].f7Page;\n else f7Page = $pageEl.f7Page;\n if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {\n router.app.$($pageEl).remove();\n return;\n }\n let viewRouter;\n f7.routers.views.forEach((data) => {\n if (data.el && data.el === router.el) {\n viewRouter = data;\n }\n });\n\n let pageEl;\n if ('length' in $pageEl) {\n // Dom7\n if ($pageEl.length === 0) return;\n pageEl = $pageEl[0];\n } else {\n pageEl = $pageEl;\n }\n if (!pageEl) return;\n\n let pageComponentFound;\n viewRouter.pages.forEach((page, index) => {\n if (page.el === pageEl) {\n pageComponentFound = true;\n viewRouter.pages.splice(index, 1);\n viewRouter.setPages(viewRouter.pages);\n }\n });\n if (!pageComponentFound) {\n pageEl.parentNode.removeChild(pageEl);\n }\n },\n tabComponentLoader(tabEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n if (!tabEl) reject();\n\n let tabRouter;\n f7.routers.tabs.forEach((tabData) => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n if (!tabRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const tabContent = {\n id,\n component,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n\n if (tabRouter.component) {\n tabRouter.component.$f7router = router;\n tabRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate(componentRouterData) {\n if (componentRouterData !== tabRouter || resolved) return;\n f7.events.off('tabRouterDidUpdate', onDidUpdate);\n\n const tabContentEl = tabEl.children[0];\n resolve(tabContentEl);\n\n resolved = true;\n }\n\n f7.events.on('tabRouterDidUpdate', onDidUpdate);\n\n tabRouter.setTabContent(tabContent);\n },\n removeTabContent(tabEl) {\n if (!tabEl) return;\n\n let tabRouter;\n f7.routers.tabs.forEach((tabData) => {\n if (tabData.el && tabData.el === tabEl) {\n tabRouter = tabData;\n }\n });\n const hasComponent = tabRouter && tabRouter.component;\n if (!tabRouter || !hasComponent) {\n tabEl.innerHTML = ''; // eslint-disable-line\n return;\n }\n tabRouter.setTabContent(null);\n },\n modalComponentLoader(rootEl, component, componentUrl, options, resolve, reject) {\n const router = this;\n const modalsRouter = f7.routers.modals;\n\n if (!modalsRouter) {\n reject();\n return;\n }\n\n const id = `${Utils.now()}_${(routerComponentIdCounter += 1)}`;\n const modalData = {\n component,\n id,\n props: Utils.extend(\n {\n f7route: options.route,\n $f7route: options.route,\n f7router: router,\n $f7router: router,\n },\n options.route.params,\n options.props || {},\n ),\n };\n if (modalsRouter.component) {\n modalsRouter.component.$f7router = router;\n modalsRouter.component.$f7route = options.route;\n }\n\n let resolved;\n function onDidUpdate() {\n if (resolved) return;\n f7.events.off('modalsRouterDidUpdate', onDidUpdate);\n\n const modalEl = modalsRouter.el.children[modalsRouter.el.children.length - 1];\n modalData.el = modalEl;\n\n resolve(modalEl);\n resolved = true;\n }\n\n f7.events.on('modalsRouterDidUpdate', onDidUpdate);\n\n modalsRouter.modals.push(modalData);\n modalsRouter.setModals(modalsRouter.modals);\n },\n removeModal(modalEl) {\n const modalsRouter = f7.routers.modals;\n if (!modalsRouter) return;\n\n let modalDataToRemove;\n modalsRouter.modals.forEach((modalData) => {\n if (modalData.el === modalEl) modalDataToRemove = modalData;\n });\n\n modalsRouter.modals.splice(modalsRouter.modals.indexOf(modalDataToRemove), 1);\n modalsRouter.setModals(modalsRouter.modals);\n },\n },\n};\n","/**\n * Framework7 Vue 5.7.0\n * Build full featured iOS & Android apps using Framework7 & Vue\n * https://framework7.io/vue/\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 25, 2020\n */\nimport Vue from 'vue';\nimport f7AccordionContent from './components/accordion-content';\nimport f7AccordionItem from './components/accordion-item';\nimport f7AccordionToggle from './components/accordion-toggle';\nimport f7Accordion from './components/accordion';\nimport f7ActionsButton from './components/actions-button';\nimport f7ActionsGroup from './components/actions-group';\nimport f7ActionsLabel from './components/actions-label';\nimport f7Actions from './components/actions';\nimport f7App from './components/app';\nimport f7Appbar from './components/appbar';\nimport f7Badge from './components/badge';\nimport f7BlockFooter from './components/block-footer';\nimport f7BlockHeader from './components/block-header';\nimport f7BlockTitle from './components/block-title';\nimport f7Block from './components/block';\nimport f7Button from './components/button';\nimport f7CardContent from './components/card-content';\nimport f7CardFooter from './components/card-footer';\nimport f7CardHeader from './components/card-header';\nimport f7Card from './components/card';\nimport f7Checkbox from './components/checkbox';\nimport f7Chip from './components/chip';\nimport f7Col from './components/col';\nimport f7FabBackdrop from './components/fab-backdrop';\nimport f7FabButton from './components/fab-button';\nimport f7FabButtons from './components/fab-buttons';\nimport f7Fab from './components/fab';\nimport f7Gauge from './components/gauge';\nimport f7Icon from './components/icon';\nimport f7Input from './components/input';\nimport f7Link from './components/link';\nimport f7ListButton from './components/list-button';\nimport f7ListGroup from './components/list-group';\nimport f7ListIndex from './components/list-index';\nimport f7ListInput from './components/list-input';\nimport f7ListItemCell from './components/list-item-cell';\nimport f7ListItemContent from './components/list-item-content';\nimport f7ListItemRow from './components/list-item-row';\nimport f7ListItem from './components/list-item';\nimport f7List from './components/list';\nimport f7LoginScreenTitle from './components/login-screen-title';\nimport f7LoginScreen from './components/login-screen';\nimport f7MenuDropdownItem from './components/menu-dropdown-item';\nimport f7MenuDropdown from './components/menu-dropdown';\nimport f7MenuItem from './components/menu-item';\nimport f7Menu from './components/menu';\nimport f7Message from './components/message';\nimport f7MessagebarAttachment from './components/messagebar-attachment';\nimport f7MessagebarAttachments from './components/messagebar-attachments';\nimport f7MessagebarSheetImage from './components/messagebar-sheet-image';\nimport f7MessagebarSheetItem from './components/messagebar-sheet-item';\nimport f7MessagebarSheet from './components/messagebar-sheet';\nimport f7Messagebar from './components/messagebar';\nimport f7MessagesTitle from './components/messages-title';\nimport f7Messages from './components/messages';\nimport f7NavLeft from './components/nav-left';\nimport f7NavRight from './components/nav-right';\nimport f7NavTitleLarge from './components/nav-title-large';\nimport f7NavTitle from './components/nav-title';\nimport f7Navbar from './components/navbar';\nimport f7PageContent from './components/page-content';\nimport f7Page from './components/page';\nimport f7Panel from './components/panel';\nimport f7PhotoBrowser from './components/photo-browser';\nimport f7Popover from './components/popover';\nimport f7Popup from './components/popup';\nimport f7Preloader from './components/preloader';\nimport f7Progressbar from './components/progressbar';\nimport f7Radio from './components/radio';\nimport f7Range from './components/range';\nimport f7RoutableModals from './components/routable-modals';\nimport f7Row from './components/row';\nimport f7Searchbar from './components/searchbar';\nimport f7Segmented from './components/segmented';\nimport f7Sheet from './components/sheet';\nimport f7SkeletonBlock from './components/skeleton-block';\nimport f7SkeletonText from './components/skeleton-text';\nimport f7Stepper from './components/stepper';\nimport f7Subnavbar from './components/subnavbar';\nimport f7SwipeoutActions from './components/swipeout-actions';\nimport f7SwipeoutButton from './components/swipeout-button';\nimport f7SwiperSlide from './components/swiper-slide';\nimport f7Swiper from './components/swiper';\nimport f7Tab from './components/tab';\nimport f7Tabs from './components/tabs';\nimport f7TextEditor from './components/text-editor';\nimport f7Toggle from './components/toggle';\nimport f7Toolbar from './components/toolbar';\nimport f7TreeviewItem from './components/treeview-item';\nimport f7Treeview from './components/treeview';\nimport f7View from './components/view';\nimport f7Views from './components/views';\n\n/* eslint no-underscore-dangle: \"off\" */\nimport componentsRouter from './utils/components-router';\nimport f7, { f7Instance } from './utils/f7';\n\nfunction f7ready(callback) {\n f7.ready(callback);\n}\n\nconst f7Theme = {};\n\nconst Plugin = {\n name: 'phenomePlugin',\n installed: false,\n install(params = {}) {\n if (Plugin.installed) return;\n Plugin.installed = true;\n\n const Framework7 = this;\n f7.Framework7 = Framework7;\n f7.events = new Framework7.Events();\n\n // eslint-disable-next-line\n const Extend = params.Vue || Vue;\n\n Vue.component('f7-accordion-content', f7AccordionContent);\n Vue.component('f7-accordion-item', f7AccordionItem);\n Vue.component('f7-accordion-toggle', f7AccordionToggle);\n Vue.component('f7-accordion', f7Accordion);\n Vue.component('f7-actions-button', f7ActionsButton);\n Vue.component('f7-actions-group', f7ActionsGroup);\n Vue.component('f7-actions-label', f7ActionsLabel);\n Vue.component('f7-actions', f7Actions);\n Vue.component('f7-app', f7App);\n Vue.component('f7-appbar', f7Appbar);\n Vue.component('f7-badge', f7Badge);\n Vue.component('f7-block-footer', f7BlockFooter);\n Vue.component('f7-block-header', f7BlockHeader);\n Vue.component('f7-block-title', f7BlockTitle);\n Vue.component('f7-block', f7Block);\n Vue.component('f7-button', f7Button);\n Vue.component('f7-card-content', f7CardContent);\n Vue.component('f7-card-footer', f7CardFooter);\n Vue.component('f7-card-header', f7CardHeader);\n Vue.component('f7-card', f7Card);\n Vue.component('f7-checkbox', f7Checkbox);\n Vue.component('f7-chip', f7Chip);\n Vue.component('f7-col', f7Col);\n Vue.component('f7-fab-backdrop', f7FabBackdrop);\n Vue.component('f7-fab-button', f7FabButton);\n Vue.component('f7-fab-buttons', f7FabButtons);\n Vue.component('f7-fab', f7Fab);\n Vue.component('f7-gauge', f7Gauge);\n Vue.component('f7-icon', f7Icon);\n Vue.component('f7-input', f7Input);\n Vue.component('f7-link', f7Link);\n Vue.component('f7-list-button', f7ListButton);\n Vue.component('f7-list-group', f7ListGroup);\n Vue.component('f7-list-index', f7ListIndex);\n Vue.component('f7-list-input', f7ListInput);\n Vue.component('f7-list-item-cell', f7ListItemCell);\n Vue.component('f7-list-item-content', f7ListItemContent);\n Vue.component('f7-list-item-row', f7ListItemRow);\n Vue.component('f7-list-item', f7ListItem);\n Vue.component('f7-list', f7List);\n Vue.component('f7-login-screen-title', f7LoginScreenTitle);\n Vue.component('f7-login-screen', f7LoginScreen);\n Vue.component('f7-menu-dropdown-item', f7MenuDropdownItem);\n Vue.component('f7-menu-dropdown', f7MenuDropdown);\n Vue.component('f7-menu-item', f7MenuItem);\n Vue.component('f7-menu', f7Menu);\n Vue.component('f7-message', f7Message);\n Vue.component('f7-messagebar-attachment', f7MessagebarAttachment);\n Vue.component('f7-messagebar-attachments', f7MessagebarAttachments);\n Vue.component('f7-messagebar-sheet-image', f7MessagebarSheetImage);\n Vue.component('f7-messagebar-sheet-item', f7MessagebarSheetItem);\n Vue.component('f7-messagebar-sheet', f7MessagebarSheet);\n Vue.component('f7-messagebar', f7Messagebar);\n Vue.component('f7-messages-title', f7MessagesTitle);\n Vue.component('f7-messages', f7Messages);\n Vue.component('f7-nav-left', f7NavLeft);\n Vue.component('f7-nav-right', f7NavRight);\n Vue.component('f7-nav-title-large', f7NavTitleLarge);\n Vue.component('f7-nav-title', f7NavTitle);\n Vue.component('f7-navbar', f7Navbar);\n Vue.component('f7-page-content', f7PageContent);\n Vue.component('f7-page', f7Page);\n Vue.component('f7-panel', f7Panel);\n Vue.component('f7-photo-browser', f7PhotoBrowser);\n Vue.component('f7-popover', f7Popover);\n Vue.component('f7-popup', f7Popup);\n Vue.component('f7-preloader', f7Preloader);\n Vue.component('f7-progressbar', f7Progressbar);\n Vue.component('f7-radio', f7Radio);\n Vue.component('f7-range', f7Range);\n Vue.component('f7-routable-modals', f7RoutableModals);\n Vue.component('f7-row', f7Row);\n Vue.component('f7-searchbar', f7Searchbar);\n Vue.component('f7-segmented', f7Segmented);\n Vue.component('f7-sheet', f7Sheet);\n Vue.component('f7-skeleton-block', f7SkeletonBlock);\n Vue.component('f7-skeleton-text', f7SkeletonText);\n Vue.component('f7-stepper', f7Stepper);\n Vue.component('f7-subnavbar', f7Subnavbar);\n Vue.component('f7-swipeout-actions', f7SwipeoutActions);\n Vue.component('f7-swipeout-button', f7SwipeoutButton);\n Vue.component('f7-swiper-slide', f7SwiperSlide);\n Vue.component('f7-swiper', f7Swiper);\n Vue.component('f7-tab', f7Tab);\n Vue.component('f7-tabs', f7Tabs);\n Vue.component('f7-text-editor', f7TextEditor);\n Vue.component('f7-toggle', f7Toggle);\n Vue.component('f7-toolbar', f7Toolbar);\n Vue.component('f7-treeview-item', f7TreeviewItem);\n Vue.component('f7-treeview', f7Treeview);\n Vue.component('f7-view', f7View);\n Vue.component('f7-views', f7Views);\n\n // DEFINE_INSTANCE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$f7', {\n get() {\n return f7.instance;\n },\n });\n // DEFINE_INSTANCE_PROTOS_END\n\n const { theme } = params;\n if (theme === 'md') f7Theme.md = true;\n if (theme === 'ios') f7Theme.ios = true;\n if (theme === 'aurora') f7Theme.aurora = true;\n if (!theme || theme === 'auto') {\n f7Theme.ios = !!Framework7.device.ios;\n f7Theme.aurora = Framework7.device.desktop && Framework7.device.electron;\n f7Theme.md = !f7Theme.ios && !f7Theme.aurora;\n }\n f7.ready(() => {\n f7Theme.ios = f7.instance.theme === 'ios';\n f7Theme.md = f7.instance.theme === 'md';\n f7Theme.aurora = f7.instance.theme === 'aurora';\n });\n\n // DEFINE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$theme', {\n get() {\n return {\n ios: f7.instance ? f7.instance.theme === 'ios' : f7Theme.ios,\n md: f7.instance ? f7.instance.theme === 'md' : f7Theme.md,\n aurora: f7.instance ? f7.instance.theme === 'aurora' : f7Theme.aurora,\n };\n },\n });\n\n Extend.prototype.Dom7 = Framework7.$;\n Extend.prototype.$$ = Framework7.$;\n Extend.prototype.$device = Framework7.device;\n Extend.prototype.$request = Framework7.request;\n Extend.prototype.$utils = Framework7.utils;\n Extend.prototype.$f7ready = f7ready;\n\n Object.defineProperty(Extend.prototype, '$f7route', {\n get() {\n const self = this;\n if (self.props && self.props.f7route) return self.props.f7route;\n if (self.f7route) return self.f7route;\n if (self._f7route) return self._f7route;\n\n let route;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n route = self.$vnode.data.props.f7route;\n }\n let parent = self;\n while (parent && !route) {\n if (parent._f7route) route = parent._f7route;\n parent = parent.$parent;\n }\n }\n return route;\n },\n set(value) {\n const self = this;\n self._f7route = value;\n },\n });\n Object.defineProperty(Extend.prototype, '$f7router', {\n get() {\n const self = this;\n if (self.props && self.props.f7router) return self.props.f7router;\n if (self.f7router) return self.f7router;\n if (self._f7router) return self._f7router;\n\n let router;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n router = self.$vnode.data.props.f7router;\n }\n let parent = self;\n while (parent && !router) {\n if (parent._f7router) router = parent._f7router;\n else if (parent.f7View) {\n router = parent.f7View.router;\n } else if (parent.$refs && parent.$refs.el && parent.$refs.el.f7View) {\n router = parent.$refs.el.f7View.router;\n }\n parent = parent.$parent;\n }\n }\n return router;\n },\n set(value) {\n const self = this;\n self._f7router = value;\n },\n });\n // DEFINE_PROTOS_END\n\n // Extend F7 Router\n Framework7.Router.use(componentsRouter);\n },\n};\n\nexport { f7ready, f7Instance as f7, f7Theme as theme };\nexport default Plugin;\n","var cordovaApp = {\n f7: null,\n /*\n This method hides splashscreen after 2 seconds\n */\n handleSplashscreen: function() {\n var f7 = cordovaApp.f7;\n if (!window.navigator.splashscreen || f7.device.electron) return;\n setTimeout(() => {\n window.navigator.splashscreen.hide();\n }, 2000);\n },\n /*\n This method prevents back button tap to exit from app on android.\n And allows to exit app on backbutton double tap\n */\n handleAndroidBackButton: function () {\n var f7 = cordovaApp.f7;\n if (f7.device.electron) return;\n cordovaApp.backButtonTimestamp = new Date().getTime();\n document.addEventListener('backbutton', function (e) {\n if (new Date().getTime() - cordovaApp.backButtonTimestamp < 250) {\n cordovaApp.backButtonTimestamp = new Date().getTime();\n if (window.navigator.app && window.navigator.app.exitApp) {\n window.navigator.app.exitApp();\n }\n return true;\n }\n cordovaApp.backButtonTimestamp = new Date().getTime();\n e.preventDefault();\n return false;\n }, false);\n },\n /*\n This method does the following:\n - provides cross-platform view \"shrinking\" on keyboard open/close\n - hides keyboard accessory bar for all inputs except where it required\n */\n handleKeyboard: function () {\n var f7 = cordovaApp.f7;\n if (!window.Keyboard || !window.Keyboard.shrinkView || f7.device.electron) return;\n var $ = f7.$;\n window.Keyboard.shrinkView(false);\n window.Keyboard.disableScrollingInShrinkView(true);\n window.Keyboard.hideFormAccessoryBar(true);\n window.addEventListener('keyboardWillShow', () => {\n f7.input.scrollIntoView(document.activeElement, 0, true, true);\n });\n window.addEventListener('keyboardDidShow', () => {\n f7.input.scrollIntoView(document.activeElement, 0, true, true);\n });\n window.addEventListener('keyboardDidHide', () => {\n if (document.activeElement && $(document.activeElement).parents('.messagebar').length) {\n return;\n }\n window.Keyboard.hideFormAccessoryBar(false);\n });\n window.addEventListener('keyboardHeightWillChange', (event) => {\n var keyboardHeight = event.keyboardHeight;\n if (keyboardHeight > 0) {\n // Keyboard is going to be opened\n document.body.style.height = `calc(100% - ${keyboardHeight}px)`;\n $('html').addClass('device-with-keyboard');\n } else {\n // Keyboard is going to be closed\n document.body.style.height = '';\n $('html').removeClass('device-with-keyboard');\n }\n\n });\n $(document).on('touchstart', 'input, textarea, select', function (e) {\n var nodeName = e.target.nodeName.toLowerCase();\n var type = e.target.type;\n var showForTypes = ['datetime-local', 'time', 'date', 'datetime'];\n if (nodeName === 'select' || showForTypes.indexOf(type) >= 0) {\n window.Keyboard.hideFormAccessoryBar(false);\n } else {\n window.Keyboard.hideFormAccessoryBar(true);\n }\n }, true);\n },\n init: function (f7) {\n // Save f7 instance\n cordovaApp.f7 = f7;\n\n // Handle Android back button\n cordovaApp.handleAndroidBackButton();\n\n // Handle Statusbar\n cordovaApp.handleSplashscreen();\n\n // Handle Keyboard\n cordovaApp.handleKeyboard();\n },\n};\nexport default cordovaApp;\n","<template>\n <f7-page name=\"home\" @page:beforein=\"initHome\">\n <!-- Top Navbar -->\n <f7-navbar :sliding=\"false\" large>\n <f7-nav-left>\n <f7-link\n icon-ios=\"f7:menu\"\n icon-aurora=\"f7:menu\"\n icon-md=\"material:menu\"\n panel-open=\"left\"\n ></f7-link>\n </f7-nav-left>\n\n <f7-nav-title sliding right>Penpal America</f7-nav-title>\n <f7-nav-right>\n <f7-icon f7=\"bell\" slot=\"right\">\n <f7-badge color=\"red\" v-if=\"total_message > 0\">{{\n total_message\n }}</f7-badge>\n </f7-icon>\n <f7-link popover-open=\".popover-menu\" slot=\"right\">\n <i class=\"f7-icons\">ellipsis_vertical</i>\n </f7-link>\n </f7-nav-right>\n <f7-nav-title-large sliding>Penpal America</f7-nav-title-large>\n <f7-subnavbar :inner=\"false\">\n <f7-searchbar\n search-container=\".search-list\"\n search-in=\".item-title\"\n :disable-button=\"!$theme.aurora\"\n ></f7-searchbar>\n </f7-subnavbar>\n </f7-navbar>\n <f7-list class=\"searchbar-not-found\">\n <f7-list-item title=\"Nothing found\"></f7-list-item>\n </f7-list>\n <f7-list class=\"search-list searchbar-found\" media-list>\n <f7-list-item\n v-for=\"(frd, index) in friends\"\n :key=\"index\"\n :title=\"frd.name\"\n :text=\"frd.latest_message\"\n @click=\"gotoChat(frd)\"\n >\n <f7-badge color=\"red\" slot=\"after-title\" v-if=\"frd.message_count > 0\">{{\n frd.message_count\n }}</f7-badge>\n\n <img class=\"small-avatar\" slot=\"media\" :src=\"frd.photo_url\" />\n <span slot=\"footer\" v-if=\"frd.userStatus == 'online'\">\n <font color=\"green\">online</font>\n </span>\n <span slot=\"footer\" v-else>\n <font color=\"grey\">offline</font>\n </span>\n <span slot=\"subtitle\" v-if=\"frd.location\">{{ frd.location }}</span>\n <span slot=\"after-title\" v-if=\"frd.userType == 2 || frd.userType == 3\"\n >Moderator</span\n >\n </f7-list-item>\n </f7-list>\n <f7-popover class=\"popover-menu\">\n <f7-list>\n <f7-list-item\n link=\"#\"\n popup-open=\".demo-popup-user\"\n popover-close\n title=\"Profile\"\n ></f7-list-item>\n <f7-list-item\n link=\"/editprofile/\"\n popover-close\n title=\"Settings\"\n ></f7-list-item>\n\n <f7-list-item\n link=\"/postfriends/\"\n popover-close\n title=\"Post Messages\"\n ></f7-list-item>\n <f7-list-item\n link=\"/usernotifications/\"\n popover-close\n title=\"Notifications\"\n ></f7-list-item>\n <f7-list-item\n @click=\"sendBroadCast()\"\n popover-close\n title=\"Send Broadcast Message\"\n ></f7-list-item>\n </f7-list>\n </f7-popover>\n\n <f7-popup class=\"demo-popup-user\" backdrop:false>\n <f7-page>\n <f7-navbar\n :title=\"this.user_details.name\"\n :subtitle=\"this.user_details.location\"\n >\n <div slot=\"default\">\n <span :v-if=\"this.user_details.birthDate\">{{\n moment(this.user_details.birthDate, \"YYYYMMDD\").fromNow(true)\n }}</span>\n </div>\n <f7-nav-right>\n <f7-link popup-close>Close</f7-link>\n </f7-nav-right>\n </f7-navbar>\n <f7-block>\n <div class=\"wrapper\">\n <img class=\"image--cover1\" :src=\"this.user_details.photo_url\" />\n </div>\n <div class=\"wrapper\">\n <p>\n <b>Profile Message</b>\n <br />\n {{ this.user_details.profileMessage }}\n </p>\n </div>\n <div class=\"wrapper\">\n <p>\n <b>Your Email</b>\n <br />\n {{ this.user_details.email }} --> Only you see this\n </p>\n </div>\n <div class=\"wrapper\">\n <p>\n <b>Your Phone Number</b>\n <br />\n {{ this.user_details.phonenumber }} --> Only you see this\n </p>\n </div>\n <br />\n <br />\n </f7-block>\n </f7-page>\n </f7-popup>\n </f7-page>\n</template>\n\n\n<script>\nimport firebase from \"firebase\";\nvar numeral = require(\"numeral\");\n\nexport default {\n data() {\n return {\n //user_details: null\n myAppVersion: 2,\n };\n },\n\n methods: {\n sendBroadCast() {\n // console.log(\"BroadCast Message\");\n\n this.$f7.popover.close();\n var dialog = this.$f7.dialog\n .create({\n title: \"Send Broadcast Message\",\n text: \"\",\n content:\n '<div class=\"dialog-input-field item-input\"><div class=\"item-input-wrap\"><input class=\"dialog-input\" type=\"text\" placeholder=\"Enter Title\" required maxlength=\"50\"> <div class=\"item-input-wrap\"><input class=\"dialog-input body\" type=\"textarea\" placeholder=\"Enter Message\" resizable required maxlength=\"200\"></div></div></div>',\n\n buttons: [{ text: \"Cancel\", close: true }, { text: \"Send\" }],\n onClick: (dialog, index) => {\n //console.log(\"nosa\");\n // console.log(dialog.$el.find(\".body\").val());\n var title_field = dialog.$el.find(\".dialog-input\").val().trim();\n\n var body_field = dialog.$el.find(\".body\").val().trim();\n if (title_field != \"\" && body_field != \"\") {\n var payload = {};\n payload.title = title_field;\n payload.message_details = body_field;\n this.$store.dispatch(\"pushNotifications\", payload);\n\n var payloadMessage = {\n group_name: this.chat_group_name,\n message:\n \"Broadcast: Title: \" +\n title_field +\n \" Message: \" +\n body_field,\n img: null,\n };\n //this.$store.dispatch(\"sendGroupMessage\", payloadMessage);\n this.$f7.dialog.close();\n } else {\n //console.log(\"response\", response);\n if (index == 1) {\n this.$store.commit(\"setAlertMessage\", \"Fields cannot be empty\");\n }\n }\n },\n on: {\n open: function () {\n //console.log(\"OPEN\");\n },\n },\n })\n .open();\n },\n async checkInternet() {\n // console.log(\"home\");\n if (window.hasOwnProperty(\"cordova\")) {\n // console.log(\"home side 1\");\n let network_status = await this.$store.dispatch(\"checkConnection2\");\n if (network_status == \"offline\") {\n //console.log(\"home inside 2\");\n this.$store.commit(\n \"setAlertMessage\",\n \"It seems you are offline. Kindly check internet connection to continue...\"\n );\n }\n }\n },\n formatNumber(value) {\n return numeral(value).format(\"0,0.00\"); // displaying other groupings/separators is possible, look at the docs\n },\n logoutApp() {\n const app = this.$f7;\n this.$store.dispatch(\"signOut\");\n this.$f7.popover.close();\n app.panel.close();\n },\n\n gotoChat(frd) {\n this.$store.dispatch(\"getMyFriendsAI\");\n var frd_string = JSON.stringify(frd);\n //console.log(\"Nosa I am here \" + frd_string);\n this.$f7router.navigate(\"/chat/\" + encodeURIComponent(frd_string));\n //console.log(\"Nosa I am here \" + frd_string);\n },\n initHome() {\n this.$store.commit(\"setShowTabs\", true);\n //this.$store.dispatch(\"getMyFriendsAI\");\n // console.log(\"testtest\");\n },\n },\n\n computed: {\n app_version() {\n return this.$store.getters.app_version;\n },\n app_db_version() {\n return this.$store.getters.app_db_version;\n },\n user_payout: {\n get: function () {\n return this.formatNumber(this.$store.getters.user_payout);\n },\n set: function (newValue) {\n this.$store.commit(\"setUserLocation\", newValue);\n },\n },\n user_country() {\n return this.$store.getters.user_country;\n },\n subscribe_affiliate() {\n return this.$store.getters.subscribe_affiliate;\n },\n user_details() {\n return this.$store.getters.user_details;\n },\n friends() {\n return this.$store.getters.friends;\n },\n friend_requests() {\n return this.$store.getters.friend_requests;\n },\n message_count() {\n return this.$store.getters.message_count;\n },\n total_message() {\n // console.log(\"total_message\" + this.$store.getters.total_message);\n return this.$store.getters.total_message;\n },\n },\n\n mounted() {\n this.$store.dispatch(\"getTotalMessage\");\n },\n watch: {\n app_db_version(value) {\n //console.log(\"this.app_db_version\", this.app_db_version);\n if (this.app_version == \"Android\" || this.app_version == \"iOS\") {\n if (this.myAppVersion < value) {\n this.$f7router.navigate(\"/newversion/\");\n }\n }\n },\n },\n\n async created() {\n var photoUpload = await this.$store.dispatch(\"getUserPhotoStatus\");\n //console.log(\"photoupload\", firebase.auth().currentUser.uid);\n if (!photoUpload) {\n this.$f7router.navigate(\"/editprofilepicture/\", {});\n this.$store.commit(\n \"setAlertMessage\",\n \"Please Upload Profile Picture before chatting with others\"\n );\n return;\n }\n //this.$store.dispatch(\"getMyRequests\");\n //this.checkInternet2();\n this.$store.dispatch(\"getMyFriendsAI\");\n this.$store.dispatch(\"getTotalMessage\");\n this.$store.dispatch(\"getUserDetails\");\n //this.$store.dispatch(\"getUserAffiliate\");\n //this.$store.dispatch(\"getUserPayout\");\n //this.$store.dispatch(\"getUserCountry\");\n this.$store.dispatch(\"getAppDbVersion\");\n this.$store.dispatch(\"getAppVersion\");\n // console.log(\"appversion\", this.myAppVersion);\n console.log(\"dbversion\", this.app_db_version);\n if (this.myAppVersion < this.app_db_version) {\n this.$store.commit(\"setAppUpdate\", true);\n this.$f7router.navigate(\"/newversion/\");\n return;\n }\n //this.user_payout = this.formatNumber(this.user_payout);\n //console.log(\"toast1\");\n //this.showToastBottom(\"hello\");\n //console.log(\"toast2\")\n },\n};\n</script>\n<style>\n.small-avatar {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n}\n\n/* Custom color theme */\n:root {\n --f7-theme-color: #42a5f5;\n --f7-theme-color-rgb: 66, 165, 245;\n --f7-theme-color-shade: #1b93f3;\n --f7-theme-color-tint: #69b7f7;\n}\n/* Invert navigation bars to fill style */\n:root,\n:root.theme-dark,\n:root .theme-dark {\n --f7-bars-bg-color: var(--f7-theme-color);\n --f7-bars-bg-color-rgb: var(--f7-theme-color-rgb);\n --f7-bars-translucent-opacity: 0.9;\n --f7-bars-text-color: #fff;\n --f7-bars-link-color: #fff;\n --f7-navbar-subtitle-text-color: rgba(255, 255, 255, 0.85);\n --f7-bars-border-color: transparent;\n --f7-tabbar-link-active-color: #fff;\n --f7-tabbar-link-inactive-color: rgba(255, 255, 255, 0.54);\n --f7-sheet-border-color: transparent;\n --f7-tabbar-link-active-border-color: #fff;\n}\n.appbar,\n.navbar,\n.toolbar,\n.subnavbar,\n.calendar-header,\n.calendar-footer {\n --f7-touch-ripple-color: var(--f7-touch-ripple-white);\n --f7-link-highlight-color: var(--f7-link-highlight-white);\n --f7-button-text-color: #fff;\n --f7-button-pressed-bg-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-large-transparent,\n.navbar-large.navbar-transparent {\n --f7-navbar-large-title-text-color: #000;\n\n --r: 66;\n --g: 165;\n --b: 245;\n --progress: var(--f7-navbar-large-collapse-progress);\n --f7-bars-link-color: rgb(\n calc(var(--r) + (255 - var(--r)) * var(--progress)),\n calc(var(--g) + (255 - var(--g)) * var(--progress)),\n calc(var(--b) + (255 - var(--b)) * var(--progress))\n );\n}\n.theme-dark .navbar-large-transparent,\n.theme-dark .navbar-large.navbar-transparent {\n --f7-navbar-large-title-text-color: #fff;\n}\n\n.small-avatar2 {\n width: 50px;\n height: 50px;\n margin: 20px;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n}\n\n.wrapper {\n text-align: center;\n}\n\n.image--cover1 {\n width: 200px;\n height: 200px;\n border-radius: 50%;\n margin: 5px;\n object-fit: cover;\n object-position: center;\n}\n</style>\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","/* 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\nexport default function 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 () { injectStyles.call(this, this.$root.$options.shadowRoot) }\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","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=30750509&\"\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./home.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"home\"},on:{\"page:beforein\":_vm.initHome}},[_c('f7-navbar',{attrs:{\"sliding\":false,\"large\":\"\"}},[_c('f7-nav-left',[_c('f7-link',{attrs:{\"icon-ios\":\"f7:menu\",\"icon-aurora\":\"f7:menu\",\"icon-md\":\"material:menu\",\"panel-open\":\"left\"}})],1),_vm._v(\" \"),_c('f7-nav-title',{attrs:{\"sliding\":\"\",\"right\":\"\"}},[_vm._v(\"Penpal America\")]),_vm._v(\" \"),_c('f7-nav-right',[_c('f7-icon',{attrs:{\"slot\":\"right\",\"f7\":\"bell\"},slot:\"right\"},[(_vm.total_message > 0)?_c('f7-badge',{attrs:{\"color\":\"red\"}},[_vm._v(_vm._s(_vm.total_message))]):_vm._e()],1),_vm._v(\" \"),_c('f7-link',{attrs:{\"slot\":\"right\",\"popover-open\":\".popover-menu\"},slot:\"right\"},[_c('i',{staticClass:\"f7-icons\"},[_vm._v(\"ellipsis_vertical\")])])],1),_vm._v(\" \"),_c('f7-nav-title-large',{attrs:{\"sliding\":\"\"}},[_vm._v(\"Penpal America\")]),_vm._v(\" \"),_c('f7-subnavbar',{attrs:{\"inner\":false}},[_c('f7-searchbar',{attrs:{\"search-container\":\".search-list\",\"search-in\":\".item-title\",\"disable-button\":!_vm.$theme.aurora}})],1)],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":\"Nothing found\"}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"search-list searchbar-found\",attrs:{\"media-list\":\"\"}},_vm._l((_vm.friends),function(frd,index){return _c('f7-list-item',{key:index,attrs:{\"title\":frd.name,\"text\":frd.latest_message},on:{\"click\":function($event){return _vm.gotoChat(frd)}}},[(frd.message_count > 0)?_c('f7-badge',{attrs:{\"slot\":\"after-title\",\"color\":\"red\"},slot:\"after-title\"},[_vm._v(_vm._s(frd.message_count))]):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"small-avatar\",attrs:{\"slot\":\"media\",\"src\":frd.photo_url},slot:\"media\"}),_vm._v(\" \"),(frd.userStatus == 'online')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"green\"}},[_vm._v(\"online\")])],1):_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"grey\"}},[_vm._v(\"offline\")])],1),_vm._v(\" \"),(frd.location)?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_vm._v(_vm._s(frd.location))]):_vm._e(),_vm._v(\" \"),(frd.userType == 2 || frd.userType == 3)?_c('span',{attrs:{\"slot\":\"after-title\"},slot:\"after-title\"},[_vm._v(\"Moderator\")]):_vm._e()],1)}),1),_vm._v(\" \"),_c('f7-popover',{staticClass:\"popover-menu\"},[_c('f7-list',[_c('f7-list-item',{attrs:{\"link\":\"#\",\"popup-open\":\".demo-popup-user\",\"popover-close\":\"\",\"title\":\"Profile\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/editprofile/\",\"popover-close\":\"\",\"title\":\"Settings\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/postfriends/\",\"popover-close\":\"\",\"title\":\"Post Messages\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"link\":\"/usernotifications/\",\"popover-close\":\"\",\"title\":\"Notifications\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"popover-close\":\"\",\"title\":\"Send Broadcast Message\"},on:{\"click\":function($event){return _vm.sendBroadCast()}}})],1)],1),_vm._v(\" \"),_c('f7-popup',{staticClass:\"demo-popup-user\",attrs:{\"backdrop:false\":\"\"}},[_c('f7-page',[_c('f7-navbar',{attrs:{\"title\":this.user_details.name,\"subtitle\":this.user_details.location}},[_c('div',{attrs:{\"slot\":\"default\"},slot:\"default\"},[_c('span',{attrs:{\"v-if\":this.user_details.birthDate}},[_vm._v(_vm._s(_vm.moment(this.user_details.birthDate, \"YYYYMMDD\").fromNow(true)))])]),_vm._v(\" \"),_c('f7-nav-right',[_c('f7-link',{attrs:{\"popup-close\":\"\"}},[_vm._v(\"Close\")])],1)],1),_vm._v(\" \"),_c('f7-block',[_c('div',{staticClass:\"wrapper\"},[_c('img',{staticClass:\"image--cover1\",attrs:{\"src\":this.user_details.photo_url}})]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('p',[_c('b',[_vm._v(\"Profile Message\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n \"+_vm._s(this.user_details.profileMessage)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('p',[_c('b',[_vm._v(\"Your Email\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n \"+_vm._s(this.user_details.email)+\" --> Only you see this\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('p',[_c('b',[_vm._v(\"Your Phone Number\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n \"+_vm._s(this.user_details.phonenumber)+\" --> Only you see this\\n \")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('br')])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./about.vue?vue&type=template&id=4ec436d8&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"}},[_c('f7-navbar',{attrs:{\"title\":\"About\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"About My App\")]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('p',[_vm._v(\"Fugiat perspiciatis excepturi, soluta quod non ullam deleniti. Nobis sint nemo consequuntur, fugiat. Eius perferendis animi autem incidunt vel quod tenetur nostrum, voluptate omnis quasi quidem illum consequuntur, a, quisquam.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Laudantium neque magnam vitae nemo quam commodi, in cum dolore obcaecati laborum, excepturi harum, optio qui, consequuntur? Obcaecati dolor sequi nesciunt culpa quia perspiciatis, reiciendis ex debitis, ut tenetur alias.\")])]),_vm._v(\" \"),_c('f7-block',[_c('p',[_vm._v(\"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magni molestiae laudantium dignissimos est nobis delectus nemo ea alias voluptatum architecto, amet similique, saepe iste consectetur in repellat ut minus quibusdam!\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Molestias et distinctio porro nesciunt ratione similique, magni doloribus, rerum nobis, aliquam quae reiciendis quasi modi. Nam a recusandae, fugiat in ea voluptates fuga eius, velit corrupti reprehenderit dignissimos consequatur!\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Blanditiis, cumque quo adipisci. Molestiae, dolores dolorum quos doloremque ipsa ullam eligendi commodi deserunt doloribus inventore magni? Ea mollitia veniam nostrum nihil, iusto doloribus a at! Ea molestiae ullam delectus!\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./form.vue?vue&type=template&id=45b9ee46&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"form\"}},[_c('f7-navbar',{attrs:{\"title\":\"Form\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"Form Example\")]),_vm._v(\" \"),_c('f7-list',{attrs:{\"no-hairlines-md\":\"\"}},[_c('f7-list-input',{attrs:{\"label\":\"Name\",\"type\":\"text\",\"placeholder\":\"Your name\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"E-mail\",\"type\":\"email\",\"placeholder\":\"E-mail\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"URL\",\"type\":\"url\",\"placeholder\":\"URL\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"Password\",\"type\":\"password\",\"placeholder\":\"Password\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"Phone\",\"type\":\"tel\",\"placeholder\":\"Phone\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"Gender\",\"type\":\"select\"}},[_c('option',[_vm._v(\"Male\")]),_vm._v(\" \"),_c('option',[_vm._v(\"Female\")])]),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"Birth date\",\"type\":\"date\",\"placeholder\":\"Birth day\",\"defaultValue\":\"2014-04-30\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"title\":\"Toggle\"}},[_c('f7-toggle',{attrs:{\"slot\":\"after\"},slot:\"after\"})],1),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"label\":\"Range\",\"input\":false}},[_c('f7-range',{attrs:{\"slot\":\"input\",\"value\":50,\"min\":0,\"max\":100,\"step\":1},slot:\"input\"})],1),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"type\":\"textarea\",\"label\":\"Textarea\",\"placeholder\":\"Bio\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"type\":\"textarea\",\"label\":\"Resizable\",\"placeholder\":\"Bio\",\"resizable\":\"\"}})],1),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"Buttons\")]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\"},[_vm._v(\"Button\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"fill\":\"\"}},[_vm._v(\"Fill\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"raised\":\"\"}},[_vm._v(\"Raised\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"raised\":\"\",\"fill\":\"\"}},[_vm._v(\"Raised Fill\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"round\":\"\"}},[_vm._v(\"Round\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"round\":\"\",\"fill\":\"\"}},[_vm._v(\"Round Fill\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"outline\":\"\"}},[_vm._v(\"Outline\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"round\":\"\",\"outline\":\"\"}},[_vm._v(\"Outline Round\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"small\":\"\",\"outline\":\"\"}},[_vm._v(\"Small\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"small\":\"\",\"round\":\"\",\"outline\":\"\"}},[_vm._v(\"Small Round\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"small\":\"\",\"fill\":\"\"}},[_vm._v(\"Small\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"small\":\"\",\"round\":\"\",\"fill\":\"\"}},[_vm._v(\"Small Round\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"large\":\"\",\"raised\":\"\"}},[_vm._v(\"Large\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"large\":\"\",\"fill\":\"\",\"raised\":\"\"}},[_vm._v(\"Large Fill\")])],1),_vm._v(\" \"),_c('f7-row',{attrs:{\"tag\":\"p\"}},[_c('f7-button',{staticClass:\"col\",attrs:{\"large\":\"\",\"fill\":\"\",\"raised\":\"\",\"color\":\"red\"}},[_vm._v(\"Large Red\")]),_vm._v(\" \"),_c('f7-button',{staticClass:\"col\",attrs:{\"large\":\"\",\"fill\":\"\",\"raised\":\"\",\"color\":\"green\"}},[_vm._v(\"Large Green\")])],1)],1),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"Checkbox group\")]),_vm._v(\" \"),_c('f7-list',[_c('f7-list-item',{attrs:{\"checkbox\":\"\",\"name\":\"my-checkbox\",\"value\":\"Books\",\"title\":\"Books\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"checkbox\":\"\",\"name\":\"my-checkbox\",\"value\":\"Movies\",\"title\":\"Movies\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"checkbox\":\"\",\"name\":\"my-checkbox\",\"value\":\"Food\",\"title\":\"Food\"}})],1),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"Radio buttons group\")]),_vm._v(\" \"),_c('f7-list',[_c('f7-list-item',{attrs:{\"radio\":\"\",\"name\":\"radio\",\"value\":\"Books\",\"title\":\"Books\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"radio\":\"\",\"name\":\"radio\",\"value\":\"Movies\",\"title\":\"Movies\"}}),_vm._v(\" \"),_c('f7-list-item',{attrs:{\"radio\":\"\",\"name\":\"radio\",\"value\":\"Food\",\"title\":\"Food\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./catalog.vue?vue&type=template&id=1d5d04ae&\"\nimport script from \"./catalog.vue?vue&type=script&lang=js&\"\nexport * from \"./catalog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <f7-page name=\"catalog\">\n <f7-navbar title=\"Catalog\"></f7-navbar>\n <f7-list>\n <f7-list-item\n v-for=\"(product) in products\"\n :key=\"product.id\"\n :title=\"product.title\"\n :link=\"`/product/${product.id}/`\"\n ></f7-list-item>\n </f7-list>\n </f7-page>\n</template>\n<script>\n export default {\n data: function () {\n return {\n products: this.$f7.data.products,\n };\n }\n };\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"catalog\"}},[_c('f7-navbar',{attrs:{\"title\":\"Catalog\"}}),_vm._v(\" \"),_c('f7-list',_vm._l((_vm.products),function(product){return _c('f7-list-item',{key:product.id,attrs:{\"title\":product.title,\"link\":(\"/product/\" + (product.id) + \"/\")}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./dynamic-route.vue?vue&type=template&id=4e7c48e4&\"\nimport script from \"./dynamic-route.vue?vue&type=script&lang=js&\"\nexport * from \"./dynamic-route.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <f7-page>\n <f7-navbar title=\"Dynamic Route\" back-link=\"Back\"></f7-navbar>\n <f7-block strong>\n <ul>\n <li><b>Url:</b> {{$f7route.url}}</li>\n <li><b>Path:</b> {{$f7route.path}}</li>\n <li><b>Hash:</b> {{$f7route.hash}}</li>\n <li><b>Params:</b>\n <ul>\n <li v-for=\"(value, key) in $f7route.params\" :key=\"key\"><b>{{key}}:</b> {{value}}</li>\n </ul>\n </li>\n <li><b>Query:</b>\n <ul>\n <li v-for=\"(value, key) in $f7route.query\" :key=\"key\"><b>{{key}}:</b> {{value}}</li>\n </ul>\n </li>\n <li><b>Route:</b> {{$f7route.route.path}}</li>\n </ul>\n </f7-block>\n <f7-block strong>\n <f7-link @click=\"$f7router.back()\">Go back via Router API</f7-link>\n </f7-block>\n </f7-page>\n</template>\n<script>\n export default {};\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',[_c('f7-navbar',{attrs:{\"title\":\"Dynamic Route\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('ul',[_c('li',[_c('b',[_vm._v(\"Url:\")]),_vm._v(\" \"+_vm._s(_vm.$f7route.url))]),_vm._v(\" \"),_c('li',[_c('b',[_vm._v(\"Path:\")]),_vm._v(\" \"+_vm._s(_vm.$f7route.path))]),_vm._v(\" \"),_c('li',[_c('b',[_vm._v(\"Hash:\")]),_vm._v(\" \"+_vm._s(_vm.$f7route.hash))]),_vm._v(\" \"),_c('li',[_c('b',[_vm._v(\"Params:\")]),_vm._v(\" \"),_c('ul',_vm._l((_vm.$f7route.params),function(value,key){return _c('li',{key:key},[_c('b',[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"+_vm._s(value))])}),0)]),_vm._v(\" \"),_c('li',[_c('b',[_vm._v(\"Query:\")]),_vm._v(\" \"),_c('ul',_vm._l((_vm.$f7route.query),function(value,key){return _c('li',{key:key},[_c('b',[_vm._v(_vm._s(key)+\":\")]),_vm._v(\" \"+_vm._s(value))])}),0)]),_vm._v(\" \"),_c('li',[_c('b',[_vm._v(\"Route:\")]),_vm._v(\" \"+_vm._s(_vm.$f7route.route.path))])])]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('f7-link',{on:{\"click\":function($event){return _vm.$f7router.back()}}},[_vm._v(\"Go back via Router API\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./request-and-load.vue?vue&type=template&id=641b1ccc&\"\nimport script from \"./request-and-load.vue?vue&type=script&lang=js&\"\nexport * from \"./request-and-load.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <f7-page>\n <f7-navbar :title=\"`${user.firstName} ${user.lastName}`\" back-link=\"Back\"></f7-navbar>\n <f7-block strong>\n {{user.about}}\n </f7-block>\n <f7-list>\n <f7-list-item\n v-for=\"(link, index) in user.links\"\n :key=\"index\"\n :link=\"link.url\"\n :title=\"link.title\"\n external\n target=\"_blank\"\n ></f7-list-item>\n </f7-list>\n </f7-page>\n</template>\n<script>\n export default {\n data() {\n return {\n user: this.$f7route.context.user,\n }\n }\n }\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',[_c('f7-navbar',{attrs:{\"title\":((_vm.user.firstName) + \" \" + (_vm.user.lastName)),\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.user.about)+\"\\n \")]),_vm._v(\" \"),_c('f7-list',_vm._l((_vm.user.links),function(link,index){return _c('f7-list-item',{key:index,attrs:{\"link\":link.url,\"title\":link.title,\"external\":\"\",\"target\":\"_blank\"}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=246c5cab&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <f7-page>\n <f7-navbar title=\"Not found\" back-link=\"Back\"></f7-navbar>\n <f7-block strong>\n <p>Sorry</p>\n <p>Requested content not found.</p>\n </f7-block>\n </f7-page>\n</template>\n<script>\n export default {};\n</script>","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',[_c('f7-navbar',{attrs:{\"title\":\"Not found\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('p',[_vm._v(\"Sorry\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Requested content not found.\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\n/* eslint no-underscore-dangle: \"off\" */\nimport componentsRouter from './components-router';\nimport f7, { f7Instance } from './f7';\n\nfunction f7ready(callback) {\n f7.ready(callback);\n}\n\nconst f7Theme = {};\n\nconst Plugin = {\n name: 'phenomePlugin',\n installed: false,\n install(params = {}) {\n if (Plugin.installed) return;\n Plugin.installed = true;\n\n const Framework7 = this;\n f7.Framework7 = Framework7;\n f7.events = new Framework7.Events();\n\n // eslint-disable-next-line\n const Extend = params.Vue || Vue;\n\n \n // DEFINE_INSTANCE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$f7', {\n get() {\n return f7.instance;\n },\n });\n // DEFINE_INSTANCE_PROTOS_END\n\n const { theme } = params;\n if (theme === 'md') f7Theme.md = true;\n if (theme === 'ios') f7Theme.ios = true;\n if (theme === 'aurora') f7Theme.aurora = true;\n if (!theme || theme === 'auto') {\n f7Theme.ios = !!Framework7.device.ios;\n f7Theme.aurora = Framework7.device.desktop && Framework7.device.electron;\n f7Theme.md = !f7Theme.ios && !f7Theme.aurora;\n }\n f7.ready(() => {\n f7Theme.ios = f7.instance.theme === 'ios';\n f7Theme.md = f7.instance.theme === 'md';\n f7Theme.aurora = f7.instance.theme === 'aurora';\n });\n\n // DEFINE_PROTOS_START\n Object.defineProperty(Extend.prototype, '$theme', {\n get() {\n return {\n ios: f7.instance ? f7.instance.theme === 'ios' : f7Theme.ios,\n md: f7.instance ? f7.instance.theme === 'md' : f7Theme.md,\n aurora: f7.instance ? f7.instance.theme === 'aurora' : f7Theme.aurora,\n };\n },\n });\n\n Extend.prototype.Dom7 = Framework7.$;\n Extend.prototype.$$ = Framework7.$;\n Extend.prototype.$device = Framework7.device;\n Extend.prototype.$request = Framework7.request;\n Extend.prototype.$utils = Framework7.utils;\n Extend.prototype.$f7ready = f7ready;\n\n Object.defineProperty(Extend.prototype, '$f7route', {\n get() {\n const self = this;\n if (self.props && self.props.f7route) return self.props.f7route;\n if (self.f7route) return self.f7route;\n if (self._f7route) return self._f7route;\n\n let route;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n route = self.$vnode.data.props.f7route;\n }\n let parent = self;\n while (parent && !route) {\n if (parent._f7route) route = parent._f7route;\n parent = parent.$parent;\n }\n }\n return route;\n },\n set(value) {\n const self = this;\n self._f7route = value;\n },\n });\n Object.defineProperty(Extend.prototype, '$f7router', {\n get() {\n const self = this;\n if (self.props && self.props.f7router) return self.props.f7router;\n if (self.f7router) return self.f7router;\n if (self._f7router) return self._f7router;\n\n let router;\n // eslint-disable-next-line\n if ('vue' === 'vue') {\n if (self.$vnode && self.$vnode.data && self.$vnode.data.props && self.$vnode.data.props.f7route) {\n router = self.$vnode.data.props.f7router;\n }\n let parent = self;\n while (parent && !router) {\n if (parent._f7router) router = parent._f7router;\n else if (parent.f7View) {\n router = parent.f7View.router;\n } else if (parent.$refs && parent.$refs.el && parent.$refs.el.f7View) {\n router = parent.$refs.el.f7View.router;\n }\n parent = parent.$parent;\n }\n }\n return router;\n },\n set(value) {\n const self = this;\n self._f7router = value;\n },\n });\n // DEFINE_PROTOS_END\n\n // Extend F7 Router\n Framework7.Router.use(componentsRouter);\n },\n};\n\nexport { f7ready, f7Instance as f7, f7Theme as theme };\nexport default Plugin;\n","export const mixin = {\n computed: {\n alert_message() {\n return this.$store.getters.alert_message;\n },\n quit_application() {\n return this.$store.getters.quit_application;\n }\n },\n watch: {\n\n alert_message(value) {\n const self = this;\n if (value == null) {\n return\n }\n this.showToastBottom(value);\n setTimeout(() => {\n self.$store.commit(\"setAlertMessage\", null);\n }, 200);\n },\n\n\n quit_application(value) {\n const self = this;\n //console.log(\"quit app\", value)\n if (value != null) {\n this.quitAppDialogue(value);\n this.$store.commit(\"setQuitApplication\", null);\n }\n\n }\n },\n methods: {\n showToastBottom(text) {\n const self = this;\n // Create toast\n if (!self.toastBottom || self.toastBottom.destroyed) {\n self.toastBottom = self.$f7.toast.create({\n text: text,\n closeTimeout: 4000,\n position: 'center',\n destroyOnClose: true\n });\n }\n // Open it\n self.toastBottom.open();\n },\n\n quitAppDialogue(cnt1) {\n\n var dialog = this.$f7.dialog\n .create({\n title: \"Quit\",\n text:\n \"Are you sure you want to quit Application?\",\n content: \"\",\n\n buttons: [{ text: \"No\", close: true }, { text: \"Yes\" }],\n onClick: (dialog, index) => {\n const app = this.$f7;\n if (index == 1) {\n\n this.$store.commit(\"setQuitApplication\", null);\n this.$f7.dialog.close();\n app.panel.close();\n if (window.hasOwnProperty(\"cordova\")) {\n window.navigator.app.exitApp();\n }\n } else {\n this.$store.commit(\"setQuitApplication\", null);\n this.$f7.dialog.close();\n app.panel.close();\n\n }\n },\n on: {\n open: function () {\n //console.log(\"OPEN\");\n },\n },\n })\n // console.log(\"close here2\")\n .open();\n }\n }\n};\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin.vue?vue&type=script&lang=js&\"","<template>\n <f7-page class=\"page-one\" name=\"signin\" no-swipeback login-screen>\n <f7-login-screen-title>Penpal America</f7-login-screen-title>\n <div>\n <f7-list no-hairlines-md>\n <f7-list-input\n :value=\"email\"\n @input=\"email = $event.target.value\"\n label=\"E-mail\"\n type=\"email\"\n placeholder=\"Your e-mail\"\n clear-button\n validate\n ></f7-list-input>\n\n <f7-list-input\n :value=\"password\"\n @input=\"password = $event.target.value\"\n label=\"Password\"\n type=\"password\"\n placeholder=\"Your password\"\n clear-button\n ></f7-list-input>\n </f7-list>\n\n <f7-block>\n <f7-button fill @click=\"signIn\" open-confirm>Sign in</f7-button>\n <br />\n <div style=\"text-align: center\">\n <f7-link\n v-if=\"show_resend_email\"\n @click=\"resendEmail\"\n :color=\"color(time_left)\"\n >\n Resend Confirmation Email\n <span v-if=\"time_left > 0\"> {{ time_left }}</span>\n </f7-link>\n <br />\n <f7-link @click=\"userConsent\">Don't have an account? Sign up</f7-link>\n <br />\n <f7-link @click=\"forgetPassword\">Forget Password</f7-link>\n </div>\n </f7-block>\n </div>\n </f7-page>\n</template>\n\n<script>\nimport { f7 } from \"framework7-vue\";\nimport { setInterval, clearInterval } from \"timers\";\nimport { mixin } from \"../../js/mixin\";\nimport firebase from \"firebase\";\nimport { title } from \"process\";\nexport default {\n data() {\n return {\n email: null,\n password: null,\n time_left: -1,\n app_agree: false,\n myAppVersion: 2,\n };\n },\n mixins: [mixin],\n computed: {\n show_resend_email() {\n return this.$store.getters.show_resend_email;\n },\n\n app_db_version() {\n return this.$store.getters.app_db_version;\n },\n },\n methods: {\n myFunction() {\n //console.log(\"checkbook clicked\");\n },\n userConsent() {\n var user_agree = false;\n //console.log(\"User consent\");\n var dialog = this.$f7.dialog\n .create({\n title: \"App User's Consent Required\",\n text: \"\",\n content:\n \"<div class='page' data-page='home' style='height: 300px; position:relative'>\" +\n \"<div class='page-content infinite-scroll-content' style='overflow: auto'>\" +\n \"<div class='list simple-list'>\" +\n \"<h2>Privacy Policy</h2>\" +\n \"<p>Swift Alliance builds the Penpal America App as a social network app. This SERVICE is provided by Swift Alliance at no cost and is intended for use as is.</p>\" +\n \"<p> \" +\n \"This page is used to inform visitors regarding \" +\n \"our policies with the collection, use, and \" +\n \"disclosure of Personal Information if anyone decided to use \" +\n \"our Service. \" +\n \" </p> <p> \" +\n \"If you choose to use our Service, then you agree \" +\n \"to the collection and use of information in relation to this \" +\n \"policy. The Personal Information that we collect is \" +\n \"used for providing and improving the Service. \" +\n \"we will not use or share your \" +\n \"information with anyone except as described in this Privacy \" +\n \"Policy. \" +\n \" </p> <p> \" +\n \"The terms used in this Privacy Policy have the same meanings \" +\n \"as in our Terms and Conditions, which is accessible at \" +\n \"Penpal America unless otherwise defined in this Privacy \" +\n \"Policy. \" +\n \" </p> <p><strong>Information Collection and Use</strong></p> <p> \" +\n \"For a better experience, while using our Service, \" +\n \"we may require you to provide us with certain \" +\n \"personally identifiable information, including but not limited to Contacts in your Phonebook,Your Phone Number,Your Profile Picture. The \" +\n \"information that we request will be \" +\n \"securely saved on our secure Servers, we will never share these information without your permission. \" +\n \"<br> \" +\n \" your name, number, and your profile Picture will be available publicly to other users. \" +\n \" </p> <p> \" +\n \"The app does use third party services that may collect \" +\n \"information used to identify you. \" +\n \"</p><div><p> \" +\n \"we want to inform you that whenever \" +\n \"you use our Service, in a case of an error in the \" +\n \"app we collect data and information (through third \" +\n \"party products) on your phone called Log Data. This Log Data \" +\n \"may include information such as your device Internet \" +\n \"Protocol (“IP”) address, device name, operating system \" +\n \"version, the configuration of the app when utilizing \" +\n \"our Service, the time and date of your use of the \" +\n \"Service, and other statistics. \" +\n \" </p> \" +\n \" <p><strong>Permissions we request</strong></p> <p> \" +\n \"<ul> \" +\n \" <li>Contacts: to be able to communicate with your Friends that are in your Contacts</li> \" +\n \" <li>Camera: to be able to Take Pictures/Videos and to be able to make Video Calls.</li> \" +\n \" <li>Microphpone: to be able to send Voice Messages and also to be able to make Voice/Video Calls.</li> \" +\n \" <li>Storage: to save the Sent/Received Files in your Device</li> \" +\n \"</ul> \" +\n \" </p> \" +\n \" \" +\n \" <p><strong>Cookies</strong></p> <p> \" +\n \"Cookies are files with a small amount of data that are \" +\n \"commonly used as anonymous unique identifiers. These are \" +\n \"sent to your browser from the websites that you visit and \" +\n \"are stored on your device's internal memory. \" +\n \" </p> <p> \" +\n \"This Service does not use these “cookies” explicitly. \" +\n \"However, the app may use third party code and libraries that \" +\n \"use “cookies” to collect information and improve their \" +\n \"services. You have the option to either accept or refuse \" +\n \"these cookies and know when a cookie is being sent to your \" +\n \"device. If you choose to refuse our cookies, you may not be \" +\n \"able to use some portions of this Service. \" +\n \" </p> <p><strong>Service Providers</strong></p> <p> \" +\n \"we may employ third-party companies \" +\n \"and individuals due to the following reasons: \" +\n \" </p> <ul><li>To facilitate our Service;</li> <li>To provide the Service on our behalf;</li> <li>To perform Service-related services; or</li> <li>To assist us in analyzing how our Service is used.</li></ul> <p> \" +\n \"we want to inform users of this \" +\n \"Service that these third parties have access to your \" +\n \"Personal Information. The reason is to perform the tasks \" +\n \"assigned to them on our behalf. However, they are obligated \" +\n \"not to disclose or use the information for any other \" +\n \"purpose. \" +\n \" </p> <p><strong>Security</strong></p> <p> \" +\n \"we value your trust in providing us \" +\n \"your Personal Information, thus we are striving to use \" +\n \"commercially acceptable means of protecting it. But remember \" +\n \"that no method of transmission over the internet, or method \" +\n \"of electronic storage is 100% secure and reliable, and \" +\n \"we cannot guarantee its absolute security. \" +\n \" </p> <p><strong>Links to Other Sites</strong></p> <p> \" +\n \"This Service may contain links to other sites. If you click \" +\n \"on a third-party link, you will be directed to that site. \" +\n \"Note that these external sites are not operated by \" +\n \"us. Therefore, we strongly advise you to \" +\n \"review the Privacy Policy of these websites. \" +\n \"we have no control over and assume no \" +\n \"responsibility for the content, privacy policies, or \" +\n \"practices of any third-party sites or services. \" +\n \" </p> <p><strong>Children’s Privacy</strong></p> <p> \" +\n \"These Services do not address anyone under the age of 13. \" +\n \"we do not knowingly collect personally \" +\n \"identifiable information from children under 13. In the case \" +\n \"we discover that a child under 13 has provided \" +\n \"us with personal information, \" +\n \"we immediately delete this from our servers. If you \" +\n \"are a parent or guardian and you are aware that your child \" +\n \"has provided us with personal information, please contact \" +\n \"us so that we will be able to do \" +\n \"necessary actions. \" +\n \" </p> <p><strong>Changes to This Privacy Policy</strong></p> <p> \" +\n \"we may update our Privacy Policy from \" +\n \"time to time. Thus, you are advised to review this page \" +\n \"periodically for any changes. we will \" +\n \"notify you of any changes by posting the new Privacy Policy \" +\n \"on this page. These changes are effective immediately after \" +\n \"they are posted on this page. \" +\n \" </p> <p><strong>Contact Us</strong></p> <p> \" +\n \"If you have any questions or suggestions about \" +\n \"our Privacy Policy, do not hesitate to contact \" +\n \"us at support@penpalamerica.com \" +\n \" </p> \" +\n \"<div class='list media-list'>\" +\n \"<label class='item-checkbox item-content'>\" +\n \"<input type='checkbox' name='demo-media-checkbox' value ='1' />\" +\n \"<i class='icon icon-checkbox'></i>\" +\n \"<p>I agree with the above conditions.</p>\" +\n \"</label>\" +\n \"</div>\" +\n \"</div>\" +\n \"<div class='preloader infinite-scroll-preloader'></div>\" +\n \"</div>\" +\n \"</div>\",\n\n buttons: [{ text: \"Decline\", close: true }, { text: \"I Agree\" }],\n onClick: (dialog, index) => {\n if (index == 1) {\n if (user_agree) {\n const app = this.$f7;\n //var payload = {};\n //payload.profileMessage = response;\n //this.$store.dispatch(\"deleteAccount\");\n this.$f7router.navigate(\"/phoneverify/\");\n this.$f7.dialog.close();\n app.panel.close();\n } else {\n this.$store.commit(\n \"setAlertMessage\",\n \"Scroll to bottom page to accept Terms & Conditions before continuing. \"\n );\n }\n } else {\n }\n },\n on: {\n open: function () {\n //console.log(\"OPEN\");\n },\n },\n })\n .open();\n var $ = this.Dom7;\n $('[name=\"demo-media-checkbox\"]').on(\"change\", function (e) {\n var self = this;\n if (e.target.checked) {\n user_agree = true;\n } else {\n user_agree = false;\n }\n });\n },\n onCheckBoxChange() {\n // console.log(\"am here\");\n },\n getOS() {\n // console.log(\"getos\");\n var userAgent = window.navigator.userAgent,\n platform = window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = null;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = \"Mac OS\";\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = \"iOS\";\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = \"Windows\";\n } else if (/Android/.test(userAgent)) {\n os = \"Android\";\n } else if (!os && /Linux/.test(platform)) {\n os = \"Linux\";\n }\n\n return os;\n },\n\n forgetPassword() {\n // console.log(\"forgetPassword\");\n const self = this;\n var auth = firebase.auth();\n if (this.email != null) {\n auth\n .sendPasswordResetEmail(this.email)\n .then(function () {\n // Email sent.\n self.$store.commit(\n \"setAlertMessage\",\n \"A reset email has been sent to your inbox\"\n );\n })\n .catch(function (error) {\n self.$store.commit(\"setAlertMessage\", error);\n });\n } else {\n self.$store.commit(\"setAlertMessage\", \"Please enter your email\");\n }\n },\n color(timeleft) {\n if (timeleft <= 0) {\n return \"#007aff\";\n } else {\n return \"gray\";\n }\n },\n resendEmail() {\n const self = this;\n //console.log(self.time_left);\n if (this.time_left <= 0) {\n // console.log(\"trigger resend\");\n self.$store.dispatch(\"sendVerification\");\n self.countDown();\n }\n },\n countDown() {\n const self = this;\n self.time_left = 20;\n var timer = setInterval(function () {\n self.time_left -= 1;\n //console.log(\"time left\", self.time_left);\n if (self.time_left <= 0) {\n clearInterval(timer);\n }\n }, 1000);\n },\n async signIn() {\n let userTotal = await this.$store.dispatch(\"getAllUsersMigration\");\n console.log(\"total\", userTotal);\n\n return;\n //show dialogue preloader\n // await this.$store.dispatch(\"getAllUsersMigration2\");\n //await this.$store.dispatch(\n //\"deleteOldAccount\",\n //\"dsMA1kCq3dTt7INMTaJyS8Ry9tK2\"\n //);\n //console.log(\"done\");\n //return;\n\n //firebase;\n //.database()\n //.ref(\"users\")\n //.child(\"Vzj04AjlpDYOBbLLjWEDCh1CuFJ2\")\n //.on(\"value\", (snapshot) => {\n //commit('setUserDetails', snapshot.val())\n // var newPostKey = firebase.database().ref().child(\"posts\").push().key;\n // firebase.database().ref(\"AbC\").child(newPostKey).set({\n // userType: \"3\",\n //});\n // });\n\n //console.log(\"done\", newPostKey);\n //return;\n //console.log(\"app_db_version\", this.app_db_version);\n if (window.hasOwnProperty(\"cordova\")) {\n // console.log(\"nosa\");\n let network_status = await this.$store.dispatch(\"checkConnection\");\n\n //console.log(\"network_status\", network_status);\n if (network_status == \"offline\") {\n this.$store.commit(\n \"setAlertMessage\",\n \"It seems you are offline. Kindly check internet connection to continue...\"\n );\n return;\n }\n }\n this.$store.dispatch(\"getAppDbVersion\");\n //var appVersion = 0;\n if (this.myAppVersion < this.app_db_version) {\n this.$f7router.navigate(\"/newversion/\");\n return;\n }\n if (this.email != null && this.password != null) {\n var payload = {};\n payload.email = this.email;\n payload.password = this.password;\n //await this.$store.dispatch(\"signIn\", payload);\n //console.log(\"userID\", firebase.auth().currentUser.uid);\n\n // console.log(\"payload.email\", payload.email);\n f7.dialog.preloader(\n \"Logging you to the App.<br>First time might take long.<br>Please wait...\"\n );\n let userLoginStatus = await this.$store.dispatch(\"signIn\", payload);\n f7.dialog.close();\n\n if (userLoginStatus == \"1\") {\n this.$store.commit(\"setAlertMessage\", \"Please Verify Your Email...\");\n }\n } else {\n this.$store.commit(\n \"setAlertMessage\",\n \"Provide valid email and password to continue... \"\n );\n }\n //f7.dialog.close();\n },\n },\n created() {\n this.$store.dispatch(\"getAppDbVersion\");\n },\n};\n</script>\n<style scoped>\n.page {\n font-family: \"centabel\";\n background: url(\"https://penpalamerica.com/images/coversmall.png\") no-repeat\n center fixed !important;\n background-size: cover !important;\n}\n.page-one {\n width: 30%;\n --f7-page-bg-color: red;\n margin-top: 50px;\n margin-left: 450px;\n}\n\n@media only screen and (min-width: 700px) and (max-width: 1024px) {\n .page-one {\n width: 70%;\n --f7-page-bg-color: red;\n margin-top: 400px;\n margin-left: 150px;\n font-size: 2em;\n }\n .halfcol {\n width: 100%;\n height: auto;\n font-size: 3em;\n }\n}\n\n@media only screen and (max-width: 600px) {\n .page-one {\n width: 70%;\n --f7-page-bg-color: red;\n margin-top: 80px;\n margin-left: 70px;\n }\n}\n.halfcol {\n width: 20%;\n}\n\n@media only screen and (max-width: 600px) {\n .halfcol {\n width: 70%;\n }\n}\n.align-center {\n margin-top: 300px;\n margin-left: 50px;\n margin-right: 50px;\n position: relative;\n /*background: #1b1e24;*/\n /* SIDEBAR */\n /* END SIDEBAR */\n /* CONTENT */\n /* END CONTENT */\n /* RTL CONTENT MODE */\n /* END RTL CONTENT MODE */\n}\n</style>>","import { render, staticRenderFns } from \"./signin.vue?vue&type=template&id=4582ce21&scoped=true&\"\nimport script from \"./signin.vue?vue&type=script&lang=js&\"\nexport * from \"./signin.vue?vue&type=script&lang=js&\"\nimport style0 from \"./signin.vue?vue&type=style&index=0&id=4582ce21&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4582ce21\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{staticClass:\"page-one\",attrs:{\"name\":\"signin\",\"no-swipeback\":\"\",\"login-screen\":\"\"}},[_c('f7-login-screen-title',[_vm._v(\"Penpal America\")]),_vm._v(\" \"),_c('div',[_c('f7-list',{attrs:{\"no-hairlines-md\":\"\"}},[_c('f7-list-input',{attrs:{\"value\":_vm.email,\"label\":\"E-mail\",\"type\":\"email\",\"placeholder\":\"Your e-mail\",\"clear-button\":\"\",\"validate\":\"\"},on:{\"input\":function($event){_vm.email = $event.target.value}}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"value\":_vm.password,\"label\":\"Password\",\"type\":\"password\",\"placeholder\":\"Your password\",\"clear-button\":\"\"},on:{\"input\":function($event){_vm.password = $event.target.value}}})],1),_vm._v(\" \"),_c('f7-block',[_c('f7-button',{attrs:{\"fill\":\"\",\"open-confirm\":\"\"},on:{\"click\":_vm.signIn}},[_vm._v(\"Sign in\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('div',{staticStyle:{\"text-align\":\"center\"}},[(_vm.show_resend_email)?_c('f7-link',{attrs:{\"color\":_vm.color(_vm.time_left)},on:{\"click\":_vm.resendEmail}},[_vm._v(\"\\n Resend Confirmation Email\\n \"),(_vm.time_left > 0)?_c('span',[_vm._v(\" \"+_vm._s(_vm.time_left))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-link',{on:{\"click\":_vm.userConsent}},[_vm._v(\"Don't have an account? Sign up\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-link',{on:{\"click\":_vm.forgetPassword}},[_vm._v(\"Forget Password\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./firstpage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./firstpage.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"firstpage\" no-swipeback>\r\n <div class=\"page-one\" align=\"center\">\r\n <f7-block>\r\n <h1><font color=\"white\">Welcome to Penpal America</font></h1>\r\n\r\n <h3>\r\n <font color=\"white\">Register today to chat with Americans</font>\r\n </h3>\r\n <div class=\"halfcol\">\r\n <f7-button fill @click=\"gotoSignIn\" open-confirm\r\n >Get Started</f7-button\r\n >\r\n <br />\r\n </div>\r\n </f7-block>\r\n </div>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport { f7 } from \"framework7-vue\";\r\nimport { setInterval, clearInterval } from \"timers\";\r\nimport { mixin } from \"../../js/mixin\";\r\nimport firebase from \"firebase\";\r\nimport { title } from \"process\";\r\nexport default {\r\n data() {\r\n return {\r\n email: null,\r\n password: null,\r\n time_left: -1,\r\n app_agree: false,\r\n myAppVersion: 2,\r\n };\r\n },\r\n\r\n methods: {\r\n gotoSignIn() {\r\n this.$f7router.navigate(\"/signin/\");\r\n },\r\n },\r\n created() {\r\n this.$store.dispatch(\"getAppDbVersion\");\r\n },\r\n};\r\n</script>\r\n<style scoped>\r\n.page {\r\n font-family: \"centabel\";\r\n background: url(\"https://penpalamerica.com/images/coversmall.png\") no-repeat\r\n center fixed !important;\r\n background-size: cover !important;\r\n}\r\n.page-one {\r\n width: 70%;\r\n --f7-page-bg-color: red;\r\n margin-top: 200px;\r\n margin-left: 150px;\r\n}\r\n\r\n@media only screen and (min-width: 700px) and (max-width: 1024px) {\r\n .page-one {\r\n width: 70%;\r\n --f7-page-bg-color: red;\r\n margin-top: 400px;\r\n margin-left: 150px;\r\n font-size: 2em;\r\n }\r\n .halfcol {\r\n width: 100%;\r\n height: auto;\r\n font-size: 3em;\r\n }\r\n}\r\n\r\n@media only screen and (max-width: 600px) {\r\n .page-one {\r\n width: 70%;\r\n --f7-page-bg-color: red;\r\n margin-top: 300px;\r\n margin-left: 70px;\r\n }\r\n}\r\n.halfcol {\r\n width: 20%;\r\n}\r\n\r\n@media only screen and (max-width: 600px) {\r\n .halfcol {\r\n width: 70%;\r\n }\r\n}\r\n.align-center {\r\n margin-top: 300px;\r\n margin-left: 50px;\r\n margin-right: 50px;\r\n position: relative;\r\n /*background: #1b1e24;*/\r\n /* SIDEBAR */\r\n /* END SIDEBAR */\r\n /* CONTENT */\r\n /* END CONTENT */\r\n /* RTL CONTENT MODE */\r\n /* END RTL CONTENT MODE */\r\n}\r\n</style>>","import { render, staticRenderFns } from \"./firstpage.vue?vue&type=template&id=06e930f5&scoped=true&\"\nimport script from \"./firstpage.vue?vue&type=script&lang=js&\"\nexport * from \"./firstpage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./firstpage.vue?vue&type=style&index=0&id=06e930f5&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06e930f5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"firstpage\",\"no-swipeback\":\"\"}},[_c('div',{staticClass:\"page-one\",attrs:{\"align\":\"center\"}},[_c('f7-block',[_c('h1',[_c('font',{attrs:{\"color\":\"white\"}},[_vm._v(\"Welcome to Penpal America\")])],1),_vm._v(\" \"),_c('h3',[_c('font',{attrs:{\"color\":\"white\"}},[_vm._v(\"Register today to chat with Americans\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"halfcol\"},[_c('f7-button',{attrs:{\"fill\":\"\",\"open-confirm\":\"\"},on:{\"click\":_vm.gotoSignIn}},[_vm._v(\"Get Started\")]),_vm._v(\" \"),_c('br')],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signup.vue?vue&type=script&lang=js&\"","<template>\n <f7-page name=\"signup\" no-swipeback login-screen>\n <f7-login-screen-title>Sign Up</f7-login-screen-title>\n <f7-navbar title=\"Sign up\" back-link=\"Back\"></f7-navbar>\n <div class=\"wrapper\">\n <img\n class=\"image--cover\"\n :src=\"image_url\"\n alt\n @click=\"launchFilePicker\"\n />\n </div>\n <div class=\"list inline-labels no-hairlines-md\">\n <ul>\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Name</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"name\"\n @input=\"name = $event.target.value\"\n type=\"text\"\n placeholder=\"Display name\"\n required\n validate\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">E-mail</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"email\"\n @input=\"email = $event.target.value\"\n type=\"email\"\n placeholder=\"Your e-mail\"\n required\n validate\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Gender</div>\n <div class=\"item-input-wrap input-dropdown-wrap\">\n <select\n :value=\"gender\"\n @input=\"gender = $event.target.value\"\n placeholder=\"Please choose...\"\n >\n <option value=\"M\">Male</option>\n <option value=\"F\">Female</option>\n </select>\n </div>\n </div>\n </li>\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Password</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"password\"\n @input=\"password = $event.target.value\"\n type=\"password\"\n placeholder=\"Your password\"\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Birthday</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"dateofbirth\"\n @input=\"dateofbirth = $event.target.value\"\n type=\"date\"\n placeholder=\"Please choose...\"\n />\n </div>\n </div>\n </li>\n\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Location</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"location\"\n @input=\"location = $event.target.value\"\n type=\"text\"\n placeholder=\"Your Present location\"\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n\n <span :v-if=\"valid_inputs\"></span>\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Message</div>\n <div class=\"item-input-wrap\">\n <textarea\n :value=\"profileMessage\"\n @input=\"profileMessage = $event.target.value\"\n class=\"resizable\"\n placeholder=\"Your Profile Message\"\n maxlength=\"200\"\n ></textarea>\n </div>\n </div>\n </li>\n </ul>\n </div>\n\n <!-- changes end here -->\n <div>\n <f7-block>\n <f7-button fill @click=\"signUp\">Sign up</f7-button>\n <input\n type=\"file\"\n ref=\"file\"\n style=\"display: none\"\n @change=\"onFilePicked\"\n />\n\n <br />\n <f7-link href=\"https://penpalamerica.com/terms.html\" external\n >Terms and Conditions |\n </f7-link>\n\n <f7-link href=\"https://penpalamerica.com/privacy.html\" external\n >Privacy</f7-link\n >\n </f7-block>\n </div>\n </f7-page>\n</template>\n\n<script>\n// import {\n// setTimeout\n// } from 'timers';\nimport { mixin } from \"../../js/mixin\";\nimport firebase from \"firebase\";\nimport {\n f7Page,\n f7LoginScreenTitle,\n f7List,\n f7ListItem,\n f7ListButton,\n f7BlockFooter,\n f7ListInput,\n} from \"framework7-vue\";\n\nexport default {\n mixins: [mixin],\n f7Page,\n f7LoginScreenTitle,\n f7List,\n f7ListItem,\n f7ListButton,\n f7BlockFooter,\n f7ListInput,\n data() {\n return {\n name: null,\n email: null,\n password: null,\n phonenumber: null,\n country: null,\n gender: null,\n lastseen: null,\n location: null,\n profileMessage: null,\n dateofbirth: null,\n tempPayload: null,\n };\n },\n computed: {\n image_url() {\n return this.$store.getters.image_url;\n },\n files() {\n return this.$store.getters.files;\n },\n signed_up() {\n return this.$store.getters.signed_up;\n },\n valid_inputs() {\n return this.$store.getters.valid_inputs;\n },\n },\n watch: {\n signed_up(value) {\n if (value == true) {\n this.$f7router.navigate(\"/signin/\");\n }\n },\n valid_inputs(value) {\n if (value == true) {\n //completeRegistration();\n // console.log(\"I am here1\");\n // console.log(this.tempPayload.name);\n }\n },\n },\n\n methods: {\n getOS() {\n // console.log(\"getos\");\n var userAgent = window.navigator.userAgent,\n platform = window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = null;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = \"Mac OS\";\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = \"iOS\";\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = \"Windows\";\n } else if (/Android/.test(userAgent)) {\n os = \"Android\";\n } else if (!os && /Linux/.test(platform)) {\n os = \"Linux\";\n }\n\n return os;\n },\n\n launchFilePicker() {\n this.$refs.file.click();\n },\n onFilePicked() {\n //read the image file\n this.$store.dispatch(\"readFile\", \"setImageURL\");\n },\n signUp() {\n var userToken = \"web\";\n // if (this.getOS() == \"Android\" || this.getOS() == \"iOS\") {\n if (window.hasOwnProperty(\"cordova\")) {\n cordova.plugins.firebase.messaging\n .getInstanceId()\n .then(function (instanceId) {\n //console.log(\"Got instanceId: \", instanceId);\n\n cordova.plugins.firebase.messaging\n .getToken()\n .then(function (token) {\n // console.log(\"Got device token: \", token);\n userToken = token;\n });\n });\n cordova.plugins.firebase.messaging.subscribe(\"everyone\");\n cordova.plugins.firebase.messaging.subscribe(this.country);\n }\n\n const self = this;\n var payload = {};\n var payloadGroup = {};\n payload.phonenumber = this.phonenumber;\n payload.country = this.country;\n payload.userToken = userToken;\n\n //name validation\n if (this.name) {\n if (this.name.length < 3) {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Name must be 3 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n } else {\n payload.name = this.name;\n }\n } else {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Enter Your Name ( 3 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //email validation\n if (this.email) {\n payload.email = this.email;\n } else {\n self.$store.dispatch(\"verifyInputs\", \"Enter Valid Email Address\");\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //password validation\n if (this.password) {\n if (this.password.length < 6) {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Password must be 6 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n } else {\n payload.password = this.password;\n }\n } else {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Enter Your Password ( 6 characters long minimum )\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //age validation\n if (this.dateofbirth) {\n var birthdate = new Date(this.dateofbirth);\n var cur = new Date();\n var diff = cur - birthdate; // This is the difference in milliseconds\n var age = Math.floor(diff / 31557600000);\n //console.log(\"age \" + age);\n if (age < 18) {\n self.$store.dispatch(\"verifyInputs\", \"Service is for Persons 18+\");\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n } else {\n payload.dateofbirth = this.dateofbirth;\n }\n } else {\n self.$store.dispatch(\"verifyInputs\", \"Please Enter your age\");\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //locatiom validation\n if (this.location) {\n if (this.location.length < 2) {\n self.$store.dispatch(\n \"verifyInputs\",\n \"location must be 2 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n } else {\n payload.location = this.location;\n }\n } else {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Enter Your location ( 2 characters long minimum )\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //gender validation\n if (this.gender) {\n payload.gender = this.gender;\n } else {\n self.$store.dispatch(\"verifyInputs\", \"Select Gender from the list\");\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //country validation\n // if (this.country) {\n // payload.country = this.country;\n //} else {\n // self.$store.dispatch(\"verifyInputs\", \"Select Country from the list\");\n //self.$store.dispatch(\"resetVerifyInputs\");\n //return;\n // }\n\n //profile Message validation\n if (this.profileMessage) {\n if (this.profileMessage.length < 10) {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Profile Message must be 10 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n } else {\n payload.profileMessage = this.profileMessage;\n }\n } else {\n self.$store.dispatch(\n \"verifyInputs\",\n \"Enter Profile Message ( 10 characters long minimum)\"\n );\n self.$store.dispatch(\"resetVerifyInputs\");\n return;\n }\n\n //check if country exist\n //remove poison before checking\n // console.log(\"check1\");\n //this.$store.dispatch(\"countryExist\", this.country);\n //console.log(\"check2\");\n payload.photoURL = this.image_url;\n payload.userType = \"1\";\n payload.userStatus = \"offline\";\n payload.lastSeen = firebase.database.ServerValue.TIMESTAMP;\n\n if (this.valid_inputs) {\n if (self.files) {\n self.$store.dispatch(\"uploadFile\", \"profile/\").then((url) => {\n payload.photoUpload = true;\n payload.photoURL = url;\n self.$store.dispatch(\"signUp\", payload);\n });\n\n //send to mysal database\n //console.log(\"http\");\n var myCountryData = this.country,\n //myCountryData = myCountryData.replace(\" \", \"\");\n myCountryData = myCountryData.replace(\".\", \"\");\n myCountryData = myCountryData.replace(\"#\", \"\");\n myCountryData = myCountryData.replace(\"$\", \"\");\n myCountryData = myCountryData.replace(\"[\", \"\");\n myCountryData = myCountryData.replace(\"]\", \"\");\n var postData = {\n name: payload.name,\n email: payload.email,\n msisdn: this.phonenumber,\n location: payload.location,\n profile: payload.profileMessage,\n country: myCountryData,\n sex: payload.gender,\n age: age,\n };\n\n this.$f7.request.post(\n \"https://chatme24.com/register/regsubpenpalamerica.php\",\n postData,\n function (data) {\n console.log(\"Load was performed\", data);\n }\n );\n console.log(\"Postdata\", postData);\n //end of mysql database\n } else {\n payload.photoUpload = false;\n this.$store.dispatch(\"signUp\", payload);\n var myCountryData = this.country,\n //myCountryData = myCountryData.replace(\" \", \"\");\n myCountryData = myCountryData.replace(\".\", \"\");\n myCountryData = myCountryData.replace(\"#\", \"\");\n myCountryData = myCountryData.replace(\"$\", \"\");\n myCountryData = myCountryData.replace(\"[\", \"\");\n myCountryData = myCountryData.replace(\"]\", \"\");\n\n var postData = {\n name: payload.name,\n email: payload.email,\n msisdn: this.phonenumber,\n location: payload.location,\n profile: payload.profileMessage,\n country: myCountryData,\n sex: payload.gender,\n age: age,\n };\n\n this.$f7.request.post(\n \"https://chatme24.com/register/regsubpenpalamerica.php\",\n postData,\n function (data) {\n console.log(\"Load was performed\", data);\n }\n );\n console.log(\"Postdata\", postData);\n //end of mysql database\n }\n } else {\n //input not correct\n //console.log(\"I am here4\");\n self.$store.dispatch(\"resetVerifyInputs\");\n }\n },\n },\n created() {\n this.$store.commit(\"setSignedUp\", false);\n let param = this.$f7route.params.phone; // decodeURIComponent(this.$f7route.params.frd);\n let mydata = JSON.parse(param);\n this.phonenumber = mydata.phonenumber;\n this.country = mydata.country;\n //console.log(\"signin received\", JSON.stringify(mydata));\n },\n};\n</script>\n\n<style scoped>\n.wrapper {\n text-align: center;\n}\n\n.image--cover {\n width: 150px;\n height: 150px;\n border-radius: 50%;\n margin: 20px;\n object-fit: cover;\n object-position: center;\n}\n</style>\n","import { render, staticRenderFns } from \"./signup.vue?vue&type=template&id=f9e59cb6&scoped=true&\"\nimport script from \"./signup.vue?vue&type=script&lang=js&\"\nexport * from \"./signup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./signup.vue?vue&type=style&index=0&id=f9e59cb6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f9e59cb6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"signup\",\"no-swipeback\":\"\",\"login-screen\":\"\"}},[_c('f7-login-screen-title',[_vm._v(\"Sign Up\")]),_vm._v(\" \"),_c('f7-navbar',{attrs:{\"title\":\"Sign up\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('img',{staticClass:\"image--cover\",attrs:{\"src\":_vm.image_url,\"alt\":\"\"},on:{\"click\":_vm.launchFilePicker}})]),_vm._v(\" \"),_c('div',{staticClass:\"list inline-labels no-hairlines-md\"},[_c('ul',[_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Name\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":\"Display name\",\"required\":\"\",\"validate\":\"\"},domProps:{\"value\":_vm.name},on:{\"input\":function($event){_vm.name = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"E-mail\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"email\",\"placeholder\":\"Your e-mail\",\"required\":\"\",\"validate\":\"\"},domProps:{\"value\":_vm.email},on:{\"input\":function($event){_vm.email = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Gender\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap input-dropdown-wrap\"},[_c('select',{attrs:{\"placeholder\":\"Please choose...\"},domProps:{\"value\":_vm.gender},on:{\"input\":function($event){_vm.gender = $event.target.value}}},[_c('option',{attrs:{\"value\":\"M\"}},[_vm._v(\"Male\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"F\"}},[_vm._v(\"Female\")])])])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Password\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"password\",\"placeholder\":\"Your password\"},domProps:{\"value\":_vm.password},on:{\"input\":function($event){_vm.password = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Birthday\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"date\",\"placeholder\":\"Please choose...\"},domProps:{\"value\":_vm.dateofbirth},on:{\"input\":function($event){_vm.dateofbirth = $event.target.value}}})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Location\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":\"Your Present location\"},domProps:{\"value\":_vm.location},on:{\"input\":function($event){_vm.location = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('span',{attrs:{\"v-if\":_vm.valid_inputs}}),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Message\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('textarea',{staticClass:\"resizable\",attrs:{\"placeholder\":\"Your Profile Message\",\"maxlength\":\"200\"},domProps:{\"value\":_vm.profileMessage},on:{\"input\":function($event){_vm.profileMessage = $event.target.value}}})])])])])]),_vm._v(\" \"),_c('div',[_c('f7-block',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.signUp}},[_vm._v(\"Sign up\")]),_vm._v(\" \"),_c('input',{ref:\"file\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\"},on:{\"change\":_vm.onFilePicked}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://penpalamerica.com/terms.html\",\"external\":\"\"}},[_vm._v(\"Terms and Conditions |\\n \")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://penpalamerica.com/privacy.html\",\"external\":\"\"}},[_vm._v(\"Privacy\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofile.vue?vue&type=script&lang=js&\"","<template>\n <f7-page name=\"editprofile\">\n <f7-navbar title=\"Edit Profile\" back-link=\"Back\"></f7-navbar>\n <div class=\"wrapper\">\n <img\n class=\"image--cover\"\n :src=\"image_url\"\n alt\n @click=\"launchFilePicker\"\n />\n </div>\n <div class=\"align-center\">\n <div class=\"list inline-labels no-hairlines-md\">\n <ul>\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Display Name</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"display_name\"\n @input=\"display_name = $event.target.value\"\n type=\"text\"\n placeholder=\"Display name\"\n required\n validate\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Your Location</div>\n <div class=\"item-input-wrap\">\n <input\n :value=\"user_location\"\n @input=\"user_location = $event.target.value\"\n type=\"text\"\n placeholder=\"Enter Your Location\"\n required\n validate\n />\n <span class=\"input-clear-button\"></span>\n </div>\n </div>\n </li>\n\n <li class=\"item-content item-input\">\n <div class=\"item-media\">\n <i class=\"icon demo-list-icon\"></i>\n </div>\n <div class=\"item-inner\">\n <div class=\"item-title item-label\">Profile Message</div>\n <div class=\"item-input-wrap\">\n <textarea\n :value=\"profile_message\"\n @input=\"profile_message = $event.target.value\"\n class=\"resizable\"\n placeholder=\"Enter Your Profile Message\"\n maxlength=\"200\"\n ></textarea>\n </div>\n </div>\n </li>\n </ul>\n </div>\n\n <f7-block>\n <div v-if=\"uploadFile > 0\">\n <p>\n <f7-progressbar\n :progress=\"0\"\n id=\"demo-inline-progressbar\"\n ></f7-progressbar>\n </p>\n </div>\n\n <f7-button raised @click=\"updateProfile(true)\"\n >Update Profile</f7-button\n >\n <input\n type=\"file\"\n ref=\"file\"\n style=\"display: none\"\n @change=\"onFilePicked\"\n />\n </f7-block>\n </div>\n </f7-page>\n</template>\n\n<script>\nimport firebase from \"firebase\";\nimport { mixin } from \"../../js/mixin\";\nexport default {\n mixins: [mixin],\n data() {\n return {\n name: null,\n email: null,\n password: null,\n };\n },\n computed: {\n group_image_url() {\n return this.$store.getters.group_image_url;\n },\n display_name: {\n get: function () {\n return this.$store.getters.display_name;\n },\n set: function (newValue) {\n this.$store.commit(\"setDisplayName\", newValue);\n },\n },\n user_location: {\n get: function () {\n return this.$store.getters.user_location;\n },\n set: function (newValue) {\n this.$store.commit(\"setUserLocation\", newValue);\n },\n },\n profile_message: {\n get: function () {\n return this.$store.getters.profile_message;\n },\n set: function (newValue) {\n this.$store.commit(\"setProfileMessage\", newValue);\n },\n },\n\n uploadFile: {\n get: function () {\n return this.$store.getters.uploadFile;\n },\n set: function (newValue) {\n this.$store.commit(\"setUploadFile\", newValue);\n },\n },\n image_url() {\n return this.$store.getters.image_url;\n },\n files() {\n return this.$store.getters.files;\n },\n photo_url() {\n return this.$store.getters.photo_url;\n },\n },\n watch: {\n uploadFile(value) {\n if (value > 0) {\n const self = this;\n const app = self.$f7;\n app.progressbar.set(\"#demo-inline-progressbar\", value);\n }\n if (value > 99) {\n this.$store.commit(\"setUploadFile\", 0);\n }\n },\n },\n\n methods: {\n launchFilePicker() {\n this.$refs.file.click();\n },\n onFilePicked() {\n //read the image file\n this.$store.dispatch(\"readFile\", \"setImageURL\");\n },\n updateProfile(inline) {\n const self = this;\n console.log(\"edit profile\");\n //check user sent\n if (self.display_name.length < 2) {\n self.$store.commit(\"setAlertMessage\", \"Display name is too short\");\n return;\n }\n\n //check location\n if (self.user_location.length < 2) {\n self.$store.commit(\"setAlertMessage\", \"Your location is too short\");\n return;\n }\n\n //check profile message\n if (self.profile_message.length < 10) {\n self.$store.commit(\"setAlertMessage\", \"profile message is too short\");\n return;\n }\n\n if (self.files) {\n //console.log(\"files to update\", this.photo_url);\n var user = firebase.auth().currentUser;\n if (this.photo_url != null) {\n const self = this;\n const app = self.$f7;\n if (self.determinateLoading) return;\n self.determinateLoading = true;\n let progressBarEl;\n if (inline) {\n progressBarEl = app.progressbar.show(\n \"#demo-determinate-container\",\n 0\n );\n } else {\n progressBarEl = app.progressbar.show(\n 0,\n app.theme === \"md\" ? \"yellow\" : \"blue\"\n );\n }\n\n // console.log(\"this.group_image_url\", this.group_image_url);\n if (this.photo_url != this.group_image_url) {\n var storage = firebase.storage();\n\n var httpReference = storage.refFromURL(this.photo_url);\n\n httpReference\n .delete()\n .then(() => {})\n .catch((err) => {});\n }\n }\n self.$store.dispatch(\"uploadFile\", \"profile/\").then((url) => {\n user\n .updateProfile({\n displayName: self.display_name,\n photoURL: url,\n })\n .then(function () {\n self.$store.commit(\"setPhotoURL\", user.photoURL);\n self.$store.commit(\"setDisplayName\", user.displayName);\n firebase\n .database()\n .ref(\"users/\" + user.uid)\n .update({\n photo_url: user.photoURL,\n name: user.displayName,\n location: self.user_location,\n photoUpload: true,\n profileMessage: self.profile_message,\n });\n self.$store.commit(\n \"setAlertMessage\",\n \"Your profile has been updated\"\n );\n })\n .catch((err) => {\n console.log(err);\n });\n });\n } else {\n var user = firebase.auth().currentUser;\n user\n .updateProfile({\n displayName: self.display_name,\n })\n .then(function () {\n self.$store.commit(\"setDisplayName\", user.displayName);\n\n //update other records.\n // console.log(\"name\", user.displayName);\n // console.log(\"location\", self.user_location);\n // console.log(\"profile\", self.profile_message);\n firebase\n .database()\n .ref(\"users\")\n .child(firebase.auth().currentUser.uid)\n .update({\n name: self.display_name,\n location: self.user_location,\n profileMessage: self.profile_message,\n });\n\n self.$store.commit(\n \"setAlertMessage\",\n \"Your profile has been updated\"\n );\n });\n }\n },\n },\n created() {\n var url = \"https://penpalamerica.com/images/profilepicture.png\";\n this.$store.commit(\"setGroupImageURL\", url);\n\n if (this.photo_url != null) {\n this.$store.commit(\"setImageURL\", this.photo_url);\n }\n },\n};\n</script>\n\n<style scoped>\n.wrapper {\n text-align: center;\n}\n\n.image--cover {\n width: 150px;\n height: 150px;\n border-radius: 50%;\n margin: 10px;\n object-fit: cover;\n object-position: center;\n}\n\n.align-center {\n margin-top: 5px;\n margin-left: 5px;\n margin-right: 5px;\n position: relative;\n}\n</style>\n","import { render, staticRenderFns } from \"./editprofile.vue?vue&type=template&id=fbed3cf8&scoped=true&\"\nimport script from \"./editprofile.vue?vue&type=script&lang=js&\"\nexport * from \"./editprofile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./editprofile.vue?vue&type=style&index=0&id=fbed3cf8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fbed3cf8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"editprofile\"}},[_c('f7-navbar',{attrs:{\"title\":\"Edit Profile\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('img',{staticClass:\"image--cover\",attrs:{\"src\":_vm.image_url,\"alt\":\"\"},on:{\"click\":_vm.launchFilePicker}})]),_vm._v(\" \"),_c('div',{staticClass:\"align-center\"},[_c('div',{staticClass:\"list inline-labels no-hairlines-md\"},[_c('ul',[_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Display Name\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":\"Display name\",\"required\":\"\",\"validate\":\"\"},domProps:{\"value\":_vm.display_name},on:{\"input\":function($event){_vm.display_name = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Your Location\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":\"Enter Your Location\",\"required\":\"\",\"validate\":\"\"},domProps:{\"value\":_vm.user_location},on:{\"input\":function($event){_vm.user_location = $event.target.value}}}),_vm._v(\" \"),_c('span',{staticClass:\"input-clear-button\"})])])]),_vm._v(\" \"),_c('li',{staticClass:\"item-content item-input\"},[_c('div',{staticClass:\"item-media\"},[_c('i',{staticClass:\"icon demo-list-icon\"})]),_vm._v(\" \"),_c('div',{staticClass:\"item-inner\"},[_c('div',{staticClass:\"item-title item-label\"},[_vm._v(\"Profile Message\")]),_vm._v(\" \"),_c('div',{staticClass:\"item-input-wrap\"},[_c('textarea',{staticClass:\"resizable\",attrs:{\"placeholder\":\"Enter Your Profile Message\",\"maxlength\":\"200\"},domProps:{\"value\":_vm.profile_message},on:{\"input\":function($event){_vm.profile_message = $event.target.value}}})])])])])]),_vm._v(\" \"),_c('f7-block',[(_vm.uploadFile > 0)?_c('div',[_c('p',[_c('f7-progressbar',{attrs:{\"progress\":0,\"id\":\"demo-inline-progressbar\"}})],1)]):_vm._e(),_vm._v(\" \"),_c('f7-button',{attrs:{\"raised\":\"\"},on:{\"click\":function($event){return _vm.updateProfile(true)}}},[_vm._v(\"Update Profile\")]),_vm._v(\" \"),_c('input',{ref:\"file\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\"},on:{\"change\":_vm.onFilePicked}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofilepicture.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./editprofilepicture.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"editprofile\">\r\n <div v-if=\"upload_button\">\r\n <f7-navbar title=\"Upload Your Picture\" back-link=\"Back\"></f7-navbar>\r\n </div>\r\n <div v-else>\r\n <f7-navbar title=\"Upload Your Picture\"></f7-navbar>\r\n </div>\r\n <div class=\"wrapper\">\r\n <img\r\n class=\"image--cover\"\r\n :src=\"image_url\"\r\n alt\r\n @click=\"launchFilePicker\"\r\n />\r\n <p style=\"color: blue\" v-if=\"upload_button\">\r\n Click the back button to continue\r\n </p>\r\n <p style=\"color: red\" v-else>\r\n Update Your Profile before chatting with Pals...\r\n </p>\r\n </div>\r\n <div class=\"align-center\">\r\n <f7-block>\r\n <div v-if=\"uploadFile > 0\">\r\n <p>\r\n <f7-progressbar\r\n :progress=\"0\"\r\n id=\"demo-inline-progressbar\"\r\n ></f7-progressbar>\r\n </p>\r\n </div>\r\n <div v-if=\"upload_button\">\r\n <p>Update Profile</p>\r\n </div>\r\n\r\n <div v-else>\r\n <f7-button raised @click=\"updateProfile(true)\"\r\n >Update Profile</f7-button\r\n >\r\n </div>\r\n\r\n <div>\r\n <br /><br />\r\n <f7-button raised @click=\"signOut(true)\">Sign Out</f7-button>\r\n </div>\r\n\r\n <input\r\n type=\"file\"\r\n ref=\"file\"\r\n style=\"display: none\"\r\n @change=\"onFilePicked\"\r\n />\r\n </f7-block>\r\n </div>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport firebase from \"firebase\";\r\nimport { mixin } from \"../../js/mixin\";\r\n\r\nexport default {\r\n mixins: [mixin],\r\n props: {\r\n f7router: {},\r\n },\r\n\r\n data() {\r\n return {\r\n name: null,\r\n email: null,\r\n password: null,\r\n };\r\n },\r\n computed: {\r\n upload_button() {\r\n return this.$store.getters.upload_button;\r\n },\r\n group_image_url() {\r\n return this.$store.getters.group_image_url;\r\n },\r\n uploadFile: {\r\n get: function () {\r\n return this.$store.getters.uploadFile;\r\n },\r\n set: function (newValue) {\r\n this.$store.commit(\"setUploadFile\", newValue);\r\n },\r\n },\r\n image_url() {\r\n return this.$store.getters.image_url;\r\n },\r\n files() {\r\n return this.$store.getters.files;\r\n },\r\n photo_url() {\r\n return this.$store.getters.photo_url;\r\n },\r\n },\r\n watch: {\r\n uploadFile(value) {\r\n if (value > 0) {\r\n const self = this;\r\n const app = self.$f7;\r\n app.progressbar.set(\"#demo-inline-progressbar\", value);\r\n }\r\n if (value > 99) {\r\n this.$store.commit(\"setUploadFile\", 0);\r\n }\r\n },\r\n },\r\n\r\n methods: {\r\n launchFilePicker() {\r\n this.$refs.file.click();\r\n },\r\n\r\n signOut() {\r\n //read the image file\r\n this.$store.dispatch(\"signOut\");\r\n },\r\n onFilePicked() {\r\n //read the image file\r\n this.$store.dispatch(\"readFile\", \"setImageURL\");\r\n },\r\n updateProfile(inline) {\r\n const self = this;\r\n // console.log(\"edit profile\");\r\n //check user sent\r\n\r\n if (self.files) {\r\n //console.log(\"files to update\", this.photo_url);\r\n var user = firebase.auth().currentUser;\r\n if (this.photo_url != null) {\r\n const self = this;\r\n const app = self.$f7;\r\n if (self.determinateLoading) return;\r\n self.determinateLoading = true;\r\n let progressBarEl;\r\n if (inline) {\r\n progressBarEl = app.progressbar.show(\r\n \"#demo-determinate-container\",\r\n 0\r\n );\r\n } else {\r\n progressBarEl = app.progressbar.show(\r\n 0,\r\n app.theme === \"md\" ? \"yellow\" : \"blue\"\r\n );\r\n }\r\n\r\n // console.log(\"this.group_image_url\", this.group_image_url);\r\n if (this.photo_url != this.group_image_url) {\r\n var storage = firebase.storage();\r\n // console.log(\"nosa i am here\", this.photo_url);\r\n var httpReference = storage.refFromURL(this.photo_url);\r\n\r\n httpReference\r\n .delete()\r\n .then(() => {})\r\n .catch((err) => {});\r\n }\r\n }\r\n self.$store.dispatch(\"uploadFile\", \"profile\").then((url) => {\r\n user\r\n .updateProfile({\r\n //displayName: self.display_name,\r\n photoURL: url,\r\n })\r\n .then(function () {\r\n self.$store.commit(\"setPhotoURL\", user.photoURL);\r\n //self.$store.commit(\"setDisplayName\", user.displayName);\r\n firebase\r\n .database()\r\n .ref(\"users/\" + user.uid)\r\n .update({\r\n photo_url: user.photoURL,\r\n //name: user.displayName,\r\n //location: self.user_location,\r\n photoUpload: true,\r\n //profileMessage: self.profile_message,\r\n });\r\n\r\n self.$store.commit(\r\n \"setAlertMessage\",\r\n \"Your profile has been updated. Please sign in again to continue...\"\r\n );\r\n self.$store.commit(\"setSignedIn\", false);\r\n // self.$f7router.navigate(\"/members/\");\r\n\r\n //self.$f7.views.main.router(\"/members/\");\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n });\r\n } else {\r\n self.$store.commit(\r\n \"setAlertMessage\",\r\n \"Please upload your picture to continue\"\r\n );\r\n }\r\n },\r\n },\r\n\r\n created() {\r\n var url =\r\n \"https://firebasestorage.googleapis.com/v0/b/citygists-8f05f.appspot.com/o/defaultprofile%2Fprofilepicture.png?alt=media&token=7f5eac33-624c-4c67-b586-e4e48a312d3e\";\r\n this.$store.commit(\"setGroupImageURL\", url);\r\n\r\n if (this.photo_url != null) {\r\n this.$store.commit(\"setImageURL\", this.photo_url);\r\n }\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.wrapper {\r\n text-align: center;\r\n}\r\n\r\n.image--cover {\r\n width: 150px;\r\n height: 150px;\r\n border-radius: 50%;\r\n margin: 10px;\r\n object-fit: cover;\r\n object-position: center;\r\n}\r\n\r\n.align-center {\r\n margin-top: 5px;\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n position: relative;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./editprofilepicture.vue?vue&type=template&id=33f83056&scoped=true&\"\nimport script from \"./editprofilepicture.vue?vue&type=script&lang=js&\"\nexport * from \"./editprofilepicture.vue?vue&type=script&lang=js&\"\nimport style0 from \"./editprofilepicture.vue?vue&type=style&index=0&id=33f83056&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33f83056\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"editprofile\"}},[(_vm.upload_button)?_c('div',[_c('f7-navbar',{attrs:{\"title\":\"Upload Your Picture\",\"back-link\":\"Back\"}})],1):_c('div',[_c('f7-navbar',{attrs:{\"title\":\"Upload Your Picture\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"wrapper\"},[_c('img',{staticClass:\"image--cover\",attrs:{\"src\":_vm.image_url,\"alt\":\"\"},on:{\"click\":_vm.launchFilePicker}}),_vm._v(\" \"),(_vm.upload_button)?_c('p',{staticStyle:{\"color\":\"blue\"}},[_vm._v(\"\\n Click the back button to continue\\n \")]):_c('p',{staticStyle:{\"color\":\"red\"}},[_vm._v(\"\\n Update Your Profile before chatting with Pals...\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"align-center\"},[_c('f7-block',[(_vm.uploadFile > 0)?_c('div',[_c('p',[_c('f7-progressbar',{attrs:{\"progress\":0,\"id\":\"demo-inline-progressbar\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.upload_button)?_c('div',[_c('p',[_vm._v(\"Update Profile\")])]):_c('div',[_c('f7-button',{attrs:{\"raised\":\"\"},on:{\"click\":function($event){return _vm.updateProfile(true)}}},[_vm._v(\"Update Profile\")])],1),_vm._v(\" \"),_c('div',[_c('br'),_c('br'),_vm._v(\" \"),_c('f7-button',{attrs:{\"raised\":\"\"},on:{\"click\":function($event){return _vm.signOut(true)}}},[_vm._v(\"Sign Out\")])],1),_vm._v(\" \"),_c('input',{ref:\"file\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\"},on:{\"change\":_vm.onFilePicked}})])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./phoneverify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./phoneverify.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"verifyphonenumber\" no-swipeback login-screen>\r\n <f7-login-screen-title>Verify Your Phone Number</f7-login-screen-title>\r\n <f7-navbar title=\"Phone Verification\" back-link=\"Back\"></f7-navbar>\r\n\r\n <div class=\"align-center\">\r\n <f7-block>\r\n <f7-list no-hairlines-md>\r\n <div class=\"component mb-2\">\r\n <VuePhoneNumberInput\r\n id=\"phoneNumber1\"\r\n v-model=\"phonenumber\"\r\n color=\"dodgerblue\"\r\n :dark=\"dark\"\r\n :disabled=\"disabled\"\r\n :ignored-countries=\"countriesIgnored\"\r\n :preferred-countries=\"countriesList\"\r\n :loader=\"hasLoaderActive\"\r\n clearable\r\n :error=\"hasErrorActive\"\r\n class=\"mb-2\"\r\n @update=\"onUpdate\"\r\n />\r\n <b>Phone number</b>\r\n : {{ results.formattedNumber }}\r\n </div>\r\n <br />\r\n <f7-button fill @click=\"sendOtp\">Get OTP</f7-button>\r\n <div id=\"recaptcha-container\"></div>\r\n\r\n <f7-list-input\r\n :value=\"otp\"\r\n @input=\"otp = $event.target.value\"\r\n label=\"Enter OTP Received\"\r\n type=\"text\"\r\n placeholder=\"Enter OTP\"\r\n clear-button\r\n ></f7-list-input>\r\n </f7-list>\r\n\r\n <f7-button fill color=\"blue\" @click=\"verifyOtp\">Verify</f7-button>\r\n <br />\r\n <f7-button fill color=\"blue\" @click=\"sendOtp()\">Resend OTP</f7-button>\r\n </f7-block>\r\n </div>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport VuePhoneNumberInput from \"vue-phone-number-input\";\r\nimport \"vue-phone-number-input/dist/vue-phone-number-input.css\";\r\n\r\nimport { setInterval, clearInterval } from \"timers\";\r\nimport { mixin } from \"../../js/mixin\";\r\nimport firebase from \"firebase\";\r\nimport {\r\n f7Page,\r\n f7LoginScreenTitle,\r\n f7List,\r\n f7ListItem,\r\n f7ListButton,\r\n f7BlockFooter,\r\n f7ListInput,\r\n} from \"framework7-vue\";\r\n\r\nexport default {\r\n components: {\r\n VuePhoneNumberInput,\r\n f7Page,\r\n f7LoginScreenTitle,\r\n f7List,\r\n f7ListItem,\r\n f7ListButton,\r\n f7BlockFooter,\r\n f7ListInput,\r\n },\r\n data() {\r\n return {\r\n confirmationResult: null,\r\n phonenumber: null,\r\n phoneNumber2: null,\r\n phoneNumber3: \"0665656565\",\r\n defaultCountry: \"\",\r\n countriesList: [],\r\n countriesIgnored: [],\r\n translations: {\r\n countrySelectorLabel: \"Code pays\",\r\n countrySelectorError: \"Choisir un pays\",\r\n phoneNumberLabel: \"Numéro de téléphone\",\r\n },\r\n results: {},\r\n results2: {},\r\n results3: {},\r\n dark: false,\r\n disabled: false,\r\n hasLoaderActive: false,\r\n hasErrorActive: false,\r\n status: false,\r\n phNo: \"\",\r\n appVerifier: \"\",\r\n otp: \"\",\r\n };\r\n },\r\n methods: {\r\n getOS() {\r\n // console.log(\"getos\");\r\n var userAgent = window.navigator.userAgent,\r\n platform = window.navigator.platform,\r\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\r\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\r\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\r\n os = null;\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = \"Mac OS\";\r\n } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n os = \"iOS\";\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = \"Windows\";\r\n } else if (/Android/.test(userAgent)) {\r\n os = \"Android\";\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = \"Linux\";\r\n }\r\n\r\n return os;\r\n },\r\n\r\n getCountryName(countryCode) {\r\n var country = \"\";\r\n switch (countryCode) {\r\n case \"AF\":\r\n country = \"Afghanistan\";\r\n break;\r\n case \"AL\":\r\n country = \"Albania\";\r\n break;\r\n case \"DZ\":\r\n country = \"Algeria\";\r\n break;\r\n case \"AS\":\r\n country = \"American Samoa\";\r\n break;\r\n case \"AD\":\r\n country = \"Andorra\";\r\n break;\r\n case \"AO\":\r\n country = \"Angola\";\r\n break;\r\n case \"AI\":\r\n country = \"Anguilla\";\r\n break;\r\n case \"AQ\":\r\n country = \"Antarctica\";\r\n break;\r\n case \"AG\":\r\n country = \"Antigua and Barbuda\";\r\n break;\r\n case \"AR\":\r\n country = \"Argentina\";\r\n break;\r\n case \"AM\":\r\n country = \"Armenia\";\r\n break;\r\n case \"AW\":\r\n country = \"Aruba\";\r\n break;\r\n case \"AU\":\r\n country = \"Australia\";\r\n break;\r\n case \"AT\":\r\n country = \"Austria\";\r\n break;\r\n case \"AZ\":\r\n country = \"Azerbaijan\";\r\n break;\r\n case \"BS\":\r\n country = \"Bahamas\";\r\n break;\r\n case \"BH\":\r\n country = \"Bahrain\";\r\n break;\r\n case \"BD\":\r\n country = \"Bangladesh\";\r\n break;\r\n case \"BB\":\r\n country = \"Barbados\";\r\n break;\r\n case \"BY\":\r\n country = \"Belarus\";\r\n break;\r\n case \"BE\":\r\n country = \"Belgium\";\r\n break;\r\n case \"BZ\":\r\n country = \"Belize\";\r\n break;\r\n case \"BJ\":\r\n country = \"Benin\";\r\n break;\r\n case \"BM\":\r\n country = \"Bermuda\";\r\n break;\r\n case \"BT\":\r\n country = \"Bhutan\";\r\n break;\r\n case \"BO\":\r\n country = \"Bolivia\";\r\n break;\r\n case \"BQ\":\r\n country = \"Bonaire\";\r\n break;\r\n case \"BA\":\r\n country = \"Bosnia Herzegovina\";\r\n break;\r\n case \"BW\":\r\n country = \"Botswana\";\r\n break;\r\n case \"IO\":\r\n country = \"Br. Indian Ocean Terr.\";\r\n break;\r\n case \"VG\":\r\n country = \"Br. Virgin Isds\";\r\n break;\r\n case \"BR\":\r\n country = \"Brazil\";\r\n break;\r\n case \"BN\":\r\n country = \"Brunei Darussalam\";\r\n break;\r\n case \"BG\":\r\n country = \"Bulgaria\";\r\n break;\r\n case \"BF\":\r\n country = \"Burkina Faso\";\r\n break;\r\n case \"BI\":\r\n country = \"Burundi\";\r\n break;\r\n case \"CV\":\r\n country = \"Cabo Verde\";\r\n break;\r\n case \"KH\":\r\n country = \"Cambodia\";\r\n break;\r\n case \"CM\":\r\n country = \"Cameroon\";\r\n break;\r\n case \"CA\":\r\n country = \"Canada\";\r\n break;\r\n case \"KY\":\r\n country = \"Cayman Isds\";\r\n break;\r\n case \"CF\":\r\n country = \"Central African Rep.\";\r\n break;\r\n case \"TD\":\r\n country = \"Chad\";\r\n break;\r\n case \"CL\":\r\n country = \"Chile\";\r\n break;\r\n case \"CN\":\r\n country = \"China\";\r\n break;\r\n case \"HK\":\r\n country = \"China, Hong Kong SAR\";\r\n break;\r\n case \"MO\":\r\n country = \"China, Macao SAR\";\r\n break;\r\n case \"CX\":\r\n country = \"Christmas Isds\";\r\n break;\r\n case \"CC\":\r\n country = \"Cocos Isds\";\r\n break;\r\n case \"CO\":\r\n country = \"Colombia\";\r\n break;\r\n case \"KM\":\r\n country = \"Comoros\";\r\n break;\r\n case \"CG\":\r\n country = \"Congo\";\r\n break;\r\n case \"CK\":\r\n country = \"Cook Isds\";\r\n break;\r\n case \"CR\":\r\n country = \"Costa Rica\";\r\n break;\r\n case \"CI\":\r\n country = \"Côte d'Ivoire\";\r\n break;\r\n case \"HR\":\r\n country = \"Croatia\";\r\n break;\r\n case \"CU\":\r\n country = \"Cuba\";\r\n break;\r\n case \"CW\":\r\n country = \"Curaçao\";\r\n break;\r\n case \"CY\":\r\n country = \"Cyprus\";\r\n break;\r\n case \"CZ\":\r\n country = \"Czechia\";\r\n break;\r\n case \"CS\":\r\n country = \"Czechoslovakia\";\r\n break;\r\n case \"KP\":\r\n country = \"Dem. People's Rep. of Korea\";\r\n break;\r\n case \"CD\":\r\n country = \"Dem. Rep. of the Congo\";\r\n break;\r\n case \"DK\":\r\n country = \"Denmark\";\r\n break;\r\n case \"DJ\":\r\n country = \"Djibouti\";\r\n break;\r\n case \"DM\":\r\n country = \"Dominica\";\r\n break;\r\n case \"DO\":\r\n country = \"Dominican Rep.\";\r\n break;\r\n case \"PK\":\r\n country = \"East and West Pakistan\";\r\n break;\r\n case \"EC\":\r\n country = \"Ecuador\";\r\n break;\r\n case \"EG\":\r\n country = \"Egypt\";\r\n break;\r\n case \"SV\":\r\n country = \"El Salvador\";\r\n break;\r\n case \"GQ\":\r\n country = \"Equatorial Guinea\";\r\n break;\r\n case \"ER\":\r\n country = \"Eritrea\";\r\n break;\r\n case \"EE\":\r\n country = \"Estonia\";\r\n break;\r\n case \"ET\":\r\n country = \"Ethiopia\";\r\n break;\r\n case \"EU\":\r\n country = \"EU-28\";\r\n break;\r\n case \"FO\":\r\n country = \"Faeroe Isds\";\r\n break;\r\n case \"FK\":\r\n country = \"Falkland Isds (Malvinas)\";\r\n break;\r\n case \"FJ\":\r\n country = \"Fiji\";\r\n break;\r\n case \"FI\":\r\n country = \"Finland\";\r\n break;\r\n case \"YE\":\r\n country = \"Fmr Arab Rep. of Yemen\";\r\n break;\r\n case \"DD\":\r\n country = \"Fmr Dem. Rep. of Germany\";\r\n break;\r\n case \"VD\":\r\n country = \"Fmr Dem. Rep. of Vietnam\";\r\n break;\r\n case \"YD\":\r\n country = \"Fmr Dem. Yemen\";\r\n break;\r\n case \"ET\":\r\n country = \"Fmr Ethiopia\";\r\n break;\r\n case \"DE\":\r\n country = \"Fmr Fed. Rep. of Germany\";\r\n break;\r\n case \"PC\":\r\n country = \"Fmr Pacific Isds\";\r\n break;\r\n case \"PA\":\r\n country = \"Fmr Panama, excl.Canal Zone\";\r\n break;\r\n case \"PZ\":\r\n country = \"Fmr Panama-Canal-Zone\";\r\n break;\r\n case \"VN\":\r\n country = \"Fmr Rep. of Vietnam\";\r\n break;\r\n case \"SD\":\r\n country = \"Fmr Sudan\";\r\n break;\r\n case \"SU\":\r\n country = \"Fmr USSR\";\r\n break;\r\n case \"YU\":\r\n country = \"Fmr Yugoslavia\";\r\n break;\r\n case \"FQ\":\r\n country = \"Fr. South Antarctic Terr.\";\r\n break;\r\n case \"FR\":\r\n country = \"France\";\r\n break;\r\n case \"GF\":\r\n country = \"French Guiana\";\r\n break;\r\n case \"PF\":\r\n country = \"French Polynesia\";\r\n break;\r\n case \"FM\":\r\n country = \"FS Micronesia\";\r\n break;\r\n case \"GA\":\r\n country = \"Gabon\";\r\n break;\r\n case \"GM\":\r\n country = \"Gambia\";\r\n break;\r\n case \"GE\":\r\n country = \"Georgia\";\r\n break;\r\n case \"DE\":\r\n country = \"Germany\";\r\n break;\r\n case \"GH\":\r\n country = \"Ghana\";\r\n break;\r\n case \"GI\":\r\n country = \"Gibraltar\";\r\n break;\r\n case \"GR\":\r\n country = \"Greece\";\r\n break;\r\n case \"GL\":\r\n country = \"Greenland\";\r\n break;\r\n case \"GD\":\r\n country = \"Grenada\";\r\n break;\r\n case \"GP\":\r\n country = \"Guadeloupe\";\r\n break;\r\n case \"GU\":\r\n country = \"Guam\";\r\n break;\r\n case \"GT\":\r\n country = \"Guatemala\";\r\n break;\r\n case \"GN\":\r\n country = \"Guinea\";\r\n break;\r\n case \"GW\":\r\n country = \"Guinea-Bissau\";\r\n break;\r\n case \"GY\":\r\n country = \"Guyana\";\r\n break;\r\n case \"HT\":\r\n country = \"Haiti\";\r\n break;\r\n case \"HM\":\r\n country = \"Heard Island and McDonald Islands\";\r\n break;\r\n case \"VA\":\r\n country = \"Holy See (Vatican City State)\";\r\n break;\r\n case \"HN\":\r\n country = \"Honduras\";\r\n break;\r\n case \"HU\":\r\n country = \"Hungary\";\r\n break;\r\n case \"IS\":\r\n country = \"Iceland\";\r\n break;\r\n case \"IN\":\r\n country = \"India\";\r\n break;\r\n case \"ID\":\r\n country = \"Indonesia\";\r\n break;\r\n case \"IR\":\r\n country = \"Iran\";\r\n break;\r\n case \"IQ\":\r\n country = \"Iraq\";\r\n break;\r\n case \"IE\":\r\n country = \"Ireland\";\r\n break;\r\n case \"IL\":\r\n country = \"Israel\";\r\n break;\r\n case \"IT\":\r\n country = \"Italy\";\r\n break;\r\n case \"JM\":\r\n country = \"Jamaica\";\r\n break;\r\n case \"JP\":\r\n country = \"Japan\";\r\n break;\r\n case \"JO\":\r\n country = \"Jordan\";\r\n break;\r\n case \"KZ\":\r\n country = \"Kazakhstan\";\r\n break;\r\n case \"KE\":\r\n country = \"Kenya\";\r\n break;\r\n case \"KI\":\r\n country = \"Kiribati\";\r\n break;\r\n case \"KW\":\r\n country = \"Kuwait\";\r\n break;\r\n case \"KG\":\r\n country = \"Kyrgyzstan\";\r\n break;\r\n case \"LA\":\r\n country = \"Lao People's Dem. Rep.\";\r\n break;\r\n case \"LV\":\r\n country = \"Latvia\";\r\n break;\r\n case \"LB\":\r\n country = \"Lebanon\";\r\n break;\r\n case \"LS\":\r\n country = \"Lesotho\";\r\n break;\r\n case \"LR\":\r\n country = \"Liberia\";\r\n break;\r\n case \"LY\":\r\n country = \"Libya\";\r\n break;\r\n case \"LT\":\r\n country = \"Lithuania\";\r\n break;\r\n case \"LU\":\r\n country = \"Luxembourg\";\r\n break;\r\n case \"MG\":\r\n country = \"Madagascar\";\r\n break;\r\n case \"MW\":\r\n country = \"Malawi\";\r\n break;\r\n case \"MY\":\r\n country = \"Malaysia\";\r\n break;\r\n case \"MV\":\r\n country = \"Maldives\";\r\n break;\r\n case \"ML\":\r\n country = \"Mali\";\r\n break;\r\n case \"MT\":\r\n country = \"Malta\";\r\n break;\r\n case \"MH\":\r\n country = \"Marshall Isds\";\r\n break;\r\n case \"MQ\":\r\n country = \"Martinique\";\r\n break;\r\n case \"MR\":\r\n country = \"Mauritania\";\r\n break;\r\n case \"MU\":\r\n country = \"Mauritius\";\r\n break;\r\n case \"YT\":\r\n country = \"Mayotte\";\r\n break;\r\n case \"MX\":\r\n country = \"Mexico\";\r\n break;\r\n case \"MN\":\r\n country = \"Mongolia\";\r\n break;\r\n case \"ME\":\r\n country = \"Montenegro\";\r\n break;\r\n case \"MS\":\r\n country = \"Montserrat\";\r\n break;\r\n case \"MA\":\r\n country = \"Morocco\";\r\n break;\r\n case \"MZ\":\r\n country = \"Mozambique\";\r\n break;\r\n case \"MM\":\r\n country = \"Myanmar\";\r\n break;\r\n case \"MP\":\r\n country = \"N Mariana Isds\";\r\n break;\r\n case \"NA\":\r\n country = \"Namibia\";\r\n break;\r\n case \"NR\":\r\n country = \"Nauru\";\r\n break;\r\n case \"NP\":\r\n country = \"Nepal\";\r\n break;\r\n case \"AN\":\r\n country = \"Neth Antilles\";\r\n break;\r\n case \"NL\":\r\n country = \"Netherlands\";\r\n break;\r\n case \"NC\":\r\n country = \"New Caledonia\";\r\n break;\r\n case \"NZ\":\r\n country = \"New Zealand\";\r\n break;\r\n case \"NI\":\r\n country = \"Nicaragua\";\r\n break;\r\n case \"NE\":\r\n country = \"Niger\";\r\n break;\r\n case \"NG\":\r\n country = \"Nigeria\";\r\n break;\r\n case \"NU\":\r\n country = \"Niue\";\r\n break;\r\n case \"NF\":\r\n country = \"Norfolk Isds\";\r\n break;\r\n case \"NO\":\r\n country = \"Norway\";\r\n break;\r\n case \"OM\":\r\n country = \"Oman\";\r\n break;\r\n case \"PK\":\r\n country = \"Pakistan\";\r\n break;\r\n case \"PW\":\r\n country = \"Palau\";\r\n break;\r\n case \"PA\":\r\n country = \"Panama\";\r\n break;\r\n case \"PG\":\r\n country = \"Papua New Guinea\";\r\n break;\r\n case \"PY\":\r\n country = \"Paraguay\";\r\n break;\r\n case \"PE\":\r\n country = \"Peru\";\r\n break;\r\n case \"PH\":\r\n country = \"Philippines\";\r\n break;\r\n case \"PN\":\r\n country = \"Pitcairn\";\r\n break;\r\n case \"PL\":\r\n country = \"Poland\";\r\n break;\r\n case \"PT\":\r\n country = \"Portugal\";\r\n break;\r\n case \"QA\":\r\n country = \"Qatar\";\r\n break;\r\n case \"KR\":\r\n country = \"Rep of Korea\";\r\n break;\r\n case \"MD\":\r\n country = \"Rep of Moldova\";\r\n break;\r\n case \"RE\":\r\n country = \"Réunion\";\r\n break;\r\n case \"RO\":\r\n country = \"Romania\";\r\n break;\r\n case \"RU\":\r\n country = \"Russian Federation\";\r\n break;\r\n case \"RW\":\r\n country = \"Rwanda\";\r\n break;\r\n case \"BL\":\r\n country = \"Saint Barthélemy\";\r\n break;\r\n case \"SH\":\r\n country = \"Saint Helena\";\r\n break;\r\n case \"KN\":\r\n country = \"Saint Kitts and Nevis\";\r\n break;\r\n case \"KN\":\r\n country = \"Saint Kitts, Nevis and Anguilla\";\r\n break;\r\n case \"LC\":\r\n country = \"Saint Lucia\";\r\n break;\r\n case \"SX\":\r\n country = \"Saint Maarten\";\r\n break;\r\n case \"PM\":\r\n country = \"Saint Pierre and Miquelon\";\r\n break;\r\n case \"VC\":\r\n country = \"Saint Vincent and the Grenadines\";\r\n break;\r\n case \"WS\":\r\n country = \"Samoa\";\r\n break;\r\n case \"SM\":\r\n country = \"San Marino\";\r\n break;\r\n case \"ST\":\r\n country = \"Sao Tome and Principe\";\r\n break;\r\n case \"SA\":\r\n country = \"Saudi Arabia\";\r\n break;\r\n case \"SN\":\r\n country = \"Senegal\";\r\n break;\r\n case \"RS\":\r\n country = \"Serbia\";\r\n break;\r\n case \"CS\":\r\n country = \"Serbia and Montenegro\";\r\n break;\r\n case \"SC\":\r\n country = \"Seychelles\";\r\n break;\r\n case \"SL\":\r\n country = \"Sierra Leone\";\r\n break;\r\n case \"SG\":\r\n country = \"Singapore\";\r\n break;\r\n case \"SK\":\r\n country = \"Slovakia\";\r\n break;\r\n case \"SI\":\r\n country = \"Slovenia\";\r\n break;\r\n case \"SB\":\r\n country = \"Solomon Isds\";\r\n break;\r\n case \"SO\":\r\n country = \"Somalia\";\r\n break;\r\n case \"ZA\":\r\n country = \"South Africa\";\r\n break;\r\n case \"GS\":\r\n country = \"South Georgia\";\r\n break;\r\n case \"SS\":\r\n country = \"South Sudan\";\r\n break;\r\n case \"ES\":\r\n country = \"Spain\";\r\n break;\r\n case \"LK\":\r\n country = \"Sri Lanka\";\r\n break;\r\n case \"PS\":\r\n country = \"State of Palestine\";\r\n break;\r\n case \"SD\":\r\n country = \"Sudan\";\r\n break;\r\n case \"SR\":\r\n country = \"Suriname\";\r\n break;\r\n case \"SZ\":\r\n country = \"Swaziland\";\r\n break;\r\n case \"SE\":\r\n country = \"Sweden\";\r\n break;\r\n case \"CH\":\r\n country = \"Switzerland\";\r\n break;\r\n case \"SY\":\r\n country = \"Syria\";\r\n break;\r\n case \"TJ\":\r\n country = \"Tajikistan\";\r\n break;\r\n case \"MK\":\r\n country = \"TFYR of Macedonia\";\r\n break;\r\n case \"TH\":\r\n country = \"Thailand\";\r\n break;\r\n case \"TL\":\r\n country = \"Timor-Leste\";\r\n break;\r\n case \"TG\":\r\n country = \"Togo\";\r\n break;\r\n case \"TK\":\r\n country = \"Tokelau\";\r\n break;\r\n case \"TO\":\r\n country = \"Tonga\";\r\n break;\r\n case \"TT\":\r\n country = \"Trinidad and Tobago\";\r\n break;\r\n case \"TN\":\r\n country = \"Tunisia\";\r\n break;\r\n case \"TR\":\r\n country = \"Turkey\";\r\n break;\r\n case \"TM\":\r\n country = \"Turkmenistan\";\r\n break;\r\n case \"TC\":\r\n country = \"Turks and Caicos Isds\";\r\n break;\r\n case \"TV\":\r\n country = \"Tuvalu\";\r\n break;\r\n case \"UG\":\r\n country = \"Uganda\";\r\n break;\r\n case \"UA\":\r\n country = \"Ukraine\";\r\n break;\r\n case \"AE\":\r\n country = \"United Arab Emirates\";\r\n break;\r\n case \"GB\":\r\n country = \"United Kingdom\";\r\n break;\r\n case \"TZ\":\r\n country = \"United Rep. of Tanzania\";\r\n break;\r\n case \"UM\":\r\n country = \"United States Minor Outlying Islands\";\r\n break;\r\n case \"UY\":\r\n country = \"Uruguay\";\r\n break;\r\n case \"VI\":\r\n country = \"US Virgin Isds\";\r\n break;\r\n case \"US\":\r\n country = \"United States\";\r\n break;\r\n case \"UZ\":\r\n country = \"Uzbekistan\";\r\n break;\r\n case \"VU\":\r\n country = \"Vanuatu\";\r\n break;\r\n case \"VE\":\r\n country = \"Venezuela\";\r\n break;\r\n case \"VN\":\r\n country = \"Viet Nam\";\r\n break;\r\n case \"WF\":\r\n country = \"Wallis and Futuna Isds\";\r\n break;\r\n case \"EH\":\r\n country = \"Western Sahara\";\r\n break;\r\n case \"WL\":\r\n country = \"World\";\r\n break;\r\n case \"YE\":\r\n country = \"Yemen\";\r\n break;\r\n case \"ZM\":\r\n country = \"Zambia\";\r\n break;\r\n case \"ZW\":\r\n country = \"Zimbabwe\";\r\n break;\r\n\r\n default:\r\n country = \"Unknown\";\r\n }\r\n return country;\r\n },\r\n onUpdate(payload) {\r\n this.results = payload;\r\n },\r\n onUpdate2(payload) {\r\n this.results2 = payload;\r\n },\r\n onUpdate3(payload) {\r\n this.results3 = payload;\r\n },\r\n sendOtp() {\r\n //console.log(\"result \", this.results);\r\n this.phNo = this.results.formattedNumber;\r\n if (this.phNo.length < 6) {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Invalid Phone Number/OTP Format !\"\r\n );\r\n } else {\r\n //\r\n //let countryCode = \"+234\"; //india\r\n\r\n let phoneNumber = this.phNo;\r\n if (this.getOS() == \"Android\" || this.getOS() == \"iOS\") {\r\n //console.log(\"phone section\");\r\n cordova.plugins.firebase.auth\r\n .verifyPhoneNumber(phoneNumber, 0)\r\n .then((verificationId) => {\r\n // pass verificationId to signInWithVerificationId\r\n this.confirmationResult = verificationId;\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"SMS sent to your mobile Phone\"\r\n );\r\n })\r\n .catch((error) => {\r\n console.log(\"Send SMS error\", error);\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Couldn't verify your phone \" + error.message\r\n );\r\n });\r\n\r\n //let phoneNumber = this.phNo;\r\n } else {\r\n let appVerifier = this.appVerifier;\r\n\r\n firebase\r\n .auth()\r\n .signInWithPhoneNumber(phoneNumber, appVerifier)\r\n .then((confirmationResult) => {\r\n window.confirmationResult = confirmationResult;\r\n // console.log(\"appVerifier \", appVerifier);\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"SMS sent to your mobile Phone\"\r\n );\r\n })\r\n .catch((error) => {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Error ! SMS not sent \" + error.message\r\n );\r\n });\r\n }\r\n }\r\n },\r\n //\r\n verifyOtp() {\r\n if (this.phNo.length < 6 || this.otp.length != 6) {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Invalid Phone Number/OTP Format !\"\r\n );\r\n } else {\r\n //\r\n let vm = this;\r\n let code = this.otp;\r\n if (this.getOS() == \"Android\" || this.getOS() == \"iOS\") {\r\n //console.log(\"phone section\");\r\n cordova.plugins.firebase.auth\r\n .signInWithVerificationId(this.confirmationResult, code)\r\n .then(() => {\r\n //pass verificationId to signInWithVerificationId\r\n var payload = {};\r\n payload.country = this.getCountryName(this.results.countryCode);\r\n payload.phonenumber = this.results.formattedNumber;\r\n var mydata = JSON.stringify(payload);\r\n // console.log(mydata);\r\n this.$store.commit(\"setAlertMessage\", \"Phone Verified\");\r\n this.$f7router.navigate(\"/signup/\" + encodeURIComponent(mydata));\r\n })\r\n .catch((error) => {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Couldn't verify your phone \" + error.message\r\n );\r\n });\r\n } else {\r\n //connsole.log(\"web section\");\r\n window.confirmationResult\r\n .confirm(code)\r\n .then((result) => {\r\n var payload = {};\r\n payload.country = this.getCountryName(this.results.countryCode);\r\n payload.phonenumber = this.results.formattedNumber;\r\n var mydata = JSON.stringify(payload);\r\n // console.log(mydata);\r\n this.$store.commit(\"setAlertMessage\", \"Phone Verified\");\r\n this.$f7router.navigate(\"/signup/\" + encodeURIComponent(mydata));\r\n })\r\n .catch((error) => {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Couldn't verify your phone \" + error.message\r\n );\r\n });\r\n }\r\n }\r\n },\r\n initReCaptcha() {\r\n setTimeout(() => {\r\n let vm = this;\r\n window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(\r\n \"recaptcha-container\",\r\n {\r\n size: \"invisible\",\r\n callback: function (response) {\r\n // reCAPTCHA solved, allow signInWithPhoneNumber.\r\n // ...\r\n },\r\n \"expired-callback\": function () {\r\n // Response expired. Ask user to solve reCAPTCHA again.\r\n // ...\r\n },\r\n }\r\n );\r\n //\r\n this.appVerifier = window.recaptchaVerifier;\r\n }, 1000);\r\n },\r\n },\r\n computed: {\r\n resultsTable() {\r\n //console.log(this.results);\r\n return Object.keys(this.results);\r\n },\r\n resultsTable2() {\r\n return Object.keys(this.results2);\r\n },\r\n resultsTable3() {\r\n return Object.keys(this.results3);\r\n },\r\n },\r\n created() {\r\n this.initReCaptcha();\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.page {\r\n font-family: \"centabel\";\r\n background: url(\"https://penpalamerica.com/images/coversmall.png\") no-repeat\r\n center fixed !important;\r\n background-size: cover !important;\r\n}\r\n.page-one {\r\n width: 30%;\r\n --f7-page-bg-color: red;\r\n margin-top: 50px;\r\n margin-left: 450px;\r\n}\r\n\r\n@media only screen and (min-width: 700px) and (max-width: 1024px) {\r\n .page-one {\r\n width: 70%;\r\n --f7-page-bg-color: red;\r\n margin-top: 400px;\r\n margin-left: 150px;\r\n font-size: 2em;\r\n }\r\n .halfcol {\r\n width: 100%;\r\n height: auto;\r\n font-size: 3em;\r\n }\r\n}\r\n\r\n@media only screen and (max-width: 600px) {\r\n .page-one {\r\n width: 70%;\r\n --f7-page-bg-color: red;\r\n margin-top: 80px;\r\n margin-left: 70px;\r\n }\r\n}\r\n.halfcol {\r\n width: 20%;\r\n}\r\n\r\n@media only screen and (max-width: 600px) {\r\n .halfcol {\r\n width: 70%;\r\n }\r\n}\r\n</style>","import { render, staticRenderFns } from \"./phoneverify.vue?vue&type=template&id=504141de&scoped=true&\"\nimport script from \"./phoneverify.vue?vue&type=script&lang=js&\"\nexport * from \"./phoneverify.vue?vue&type=script&lang=js&\"\nimport style0 from \"./phoneverify.vue?vue&type=style&index=0&id=504141de&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"504141de\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"verifyphonenumber\",\"no-swipeback\":\"\",\"login-screen\":\"\"}},[_c('f7-login-screen-title',[_vm._v(\"Verify Your Phone Number\")]),_vm._v(\" \"),_c('f7-navbar',{attrs:{\"title\":\"Phone Verification\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('div',{staticClass:\"align-center\"},[_c('f7-block',[_c('f7-list',{attrs:{\"no-hairlines-md\":\"\"}},[_c('div',{staticClass:\"component mb-2\"},[_c('VuePhoneNumberInput',{staticClass:\"mb-2\",attrs:{\"id\":\"phoneNumber1\",\"color\":\"dodgerblue\",\"dark\":_vm.dark,\"disabled\":_vm.disabled,\"ignored-countries\":_vm.countriesIgnored,\"preferred-countries\":_vm.countriesList,\"loader\":_vm.hasLoaderActive,\"clearable\":\"\",\"error\":_vm.hasErrorActive},on:{\"update\":_vm.onUpdate},model:{value:(_vm.phonenumber),callback:function ($$v) {_vm.phonenumber=$$v},expression:\"phonenumber\"}}),_vm._v(\" \"),_c('b',[_vm._v(\"Phone number\")]),_vm._v(\"\\n : \"+_vm._s(_vm.results.formattedNumber)+\"\\n \")],1),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.sendOtp}},[_vm._v(\"Get OTP\")]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"recaptcha-container\"}}),_vm._v(\" \"),_c('f7-list-input',{attrs:{\"value\":_vm.otp,\"label\":\"Enter OTP Received\",\"type\":\"text\",\"placeholder\":\"Enter OTP\",\"clear-button\":\"\"},on:{\"input\":function($event){_vm.otp = $event.target.value}}})],1),_vm._v(\" \"),_c('f7-button',{attrs:{\"fill\":\"\",\"color\":\"blue\"},on:{\"click\":_vm.verifyOtp}},[_vm._v(\"Verify\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-button',{attrs:{\"fill\":\"\",\"color\":\"blue\"},on:{\"click\":function($event){return _vm.sendOtp()}}},[_vm._v(\"Resend OTP\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./newversion.vue?vue&type=template&id=5fce0038&\"\nimport script from \"./newversion.vue?vue&type=script&lang=js&\"\nexport * from \"./newversion.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\r\n <f7-page name=\"newupdate\">\r\n <f7-navbar title=\"Update Your App\"></f7-navbar>\r\n <f7-block-title align=\"center\">\r\n <h1>App Update Available</h1>\r\n </f7-block-title>\r\n <f7-block>\r\n <f7-row v-if=\"app_version == 'Android'\">\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" align=\"center\">\r\n <h3>Update App from Google Play</h3>\r\n <p>Please click below link to update Penpal America App</p>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/googleimage.png'\r\n : 'file:./images/googleimage.png'\r\n \"\r\n width=\"50%\"\r\n height=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n <f7-row>\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" v-if=\"app_version == 'iOS'\">\r\n <h3>Update App from App Store</h3>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/appleimage.png'\r\n : 'file:/images/appleimage.png'\r\n \"\r\n width=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n </f7-page>\r\n</template>\r\n<script>\r\nexport default {\r\n data() {\r\n return {\r\n image1: require(\"@/assets/images/googleimage.png\"),\r\n image2: require(\"@/assets/images/appleimage.png\"),\r\n };\r\n },\r\n computed: {\r\n app_version() {\r\n return this.$store.getters.app_version;\r\n },\r\n },\r\n created() {\r\n // console.log(\"hello\");\r\n this.$store.dispatch(\"getAppVersion\");\r\n },\r\n};\r\n</script>","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"newupdate\"}},[_c('f7-navbar',{attrs:{\"title\":\"Update Your App\"}}),_vm._v(\" \"),_c('f7-block-title',{attrs:{\"align\":\"center\"}},[_c('h1',[_vm._v(\"App Update Available\")])]),_vm._v(\" \"),_c('f7-block',[(_vm.app_version == 'Android')?_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[_c('div',{staticClass:\"page-content\",attrs:{\"align\":\"center\"}},[_c('h3',[_vm._v(\"Update App from Google Play\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Please click below link to update Penpal America App\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/googleimage.png'\n : 'file:./images/googleimage.png',\"width\":\"50%\",\"height\":\"50%\"}})])],1)])],1):_vm._e(),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[(_vm.app_version == 'iOS')?_c('div',{staticClass:\"page-content\"},[_c('h3',[_vm._v(\"Update App from App Store\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/appleimage.png'\n : 'file:/images/appleimage.png',\"width\":\"50%\"}})])],1):_vm._e()])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contacts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contacts.vue?vue&type=script&lang=js&\"","<template>\n <f7-page name=\"about\">\n <f7-navbar title=\"Contacts\" back-link=\"Back\"></f7-navbar>\n <f7-list media-list>\n <f7-list-item\n swipeout\n v-for=\"(contact, index) in contacts\"\n :key=\"index\"\n :title=\"contact.name\"\n >\n <span slot=\"subtitle\" v-if=\"contact.userStatus == 'online'\">\n <font color=\"green\">online</font>\n </span>\n <span slot=\"subtitle\" v-else>\n <font color=\"grey\">offline</font>\n </span>\n <span\n slot=\"after-title\"\n v-if=\"contact.userType == 2 || contact.userType == 3\"\n >Moderator</span\n >\n <span slot=\"footer\" v-if=\"contact.userStatus == 'offline'\">\n <font size=\"1\" color=\"grey\"\n >{{ moment(contact.lastSeen).format(\"LLL\") }};</font\n >\n </span>\n <img class=\"small-avatar\" slot=\"media\" :src=\"contact.photo_url\" />\n </f7-list-item>\n </f7-list>\n </f7-page>\n</template>\n\n<script>\nimport firebase from \"firebase\";\nimport moment from \"moment\";\n\nexport default {\n computed: {\n contacts() {\n return this.$store.getters.contacts;\n },\n },\n methods: {\n addFrd(frd) {\n var request = {};\n request.sender = firebase.auth().currentUser.uid;\n request.recipient = frd.uid;\n console.log(\"request\", request);\n this.$store.dispatch(\"sendRequest\", request);\n },\n },\n\n created() {\n this.$store.dispatch(\"getAllUsers\");\n },\n};\n</script>\n\n<style scoped>\n.small-avatar {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n}\n</style>\n","import { render, staticRenderFns } from \"./contacts.vue?vue&type=template&id=38b09e4b&scoped=true&\"\nimport script from \"./contacts.vue?vue&type=script&lang=js&\"\nexport * from \"./contacts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./contacts.vue?vue&type=style&index=0&id=38b09e4b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38b09e4b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"}},[_c('f7-navbar',{attrs:{\"title\":\"Contacts\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-list',{attrs:{\"media-list\":\"\"}},_vm._l((_vm.contacts),function(contact,index){return _c('f7-list-item',{key:index,attrs:{\"swipeout\":\"\",\"title\":contact.name}},[(contact.userStatus == 'online')?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_c('font',{attrs:{\"color\":\"green\"}},[_vm._v(\"online\")])],1):_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_c('font',{attrs:{\"color\":\"grey\"}},[_vm._v(\"offline\")])],1),_vm._v(\" \"),(contact.userType == 2 || contact.userType == 3)?_c('span',{attrs:{\"slot\":\"after-title\"},slot:\"after-title\"},[_vm._v(\"Moderator\")]):_vm._e(),_vm._v(\" \"),(contact.userStatus == 'offline')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"size\":\"1\",\"color\":\"grey\"}},[_vm._v(_vm._s(_vm.moment(contact.lastSeen).format(\"LLL\"))+\";\")])],1):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"small-avatar\",attrs:{\"slot\":\"media\",\"src\":contact.photo_url},slot:\"media\"})])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pay4me.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pay4me.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"about\">\r\n <f7-navbar title=\"Gift Program\" back-link=\"Back\"></f7-navbar>\r\n <f7-block-title>\r\n <b>Send Me Gifts</b>\r\n </f7-block-title>\r\n <f7-block strong>\r\n <p>You are about to send Gift to {{this.friend.name}}</p>\r\n <p>Select from the options below: Bronze, Silver or Gold</p>\r\n </f7-block>\r\n <!--\r\n <f7-block>\r\n <f7-button fill @click=\"payBronze\">\r\n <font color=\"#cd7f32\">Pay Bronze (N1,000)</font>\r\n </f7-button>\r\n </f7-block>\r\n <f7-block>\r\n <f7-button fill @click=\"paySilver\">\r\n <font color=\"#C0C0C0\">Pay Silver (N3,000)</font>\r\n </f7-button>\r\n </f7-block>\r\n <f7-block>\r\n <f7-button fill @click=\"payGold\">\r\n <font color=\"#DAA520\">Pay Gold (N5,000)</font>\r\n </f7-button>\r\n </f7-block>\r\n -->\r\n <div v-if=\"this.user_country=='Nigeria'\">\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount1\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"NGN\"\r\n country=\"NG\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Bronze Gift (N1,000)</i>\r\n </Rave>\r\n </f7-block>\r\n\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount2\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"NGN\"\r\n country=\"NG\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Silver Gift (N3,000)</i>\r\n </Rave>\r\n </f7-block>\r\n\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount3\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"NGN\"\r\n country=\"NG\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Gold Gift (N5,000)</i>\r\n </Rave>\r\n </f7-block>\r\n </div>\r\n\r\n <div v-else>\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount4\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"USD\"\r\n country=\"US\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Bronze Gift ($2.00)</i>\r\n </Rave>\r\n </f7-block>\r\n\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount5\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"USD\"\r\n country=\"US\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Silver Gift ($5.00)</i>\r\n </Rave>\r\n </f7-block>\r\n\r\n <f7-block>\r\n <Rave\r\n :email=\"email\"\r\n :amount=\"amount6\"\r\n :reference=\"reference\"\r\n :rave-key=\"raveKey\"\r\n :callback=\"callback\"\r\n :close=\"close\"\r\n :metadata=\"meta\"\r\n :subaccounts=\"subaccounts\"\r\n :paymentPlan=\"plan\"\r\n :customerFirstname=\"fname\"\r\n :customerLastname=\"lname\"\r\n paymentOptions=\"card,barter,account,ussd\"\r\n hostedPayemt=\"1\"\r\n customTitle=\"Swift Alliance Ltd\"\r\n currency=\"USD\"\r\n country=\"US\"\r\n style-class=\"paymentbtn\"\r\n >\r\n <i>Send Gold Gift ($10.00)</i>\r\n </Rave>\r\n </f7-block>\r\n </div>\r\n\r\n <f7-block>\r\n <div align=\"center\" v-if=\"payment_status\">\r\n <span>Payment {{payment_status}}</span>\r\n </div>\r\n </f7-block>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport Rave from \"vue-ravepayment\";\r\nimport firebase from \"firebase\";\r\nimport moment from \"moment\";\r\nimport message from \"framework7-vue/components/message\";\r\n\r\n//import paystack from \"vue-paystack\";\r\nexport default {\r\n components: {\r\n //paystack\r\n Rave,\r\n },\r\n data() {\r\n return {\r\n raveKey: \"FLWPUBK-581258c33a65e85bc6116e0596a71662-X\",\r\n //raveKey: \"FLWPUBK_TEST-661c78c02fd3395e2bbd31b17fc61920-X\",\r\n email: \"\",\r\n amount1: 100,\r\n amount2: 3000,\r\n amount3: 5000,\r\n amount4: 2,\r\n amount5: 5,\r\n amount6: 10,\r\n plan: 1000,\r\n fname: \"\",\r\n lname: \"\",\r\n subaccounts: [],\r\n country: \"NG\",\r\n currency: \"NGN\",\r\n meta: [\r\n {\r\n metaname: \"Swift\",\r\n metavalue: \"Swift Alliance\",\r\n },\r\n ],\r\n sub: [\r\n {\r\n id: \"1324\",\r\n },\r\n {\r\n id: \"1221\",\r\n },\r\n ],\r\n\r\n payment_status: null,\r\n friend: null,\r\n friend_Details: null,\r\n };\r\n },\r\n computed: {\r\n reference() {\r\n return this.$store.getters.reference;\r\n },\r\n user_details() {\r\n return this.$store.getters.user_details;\r\n },\r\n user_country() {\r\n return this.$store.getters.user_country;\r\n },\r\n },\r\n methods: {\r\n payBronze() {},\r\n paySilver() {},\r\n payGold() {},\r\n callback: function (response) {\r\n console.log(response);\r\n\r\n if (\r\n (response.respcode == \"00\" &&\r\n response.respmsg == \"Approved. Successful\") ||\r\n (response.respcode == \"00\" && response.respmsg == \"Approved\")\r\n ) {\r\n // console.log(\"correct\");\r\n this.payment_status = response.status;\r\n // console.log(\"Give value to customer\", response.data.data.amount);\r\n // console.log(\"payout\", this.friend.payout);\r\n var old_payout = this.friend.payout;\r\n var pay4me_amount = response.data.data.amount;\r\n var user_pay4me_amount = pay4me_amount * 0.75;\r\n var newpayout = old_payout + user_pay4me_amount;\r\n // console.log(\"newpayout\", newpayout);\r\n //this.$store.dispatch(\"getUserPayout\");\r\n this.$store.dispatch(\"getReference\");\r\n //this.$f7router.navigate(\"/pay4me/\");\r\n this.payment_status = response.respmsg;\r\n\r\n //send to firebase\r\n var msg = \"You just received Gift amount: \" + user_pay4me_amount;\r\n this.$store.dispatch(\"sendMessage\", {\r\n friend: this.friend,\r\n msg: msg,\r\n img: null,\r\n });\r\n // update payout for receiver\r\n\r\n var user_uid = firebase.auth().currentUser.uid;\r\n firebase\r\n .database()\r\n .ref(\"users/\" + this.friend.uid)\r\n .update({\r\n payout: newpayout,\r\n });\r\n\r\n // update pay4me payout\r\n\r\n var user_uid = firebase.auth().currentUser.uid;\r\n firebase\r\n .database()\r\n .ref(\"pay4mePayout/\" + user_uid)\r\n .push({\r\n friend_uid: this.friend.uid,\r\n friend_email: this.friend.email,\r\n oldPayout: this.friend.payout,\r\n pay4meAmount: pay4me_amount,\r\n userPay4meAmount: user_pay4me_amount,\r\n newPayout: newpayout,\r\n senderName: this.user_details.name,\r\n receiverName: this.friend.name,\r\n });\r\n //send to mysal database\r\n //console.log(\"http\");\r\n var postData = {\r\n userID: this.friend.uid,\r\n email: this.friend.email,\r\n oldPayout: this.friend.payout,\r\n pay4meAmount: pay4me_amount,\r\n userPay4meAmount: user_pay4me_amount,\r\n newPayout: newpayout,\r\n senderName: this.user_details.name,\r\n senderID: firebase.auth().currentUser.uid,\r\n receiverName: this.friend.name,\r\n };\r\n\r\n this.$f7.request.post(\r\n \"https://citygists.com/register/citygistspayout.php\",\r\n postData,\r\n function (data) {\r\n console.log(\"Load was performed\", data);\r\n }\r\n );\r\n }\r\n },\r\n close: function (response) {\r\n //console.log(\"Payment closed\", this.payment_status);\r\n //console.log(\"Payment response\", response);\r\n //console.log(\"Payment refernce\", this.reference);\r\n },\r\n },\r\n\r\n created() {\r\n let param = this.$f7route.params.frd; // decodeURIComponent(this.$f7route.params.frd);\r\n this.friend = JSON.parse(param);\r\n this.friend_Details = this.friend;\r\n //console.log(\"in payme\", this.friend);\r\n this.$store.dispatch(\"getReference\");\r\n this.$store.dispatch(\"getUserDetails\");\r\n this.fname = this.user_details.name;\r\n this.email = this.user_details.email;\r\n this.$store.dispatch(\"getUserCountry\");\r\n },\r\n};\r\n</script>\r\n\r\n\r\n<style scoped>\r\n.paymentbtn {\r\n color: #4169e1;\r\n font-weight: 800;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./pay4me.vue?vue&type=template&id=71c04af6&scoped=true&\"\nimport script from \"./pay4me.vue?vue&type=script&lang=js&\"\nexport * from \"./pay4me.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pay4me.vue?vue&type=style&index=0&id=71c04af6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71c04af6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"}},[_c('f7-navbar',{attrs:{\"title\":\"Gift Program\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block-title',[_c('b',[_vm._v(\"Send Me Gifts\")])]),_vm._v(\" \"),_c('f7-block',{attrs:{\"strong\":\"\"}},[_c('p',[_vm._v(\"You are about to send Gift to \"+_vm._s(this.friend.name))]),_vm._v(\" \"),_c('p',[_vm._v(\"Select from the options below: Bronze, Silver or Gold\")])]),_vm._v(\" \"),(this.user_country=='Nigeria')?_c('div',[_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount1,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"NGN\",\"country\":\"NG\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Bronze Gift (N1,000)\")])])],1),_vm._v(\" \"),_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount2,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"NGN\",\"country\":\"NG\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Silver Gift (N3,000)\")])])],1),_vm._v(\" \"),_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount3,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"NGN\",\"country\":\"NG\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Gold Gift (N5,000)\")])])],1)],1):_c('div',[_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount4,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"USD\",\"country\":\"US\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Bronze Gift ($2.00)\")])])],1),_vm._v(\" \"),_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount5,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"USD\",\"country\":\"US\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Silver Gift ($5.00)\")])])],1),_vm._v(\" \"),_c('f7-block',[_c('Rave',{attrs:{\"email\":_vm.email,\"amount\":_vm.amount6,\"reference\":_vm.reference,\"rave-key\":_vm.raveKey,\"callback\":_vm.callback,\"close\":_vm.close,\"metadata\":_vm.meta,\"subaccounts\":_vm.subaccounts,\"paymentPlan\":_vm.plan,\"customerFirstname\":_vm.fname,\"customerLastname\":_vm.lname,\"paymentOptions\":\"card,barter,account,ussd\",\"hostedPayemt\":\"1\",\"customTitle\":\"Swift Alliance Ltd\",\"currency\":\"USD\",\"country\":\"US\",\"style-class\":\"paymentbtn\"}},[_c('i',[_vm._v(\"Send Gold Gift ($10.00)\")])])],1)],1),_vm._v(\" \"),_c('f7-block',[(_vm.payment_status)?_c('div',{attrs:{\"align\":\"center\"}},[_c('span',[_vm._v(\"Payment \"+_vm._s(_vm.payment_status))])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./members.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./members.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"about\" @page:beforein=\"initHome\">\r\n <f7-navbar title=\"Members\" class=\"navbar color-theme-orange\">\r\n <!-- <div slot=\"right\" @click=\"lock()\" v-if=\"moderator\">Lock</div> -->\r\n <f7-nav-right>\r\n <f7-link\r\n class=\"searchbar-enable\"\r\n data-searchbar=\".searchbar-demo\"\r\n icon-ios=\"f7:search\"\r\n icon-aurora=\"f7:search\"\r\n icon-md=\"material:search\"\r\n color=\"blue\"\r\n ></f7-link>\r\n </f7-nav-right>\r\n\r\n <f7-searchbar\r\n class=\"searchbar-demo\"\r\n expandable\r\n search-container=\".search-list\"\r\n search-in=\".item-title\"\r\n :disable-button=\"!$theme.aurora\"\r\n ></f7-searchbar>\r\n </f7-navbar>\r\n <div v-if=\"!appUpdate\">\r\n <f7-list class=\"searchbar-not-found\">\r\n <f7-list-item title=\"Nothing found\"></f7-list-item>\r\n </f7-list>\r\n <f7-list class=\"search-list searchbar-found\" media-list>\r\n <f7-list-item\r\n swipeout\r\n v-for=\"(contact, index) in contacts\"\r\n :key=\"index\"\r\n :title=\"contact.name\"\r\n @click=\"gotoChat(contact)\"\r\n >\r\n <span slot=\"footer\" v-if=\"contact.userStatus == 'online'\">\r\n <font color=\"green\"><b>online</b></font>\r\n </span>\r\n <span slot=\"footer\" v-else>\r\n <font color=\"grey\">offline</font>\r\n </span>\r\n\r\n <span slot=\"subtitle\" v-if=\"contact.location\">{{\r\n contact.location\r\n }}</span>\r\n <span\r\n slot=\"after-title\"\r\n v-if=\"contact.userType == 2 || contact.userType == 3\"\r\n >Moderator</span\r\n >\r\n\r\n <span slot=\"footer\" v-if=\"contact.userStatus == 'offline'\">\r\n <font size=\"1\" color=\"grey\"\r\n > {{ moment(contact.lastSeen).format(\"LLL\") }};</font\r\n >\r\n </span>\r\n <img class=\"small-avatar\" slot=\"media\" :src=\"contact.photo_url\" />\r\n </f7-list-item>\r\n </f7-list>\r\n\r\n <f7-block>\r\n <f7-row gap>\r\n <f7-col v-if=\"backPage\">\r\n <f7-button fill @click=\"backward\">Left</f7-button>\r\n </f7-col>\r\n\r\n <f7-col v-if=\"topPage\">\r\n <f7-button fill @click=\"topward\">Top</f7-button></f7-col\r\n >\r\n <f7-col v-if=\"bottomPage\">\r\n <f7-button fill @click=\"downward\">Down</f7-button>\r\n </f7-col>\r\n\r\n <f7-col v-if=\"forwardPage\">\r\n <f7-button fill @click=\"forward\">Right</f7-button></f7-col\r\n >\r\n </f7-row>\r\n </f7-block>\r\n </div>\r\n <!-- App Update -->\r\n <div v-else>\r\n <f7-block>\r\n <f7-block-title align=\"center\">\r\n <h1>App Update Available</h1>\r\n </f7-block-title>\r\n <f7-row v-if=\"app_version == 'Android'\">\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" align=\"center\">\r\n <h3>Update App from Google Play</h3>\r\n <p>Please click below link to update Penpal America App</p>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/googleimage.png'\r\n : 'file:./images/googleimage.png'\r\n \"\r\n width=\"50%\"\r\n height=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n <f7-row>\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" v-if=\"app_version == 'iOS'\">\r\n <h3>Update App from App Store</h3>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/appleimage.png'\r\n : 'file:/images/appleimage.png'\r\n \"\r\n width=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n </div>\r\n <!-- end of app update -->\r\n |\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport firebase from \"firebase\";\r\nimport moment from \"moment\";\r\nimport { f7 } from \"framework7-vue\";\r\nexport default {\r\n data() {\r\n return {\r\n moderator: true,\r\n appState: 1,\r\n myAppVersion: 2,\r\n ref: {},\r\n cursor: null,\r\n pageSize: 3,\r\n backPage: false,\r\n forwardPage: true,\r\n topPage: false,\r\n bottomPage: true,\r\n };\r\n },\r\n watch: {\r\n back_page(value) {\r\n if (value != null) {\r\n this.backPage = value;\r\n }\r\n },\r\n\r\n forward_page(value) {\r\n if (value != null) {\r\n this.forwardPage = value;\r\n }\r\n },\r\n\r\n top_page(value) {\r\n if (value != null) {\r\n this.topPage = value;\r\n }\r\n },\r\n\r\n bottom_page(value) {\r\n if (value != null) {\r\n this.bottomPage = value;\r\n }\r\n },\r\n\r\n db_reference(value) {\r\n if (value != null) {\r\n this.ref = value;\r\n //console.log(\"value\", value);\r\n }\r\n //console.log(\"value\", value);\r\n },\r\n db_cursor(value) {\r\n if (value != null) {\r\n this.cursor = value;\r\n // console.log(\"value\", value);\r\n }\r\n },\r\n app_db_version(value) {\r\n //console.log(\"this.app_db_version\", this.app_db_version);\r\n if (this.app_version == \"Android\" || this.app_version == \"iOS\") {\r\n if (this.myAppVersion < value) {\r\n this.$f7router.navigate(\"/newversion/\");\r\n }\r\n }\r\n },\r\n },\r\n\r\n computed: {\r\n appUpdate() {\r\n return this.$store.getters.appUpdate;\r\n },\r\n top_page() {\r\n //console.log(\"top\", this.$store.getters.top_page);\r\n return this.$store.getters.top_page;\r\n },\r\n bottom_page() {\r\n return this.$store.getters.bottom_page;\r\n },\r\n\r\n back_page() {\r\n return this.$store.getters.back_page;\r\n },\r\n forward_page() {\r\n return this.$store.getters.forward_page;\r\n },\r\n db_reference() {\r\n this.ref = this.$store.getters.db_reference;\r\n return this.$store.getters.db_reference;\r\n },\r\n db_cursor() {\r\n return this.$store.getters.db_cursor;\r\n },\r\n app_db_version() {\r\n return this.$store.getters.app_db_version;\r\n },\r\n app_version() {\r\n return this.$store.getters.app_version;\r\n },\r\n contacts() {\r\n return this.$store.getters.contacts;\r\n },\r\n\r\n friends() {\r\n return this.$store.getters.friends;\r\n },\r\n friend_requests() {\r\n return this.$store.getters.friend_requests;\r\n },\r\n },\r\n\r\n methods: {\r\n async onlineUsers() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n // console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"gotoTopPageOnline\", payload);\r\n },\r\n async downward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n // console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"gotoBottomPage\", payload);\r\n },\r\n async topward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n // console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"gotoTopPage\", payload);\r\n },\r\n\r\n async forward() {\r\n console.log(\"more users requested\", this.ref);\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.dbReference = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n //console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"getAllUsersForward\", payload);\r\n },\r\n\r\n async backward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.dbReference = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n payload.back_toggle = this.back_toggle;\r\n console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"getAllUsersBackward\", payload);\r\n },\r\n async checkInternet() {\r\n // console.log(\"members\");\r\n if (window.hasOwnProperty(\"cordova\")) {\r\n let network_status = await this.$store.dispatch(\"checkConnection\");\r\n if (network_status == \"offline\") {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"It seems you are offline. Kindly check internet connection to continue...\"\r\n );\r\n }\r\n }\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n // console.log(\"extra days\");\r\n },\r\n addFrd(frd) {\r\n var request = {};\r\n request.sender = firebase.auth().currentUser.uid;\r\n request.recipient = frd.uid;\r\n console.log(\"request\", request);\r\n this.$store.dispatch(\"sendRequest\", request);\r\n },\r\n gotoChat(frd) {\r\n var frd_string = JSON.stringify(frd);\r\n this.$f7router.navigate(\"/chat/\" + encodeURIComponent(frd_string));\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n },\r\n },\r\n\r\n async created() {\r\n //show dialogue preloader\r\n //const self = this;\r\n //f7.dialog.preloader(\"Loading Members. Please wait...\");\r\n // setTimeout(() => {\r\n // f7.dialog.close();\r\n // }, 2000);\r\n this.checkInternet();\r\n //this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n //console.log(this.pageSize);\r\n //this.ref = firebase.database().ref(\"/users\");\r\n\r\n //var payload = {};\r\n //payload.dbReference = this.ref;\r\n //payload.pageSize = this.pageSize;\r\n //payload.uid = firebase.auth().currentUser.uid;\r\n //this.$store.dispatch(\"getAllUsersNew\", payload);\r\n //console.log(\"tekk me\", this.cursor);\r\n\r\n var photoUpload = await this.$store.dispatch(\"getUserPhotoStatus\");\r\n //console.log(\"photoupload\", photoUpload);\r\n if (!photoUpload) {\r\n this.$f7router.navigate(\"/editprofilepicture/\");\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Please Upload Profile Picture before chatting with others\"\r\n );\r\n return;\r\n }\r\n // console.log(\"you there to do this\");\r\n this.checkInternet();\r\n this.$store.dispatch(\"getAllUsersNew\");\r\n this.$store.dispatch(\"getAppDbVersion\");\r\n this.$store.dispatch(\"getAppVersion\");\r\n // this.$store.dispatch(\"getMyRequests\");\r\n // this.$store.dispatch(\"getMyFriends\");\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.small-avatar {\r\n width: 50px;\r\n height: 50px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n object-position: center;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./members.vue?vue&type=template&id=4a4d072e&scoped=true&\"\nimport script from \"./members.vue?vue&type=script&lang=js&\"\nexport * from \"./members.vue?vue&type=script&lang=js&\"\nimport style0 from \"./members.vue?vue&type=style&index=0&id=4a4d072e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a4d072e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"},on:{\"page:beforein\":_vm.initHome}},[_c('f7-navbar',{staticClass:\"navbar color-theme-orange\",attrs:{\"title\":\"Members\"}},[_c('f7-nav-right',[_c('f7-link',{staticClass:\"searchbar-enable\",attrs:{\"data-searchbar\":\".searchbar-demo\",\"icon-ios\":\"f7:search\",\"icon-aurora\":\"f7:search\",\"icon-md\":\"material:search\",\"color\":\"blue\"}})],1),_vm._v(\" \"),_c('f7-searchbar',{staticClass:\"searchbar-demo\",attrs:{\"expandable\":\"\",\"search-container\":\".search-list\",\"search-in\":\".item-title\",\"disable-button\":!_vm.$theme.aurora}})],1),_vm._v(\" \"),(!_vm.appUpdate)?_c('div',[_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":\"Nothing found\"}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"search-list searchbar-found\",attrs:{\"media-list\":\"\"}},_vm._l((_vm.contacts),function(contact,index){return _c('f7-list-item',{key:index,attrs:{\"swipeout\":\"\",\"title\":contact.name},on:{\"click\":function($event){return _vm.gotoChat(contact)}}},[(contact.userStatus == 'online')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"green\"}},[_c('b',[_vm._v(\"online\")])])],1):_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"grey\"}},[_vm._v(\"offline\")])],1),_vm._v(\" \"),(contact.location)?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_vm._v(_vm._s(contact.location))]):_vm._e(),_vm._v(\" \"),(contact.userType == 2 || contact.userType == 3)?_c('span',{attrs:{\"slot\":\"after-title\"},slot:\"after-title\"},[_vm._v(\"Moderator\")]):_vm._e(),_vm._v(\" \"),(contact.userStatus == 'offline')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"size\":\"1\",\"color\":\"grey\"}},[_vm._v(\" \"+_vm._s(_vm.moment(contact.lastSeen).format(\"LLL\"))+\";\")])],1):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"small-avatar\",attrs:{\"slot\":\"media\",\"src\":contact.photo_url},slot:\"media\"})])}),1),_vm._v(\" \"),_c('f7-block',[_c('f7-row',{attrs:{\"gap\":\"\"}},[(_vm.backPage)?_c('f7-col',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.backward}},[_vm._v(\"Left\")])],1):_vm._e(),_vm._v(\" \"),(_vm.topPage)?_c('f7-col',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.topward}},[_vm._v(\"Top\")])],1):_vm._e(),_vm._v(\" \"),(_vm.bottomPage)?_c('f7-col',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.downward}},[_vm._v(\"Down\")])],1):_vm._e(),_vm._v(\" \"),(_vm.forwardPage)?_c('f7-col',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.forward}},[_vm._v(\"Right\")])],1):_vm._e()],1)],1)],1):_c('div',[_c('f7-block',[_c('f7-block-title',{attrs:{\"align\":\"center\"}},[_c('h1',[_vm._v(\"App Update Available\")])]),_vm._v(\" \"),(_vm.app_version == 'Android')?_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[_c('div',{staticClass:\"page-content\",attrs:{\"align\":\"center\"}},[_c('h3',[_vm._v(\"Update App from Google Play\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Please click below link to update Penpal America App\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/googleimage.png'\n : 'file:./images/googleimage.png',\"width\":\"50%\",\"height\":\"50%\"}})])],1)])],1):_vm._e(),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[(_vm.app_version == 'iOS')?_c('div',{staticClass:\"page-content\"},[_c('h3',[_vm._v(\"Update App from App Store\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/appleimage.png'\n : 'file:/images/appleimage.png',\"width\":\"50%\"}})])],1):_vm._e()])],1)],1)],1),_vm._v(\" \"),_vm._v(\"\\n |\\n\")],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./search.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"about\" @page:beforein=\"initHome\">\r\n <f7-navbar title=\"Search Members\" class=\"navbar color-theme-orange\">\r\n <!-- <div slot=\"right\" @click=\"lock()\" v-if=\"moderator\">Lock</div> -->\r\n <f7-nav-right>\r\n <f7-link\r\n class=\"searchbar-enable\"\r\n data-searchbar=\".searchbar-demo\"\r\n icon-ios=\"f7:search\"\r\n icon-aurora=\"f7:search\"\r\n icon-md=\"material:search\"\r\n color=\"blue\"\r\n ></f7-link>\r\n </f7-nav-right>\r\n <f7-searchbar\r\n class=\"searchbar-demo\"\r\n expandable\r\n search-container=\".search-list\"\r\n search-in=\".item-title\"\r\n :disable-button=\"!$theme.aurora\"\r\n ></f7-searchbar>\r\n </f7-navbar>\r\n <div v-if=\"!appUpdate\">\r\n <div v-if=\"searchResult == 1\">\r\n <f7-list class=\"searchbar-not-found\">\r\n <f7-list-item title=\"Nothing found\"></f7-list-item>\r\n </f7-list>\r\n <f7-list class=\"search-list searchbar-found\" media-list>\r\n <f7-list-item\r\n swipeout\r\n v-for=\"(contact, index) in search_contacts\"\r\n :key=\"index\"\r\n :title=\"contact.name\"\r\n @click=\"gotoChat(contact)\"\r\n >\r\n <span slot=\"footer\" v-if=\"contact.userStatus == 'online'\">\r\n <font color=\"green\"><b>online</b></font>\r\n </span>\r\n <span slot=\"footer\" v-else>\r\n <font color=\"grey\">offline</font>\r\n </span>\r\n\r\n <span slot=\"subtitle\" v-if=\"contact.location\">{{\r\n contact.location\r\n }}</span>\r\n <span\r\n slot=\"after-title\"\r\n v-if=\"contact.userType == 2 || contact.userType == 3\"\r\n >Moderator</span\r\n >\r\n\r\n <span slot=\"footer\" v-if=\"contact.userStatus == 'offline'\">\r\n <font size=\"1\" color=\"grey\"\r\n > {{ moment(contact.lastSeen).format(\"LLL\") }};</font\r\n >\r\n </span>\r\n <img class=\"small-avatar\" slot=\"media\" :src=\"contact.photo_url\" />\r\n </f7-list-item>\r\n </f7-list>\r\n </div>\r\n <div v-if=\"searchResult == 2\" align=\"center\">\r\n <p><font color=\"red\">Sorry No Records Found... </font></p>\r\n </div>\r\n <f7-block class=\"item-media\" align=\"center\">\r\n <p>Search for Users by Status, Names, Location or Country</p>\r\n <f7-row>\r\n <f7-col>\r\n <label class=\"item-radio item-content\">\r\n <!-- Checked by default -->\r\n <input\r\n type=\"radio\"\r\n :name=\"myradio\"\r\n value=\"online\"\r\n @input=\"myradio = $event.target.value\"\r\n checked\r\n />\r\n\r\n <i class=\"icon icon-radio\"></i> </label\r\n ></f7-col>\r\n <f7-col align=\"left\">Search Users Online</f7-col>\r\n </f7-row>\r\n <br />\r\n <f7-row>\r\n <f7-col>\r\n <label class=\"item-radio item-content\">\r\n <!-- Checked by default -->\r\n <input\r\n type=\"radio\"\r\n :name=\"myradio\"\r\n value=\"name\"\r\n @input=\"myradio = $event.target.value\"\r\n />\r\n\r\n <i class=\"icon icon-radio\"></i> </label\r\n ></f7-col>\r\n <f7-col\r\n ><f7-input\r\n :value=\"name\"\r\n @input=\"name = $event.target.value\"\r\n type=\"text\"\r\n placeholder=\"Search By User's Name\"\r\n clear-button\r\n >\r\n </f7-input\r\n ></f7-col>\r\n </f7-row>\r\n <br />\r\n <f7-row>\r\n <f7-col>\r\n <label class=\"item-radio item-content\">\r\n <!-- Checked by default -->\r\n <input\r\n type=\"radio\"\r\n :name=\"myradio\"\r\n value=\"location\"\r\n @input=\"myradio = $event.target.value\"\r\n />\r\n\r\n <i class=\"icon icon-radio\"></i> </label\r\n ></f7-col>\r\n <f7-col\r\n ><f7-input\r\n :value=\"location\"\r\n @input=\"location = $event.target.value\"\r\n type=\"text\"\r\n placeholder=\"Search By Location\"\r\n clear-button\r\n >\r\n </f7-input\r\n ></f7-col>\r\n </f7-row>\r\n <br />\r\n <f7-row>\r\n <f7-col>\r\n <label class=\"item-radio item-content\">\r\n <!-- Checked by default -->\r\n <input\r\n type=\"radio\"\r\n :name=\"myradio\"\r\n value=\"country\"\r\n @input=\"myradio = $event.target.value\"\r\n />\r\n\r\n <i class=\"icon icon-radio\"></i> </label\r\n ></f7-col>\r\n <f7-col>\r\n <f7-input\r\n :value=\"country\"\r\n @input=\"country = $event.target.value\"\r\n type=\"text\"\r\n placeholder=\"Search By Country\"\r\n clear-button\r\n >\r\n </f7-input\r\n ></f7-col>\r\n </f7-row>\r\n </f7-block>\r\n\r\n <f7-block>\r\n <f7-button fill @click=\"searchUsers\">Search Users</f7-button>\r\n </f7-block>\r\n </div>\r\n <!-- End of Page checking for app update -->\r\n\r\n <div v-else>\r\n <f7-block>\r\n <f7-block-title align=\"center\">\r\n <h1>App Update Available</h1>\r\n </f7-block-title>\r\n <f7-row v-if=\"app_version == 'Android'\">\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" align=\"center\">\r\n <h3>Update App from Google Play</h3>\r\n <p>Please click below link to update Penpal America App</p>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/googleimage.png'\r\n : 'file:./images/googleimage.png'\r\n \"\r\n width=\"50%\"\r\n height=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n <f7-row>\r\n <f7-col width=\"100\" medium=\"50\">\r\n <div class=\"page-content\" v-if=\"app_version == 'iOS'\">\r\n <h3>Update App from App Store</h3>\r\n <f7-link\r\n href=\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\"\r\n external\r\n >\r\n <img\r\n :src=\"\r\n $device.desktop\r\n ? '/images/appleimage.png'\r\n : 'file:/images/appleimage.png'\r\n \"\r\n width=\"50%\"\r\n />\r\n </f7-link>\r\n </div>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n </div>\r\n <!-- end of app update -->\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport firebase from \"firebase\";\r\nimport moment from \"moment\";\r\nimport { f7 } from \"framework7-vue\";\r\nexport default {\r\n data() {\r\n return {\r\n moderator: true,\r\n appState: 1,\r\n myAppVersion: 2,\r\n ref: {},\r\n online: null,\r\n myradio: \"online\",\r\n name: null,\r\n location: null,\r\n country: null,\r\n };\r\n },\r\n watch: {\r\n back_page(value) {\r\n if (value != null) {\r\n this.backPage = value;\r\n }\r\n },\r\n\r\n updatePreloader(value) {\r\n if (value == 1) {\r\n console.log(\"proloadValue\", value);\r\n f7.dialog.close();\r\n f7.dialog.preloader(\r\n \"We are almost there. <br>Pulling records if any. <br>Please wait...\"\r\n );\r\n }\r\n },\r\n searchResult(value) {\r\n if (value != null) {\r\n //console.log(\"search\", value);\r\n f7.dialog.close();\r\n }\r\n },\r\n\r\n forward_page(value) {\r\n if (value != null) {\r\n this.forwardPage = value;\r\n }\r\n },\r\n\r\n top_page(value) {\r\n if (value != null) {\r\n this.topPage = value;\r\n }\r\n },\r\n\r\n bottom_page(value) {\r\n if (value != null) {\r\n this.bottomPage = value;\r\n }\r\n },\r\n\r\n db_reference(value) {\r\n if (value != null) {\r\n this.ref = value;\r\n //console.log(\"value\", value);\r\n }\r\n //console.log(\"value\", value);\r\n },\r\n db_cursor(value) {\r\n if (value != null) {\r\n this.cursor = value;\r\n // console.log(\"value\", value);\r\n }\r\n },\r\n app_db_version(value) {\r\n //console.log(\"this.app_db_version\", this.app_db_version);\r\n if (this.app_version == \"Android\" || this.app_version == \"iOS\") {\r\n if (this.myAppVersion < value) {\r\n this.$f7router.navigate(\"/newversion/\");\r\n }\r\n }\r\n },\r\n },\r\n\r\n computed: {\r\n appUpdate() {\r\n return this.$store.getters.appUpdate;\r\n },\r\n updatePreloader() {\r\n return this.$store.getters.updatePreloader;\r\n },\r\n searchResult() {\r\n //console.log(\"top searchresult\", this.$store.getters.searchResult);\r\n return this.$store.getters.searchResult;\r\n },\r\n\r\n top_page() {\r\n //console.log(\"top\", this.$store.getters.top_page);\r\n return this.$store.getters.top_page;\r\n },\r\n bottom_page() {\r\n return this.$store.getters.bottom_page;\r\n },\r\n\r\n back_page() {\r\n return this.$store.getters.back_page;\r\n },\r\n forward_page() {\r\n return this.$store.getters.forward_page;\r\n },\r\n db_reference() {\r\n this.ref = this.$store.getters.db_reference;\r\n return this.$store.getters.db_reference;\r\n },\r\n db_cursor() {\r\n return this.$store.getters.db_cursor;\r\n },\r\n app_db_version() {\r\n return this.$store.getters.app_db_version;\r\n },\r\n app_version() {\r\n return this.$store.getters.app_version;\r\n },\r\n search_contacts() {\r\n return this.$store.getters.search_contacts;\r\n },\r\n\r\n friends() {\r\n return this.$store.getters.friends;\r\n },\r\n friend_requests() {\r\n return this.$store.getters.friend_requests;\r\n },\r\n },\r\n\r\n methods: {\r\n async searchUsers() {\r\n console.log(\"more users requested\");\r\n console.log(this.country);\r\n console.log(this.myradio);\r\n this.$store.commit(\"setSearchResult\", 0);\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n\r\n if (this.myradio == \"online\") {\r\n f7.dialog.preloader(\r\n `Searching for Users Online.<br>This might take long.<br>Please wait...`\r\n );\r\n var response = await this.$store.dispatch(\"searchUsersOnline\", payload);\r\n } // end of name search\r\n\r\n if (this.myradio == \"name\") {\r\n if (this.name != null) {\r\n payload.name = this.name;\r\n f7.dialog.preloader(\r\n `Searching for ${this.name}.<br>This might take long.<br>Please wait...`\r\n );\r\n var response = await this.$store.dispatch(\"searchUsersName\", payload);\r\n } else {\r\n this.$store.commit(\"setAlertMessage\", \"Name field cannot be empty\");\r\n }\r\n } // end of name search\r\n\r\n if (this.myradio == \"location\") {\r\n if (this.location != null) {\r\n payload.location = this.location;\r\n f7.dialog.preloader(\r\n `Searching for ${this.location}.<br>This might take long.<br>Please wait...`\r\n );\r\n var response = await this.$store.dispatch(\r\n \"searchUsersLocation\",\r\n payload\r\n );\r\n } else {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Location field cannot be empty\"\r\n );\r\n }\r\n } //end of location search\r\n\r\n if (this.myradio == \"country\") {\r\n console.log(\"hey\");\r\n if (this.country != null) {\r\n payload.country = this.country;\r\n f7.dialog.preloader(\r\n `Searching for ${this.country}.<br>This might take long.<br>Please wait...`\r\n );\r\n var response = await this.$store.dispatch(\r\n \"searchUsersCountry\",\r\n payload\r\n );\r\n } else {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Country field cannot be empty\"\r\n );\r\n }\r\n } //end of country search\r\n },\r\n async downward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n // console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"gotoBottomPage\", payload);\r\n },\r\n async topward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.ref = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n // console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"gotoTopPage\", payload);\r\n },\r\n\r\n async forward() {\r\n console.log(\"more users requested\", this.ref);\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.dbReference = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n //console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"getAllUsersForward\", payload);\r\n },\r\n\r\n async backward() {\r\n //console.log(\"more users requested\");\r\n this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n var payload = {};\r\n payload.dbReference = this.ref;\r\n payload.cursor = this.cursor;\r\n payload.pageSize = this.pageSize;\r\n payload.uid = firebase.auth().currentUser.uid;\r\n payload.back_toggle = this.back_toggle;\r\n console.log(\"this.cursor\", this.cursor);\r\n this.$store.dispatch(\"getAllUsersBackward\", payload);\r\n },\r\n async checkInternet() {\r\n // console.log(\"members\");\r\n if (window.hasOwnProperty(\"cordova\")) {\r\n let network_status = await this.$store.dispatch(\"checkConnection\");\r\n if (network_status == \"offline\") {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"It seems you are offline. Kindly check internet connection to continue...\"\r\n );\r\n }\r\n }\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n //console.log(\"yesy yesy yesy\");\r\n },\r\n addFrd(frd) {\r\n var request = {};\r\n request.sender = firebase.auth().currentUser.uid;\r\n request.recipient = frd.uid;\r\n console.log(\"request\", request);\r\n this.$store.dispatch(\"sendRequest\", request);\r\n },\r\n gotoChat(frd) {\r\n var frd_string = JSON.stringify(frd);\r\n this.$f7router.navigate(\"/chat/\" + encodeURIComponent(frd_string));\r\n },\r\n //initHome() {\r\n //this.$store.commit(\"setShowTabs\", true);\r\n\r\n //},\r\n },\r\n\r\n async created() {\r\n this.$store.commit(\"setSearchResult\", false);\r\n\r\n //show dialogue preloader\r\n //const self = this;\r\n //f7.dialog.preloader(\"Loading Members. Please wait...\");\r\n // setTimeout(() => {\r\n // f7.dialog.close();\r\n // }, 2000);\r\n this.checkInternet();\r\n //this.pageSize = await this.$store.dispatch(\"getUserPageSize\");\r\n //console.log(this.pageSize);\r\n //this.ref = firebase.database().ref(\"/users\");\r\n\r\n //var payload = {};\r\n //payload.dbReference = this.ref;\r\n //payload.pageSize = this.pageSize;\r\n //payload.uid = firebase.auth().currentUser.uid;\r\n //this.$store.dispatch(\"getAllUsersNew\", payload);\r\n //console.log(\"tekk me\", this.cursor);\r\n\r\n var photoUpload = await this.$store.dispatch(\"getUserPhotoStatus\");\r\n //console.log(\"photoupload\", photoUpload);\r\n if (!photoUpload) {\r\n this.$f7router.navigate(\"/editprofilepicture/\");\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"Please Upload Profile Picture before chatting with others\"\r\n );\r\n return;\r\n }\r\n\r\n this.checkInternet();\r\n //this.$store.dispatch(\"getAllUsersNew\");\r\n //this.$store.dispatch(\"getAppDbVersion\");\r\n //this.$store.dispatch(\"getAppVersion\");\r\n // this.$store.dispatch(\"getMyRequests\");\r\n // this.$store.dispatch(\"getMyFriends\");\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.small-avatar {\r\n width: 50px;\r\n height: 50px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n object-position: center;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./search.vue?vue&type=template&id=0813e8af&scoped=true&\"\nimport script from \"./search.vue?vue&type=script&lang=js&\"\nexport * from \"./search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./search.vue?vue&type=style&index=0&id=0813e8af&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0813e8af\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"},on:{\"page:beforein\":_vm.initHome}},[_c('f7-navbar',{staticClass:\"navbar color-theme-orange\",attrs:{\"title\":\"Search Members\"}},[_c('f7-nav-right',[_c('f7-link',{staticClass:\"searchbar-enable\",attrs:{\"data-searchbar\":\".searchbar-demo\",\"icon-ios\":\"f7:search\",\"icon-aurora\":\"f7:search\",\"icon-md\":\"material:search\",\"color\":\"blue\"}})],1),_vm._v(\" \"),_c('f7-searchbar',{staticClass:\"searchbar-demo\",attrs:{\"expandable\":\"\",\"search-container\":\".search-list\",\"search-in\":\".item-title\",\"disable-button\":!_vm.$theme.aurora}})],1),_vm._v(\" \"),(!_vm.appUpdate)?_c('div',[(_vm.searchResult == 1)?_c('div',[_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":\"Nothing found\"}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"search-list searchbar-found\",attrs:{\"media-list\":\"\"}},_vm._l((_vm.search_contacts),function(contact,index){return _c('f7-list-item',{key:index,attrs:{\"swipeout\":\"\",\"title\":contact.name},on:{\"click\":function($event){return _vm.gotoChat(contact)}}},[(contact.userStatus == 'online')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"green\"}},[_c('b',[_vm._v(\"online\")])])],1):_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"color\":\"grey\"}},[_vm._v(\"offline\")])],1),_vm._v(\" \"),(contact.location)?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_vm._v(_vm._s(contact.location))]):_vm._e(),_vm._v(\" \"),(contact.userType == 2 || contact.userType == 3)?_c('span',{attrs:{\"slot\":\"after-title\"},slot:\"after-title\"},[_vm._v(\"Moderator\")]):_vm._e(),_vm._v(\" \"),(contact.userStatus == 'offline')?_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('font',{attrs:{\"size\":\"1\",\"color\":\"grey\"}},[_vm._v(\" \"+_vm._s(_vm.moment(contact.lastSeen).format(\"LLL\"))+\";\")])],1):_vm._e(),_vm._v(\" \"),_c('img',{staticClass:\"small-avatar\",attrs:{\"slot\":\"media\",\"src\":contact.photo_url},slot:\"media\"})])}),1)],1):_vm._e(),_vm._v(\" \"),(_vm.searchResult == 2)?_c('div',{attrs:{\"align\":\"center\"}},[_c('p',[_c('font',{attrs:{\"color\":\"red\"}},[_vm._v(\"Sorry No Records Found... \")])],1)]):_vm._e(),_vm._v(\" \"),_c('f7-block',{staticClass:\"item-media\",attrs:{\"align\":\"center\"}},[_c('p',[_vm._v(\"Search for Users by Status, Names, Location or Country\")]),_vm._v(\" \"),_c('f7-row',[_c('f7-col',[_c('label',{staticClass:\"item-radio item-content\"},[_c('input',{attrs:{\"type\":\"radio\",\"name\":_vm.myradio,\"value\":\"online\",\"checked\":\"\"},on:{\"input\":function($event){_vm.myradio = $event.target.value}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon icon-radio\"})])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"align\":\"left\"}},[_vm._v(\"Search Users Online\")])],1),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-row',[_c('f7-col',[_c('label',{staticClass:\"item-radio item-content\"},[_c('input',{attrs:{\"type\":\"radio\",\"name\":_vm.myradio,\"value\":\"name\"},on:{\"input\":function($event){_vm.myradio = $event.target.value}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon icon-radio\"})])]),_vm._v(\" \"),_c('f7-col',[_c('f7-input',{attrs:{\"value\":_vm.name,\"type\":\"text\",\"placeholder\":\"Search By User's Name\",\"clear-button\":\"\"},on:{\"input\":function($event){_vm.name = $event.target.value}}})],1)],1),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-row',[_c('f7-col',[_c('label',{staticClass:\"item-radio item-content\"},[_c('input',{attrs:{\"type\":\"radio\",\"name\":_vm.myradio,\"value\":\"location\"},on:{\"input\":function($event){_vm.myradio = $event.target.value}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon icon-radio\"})])]),_vm._v(\" \"),_c('f7-col',[_c('f7-input',{attrs:{\"value\":_vm.location,\"type\":\"text\",\"placeholder\":\"Search By Location\",\"clear-button\":\"\"},on:{\"input\":function($event){_vm.location = $event.target.value}}})],1)],1),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('f7-row',[_c('f7-col',[_c('label',{staticClass:\"item-radio item-content\"},[_c('input',{attrs:{\"type\":\"radio\",\"name\":_vm.myradio,\"value\":\"country\"},on:{\"input\":function($event){_vm.myradio = $event.target.value}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon icon-radio\"})])]),_vm._v(\" \"),_c('f7-col',[_c('f7-input',{attrs:{\"value\":_vm.country,\"type\":\"text\",\"placeholder\":\"Search By Country\",\"clear-button\":\"\"},on:{\"input\":function($event){_vm.country = $event.target.value}}})],1)],1)],1),_vm._v(\" \"),_c('f7-block',[_c('f7-button',{attrs:{\"fill\":\"\"},on:{\"click\":_vm.searchUsers}},[_vm._v(\"Search Users\")])],1)],1):_c('div',[_c('f7-block',[_c('f7-block-title',{attrs:{\"align\":\"center\"}},[_c('h1',[_vm._v(\"App Update Available\")])]),_vm._v(\" \"),(_vm.app_version == 'Android')?_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[_c('div',{staticClass:\"page-content\",attrs:{\"align\":\"center\"}},[_c('h3',[_vm._v(\"Update App from Google Play\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Please click below link to update Penpal America App\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.penpalamerica.penpal\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/googleimage.png'\n : 'file:./images/googleimage.png',\"width\":\"50%\",\"height\":\"50%\"}})])],1)])],1):_vm._e(),_vm._v(\" \"),_c('f7-row',[_c('f7-col',{attrs:{\"width\":\"100\",\"medium\":\"50\"}},[(_vm.app_version == 'iOS')?_c('div',{staticClass:\"page-content\"},[_c('h3',[_vm._v(\"Update App from App Store\")]),_vm._v(\" \"),_c('f7-link',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.chatme24.chatme24\",\"external\":\"\"}},[_c('img',{attrs:{\"src\":_vm.$device.desktop\n ? '/images/appleimage.png'\n : 'file:/images/appleimage.png',\"width\":\"50%\"}})])],1):_vm._e()])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./livescores.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./livescores.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"about\" @page:beforein=\"initHome\">\r\n <f7-navbar\r\n title=\"Live Scores\"\r\n class=\"navbar color-theme-orange\"\r\n back-link=\"Back\"\r\n >\r\n <!-- <div slot=\"right\" @click=\"lock()\" v-if=\"moderator\">Lock</div> -->\r\n <f7-nav-right>\r\n <f7-link\r\n class=\"searchbar-enable\"\r\n data-searchbar=\".searchbar-demo\"\r\n icon-ios=\"f7:search\"\r\n icon-aurora=\"f7:search\"\r\n icon-md=\"material:search\"\r\n color=\"blue\"\r\n ></f7-link>\r\n </f7-nav-right>\r\n <f7-searchbar\r\n class=\"searchbar-demo\"\r\n expandable\r\n search-container=\".search-list\"\r\n search-in=\".item-title\"\r\n :disable-button=\"!$theme.aurora\"\r\n ></f7-searchbar>\r\n </f7-navbar>\r\n <f7-list class=\"searchbar-not-found\">\r\n <f7-list-item title=\"Nothing found\"></f7-list-item>\r\n </f7-list>\r\n <f7-list class=\"search-list searchbar-found\" media-list>\r\n <f7-list-item\r\n swipeout\r\n v-for=\"(score, index) in scores\"\r\n :key=\"index\"\r\n :title=\"score.league\"\r\n >\r\n <span slot=\"title\"><br />{{ score.teamhost | capitalize }}</span>\r\n <span slot=\"title\"> v </span>\r\n <span slot=\"title\">{{ score.teamvisitor | capitalize }}<br /></span>\r\n <span slot=\"subtitle\" v-if=\"index % 2 == 0\">\r\n <f7-badge color=\"green\">{{ score.score }}</f7-badge></span\r\n >\r\n <span slot=\"subtitle\" v-if=\"index % 2 == 1\">\r\n <f7-badge color=\"red\">{{ score.score }}</f7-badge></span\r\n >\r\n <span slot=\"text\" v-if=\"score.matchtime != ''\">\r\n {{ score.matchtime }}'\r\n </span>\r\n\r\n <span slot=\"footer\">\r\n {{ score.matchstatus }}\r\n </span>\r\n </f7-list-item>\r\n </f7-list>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport firebase from \"firebase\";\r\nimport moment from \"moment\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n moderator: true,\r\n appState: 1,\r\n myAppVersion: 2,\r\n scores: [],\r\n };\r\n },\r\n watch: {\r\n app_db_version(value) {\r\n //console.log(\"this.app_db_version\", this.app_db_version);\r\n if (this.app_version == \"Android\" || this.app_version == \"iOS\") {\r\n if (this.myAppVersion < value) {\r\n this.$f7router.navigate(\"/newversion/\");\r\n }\r\n }\r\n },\r\n },\r\n\r\n computed: {\r\n app_db_version() {\r\n return this.$store.getters.app_db_version;\r\n },\r\n app_version() {\r\n return this.$store.getters.app_version;\r\n },\r\n contacts() {\r\n return this.$store.getters.contacts;\r\n },\r\n\r\n friends() {\r\n return this.$store.getters.friends;\r\n },\r\n friend_requests() {\r\n return this.$store.getters.friend_requests;\r\n },\r\n },\r\n\r\n methods: {\r\n async checkInternet() {\r\n // console.log(\"members\");\r\n if (window.hasOwnProperty(\"cordova\")) {\r\n let network_status = await this.$store.dispatch(\"checkConnection\");\r\n if (network_status == \"offline\") {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"It seems you are offline. Kindly check internet connection to continue...\"\r\n );\r\n }\r\n }\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n },\r\n addFrd(frd) {\r\n var request = {};\r\n request.sender = firebase.auth().currentUser.uid;\r\n request.recipient = frd.uid;\r\n console.log(\"request\", request);\r\n this.$store.dispatch(\"sendRequest\", request);\r\n },\r\n gotoChat(frd) {\r\n var frd_string = JSON.stringify(frd);\r\n this.$f7router.navigate(\"/chat/\" + encodeURIComponent(frd_string));\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n },\r\n },\r\n\r\n mounted() {\r\n this.$f7ready((f7) => {\r\n const self = this;\r\n const app = self.$f7;\r\n app.request.get(\r\n \"https://chatme24.com/sportsupdate/goalalert/pullgoals.php\",\r\n function (data) {\r\n var obj = JSON.parse(data);\r\n //console.log(obj);\r\n self.scores = obj;\r\n //console.log(self.scores);\r\n }\r\n );\r\n });\r\n },\r\n created() {\r\n this.checkInternet();\r\n this.$store.dispatch(\"getAllUsers\");\r\n this.$store.dispatch(\"getAppDbVersion\");\r\n this.$store.dispatch(\"getAppVersion\");\r\n // this.$store.dispatch(\"getMyRequests\");\r\n // this.$store.dispatch(\"getMyFriends\");\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.small-avatar {\r\n width: 50px;\r\n height: 50px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n object-position: center;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./livescores.vue?vue&type=template&id=408c7167&scoped=true&\"\nimport script from \"./livescores.vue?vue&type=script&lang=js&\"\nexport * from \"./livescores.vue?vue&type=script&lang=js&\"\nimport style0 from \"./livescores.vue?vue&type=style&index=0&id=408c7167&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"408c7167\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"},on:{\"page:beforein\":_vm.initHome}},[_c('f7-navbar',{staticClass:\"navbar color-theme-orange\",attrs:{\"title\":\"Live Scores\",\"back-link\":\"Back\"}},[_c('f7-nav-right',[_c('f7-link',{staticClass:\"searchbar-enable\",attrs:{\"data-searchbar\":\".searchbar-demo\",\"icon-ios\":\"f7:search\",\"icon-aurora\":\"f7:search\",\"icon-md\":\"material:search\",\"color\":\"blue\"}})],1),_vm._v(\" \"),_c('f7-searchbar',{staticClass:\"searchbar-demo\",attrs:{\"expandable\":\"\",\"search-container\":\".search-list\",\"search-in\":\".item-title\",\"disable-button\":!_vm.$theme.aurora}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":\"Nothing found\"}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"search-list searchbar-found\",attrs:{\"media-list\":\"\"}},_vm._l((_vm.scores),function(score,index){return _c('f7-list-item',{key:index,attrs:{\"swipeout\":\"\",\"title\":score.league}},[_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_c('br'),_vm._v(_vm._s(_vm._f(\"capitalize\")(score.teamhost)))]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(\" v \")]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm._f(\"capitalize\")(score.teamvisitor))),_c('br')]),_vm._v(\" \"),(index % 2 == 0)?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_c('f7-badge',{attrs:{\"color\":\"green\"}},[_vm._v(_vm._s(score.score))])],1):_vm._e(),_vm._v(\" \"),(index % 2 == 1)?_c('span',{attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_c('f7-badge',{attrs:{\"color\":\"red\"}},[_vm._v(_vm._s(score.score))])],1):_vm._e(),_vm._v(\" \"),(score.matchtime != '')?_c('span',{attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(\"\\n \"+_vm._s(score.matchtime)+\"'\\n \")]):_vm._e(),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_vm._v(\"\\n \"+_vm._s(score.matchstatus)+\"\\n \")])])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./standings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./standings.vue?vue&type=script&lang=js&\"","<template>\r\n <f7-page name=\"about\" @page:beforein=\"initHome\">\r\n <f7-navbar\r\n title=\"Club Standings\"\r\n class=\"navbar color-theme-orange\"\r\n back-link=\"Back\"\r\n >\r\n <!-- <div slot=\"right\" @click=\"lock()\" v-if=\"moderator\">Lock</div> -->\r\n <f7-nav-right>\r\n <f7-link\r\n class=\"searchbar-enable\"\r\n data-searchbar=\".searchbar-demo\"\r\n icon-ios=\"f7:search\"\r\n icon-aurora=\"f7:search\"\r\n icon-md=\"material:search\"\r\n color=\"blue\"\r\n ></f7-link>\r\n </f7-nav-right>\r\n <f7-searchbar\r\n class=\"searchbar-demo\"\r\n expandable\r\n search-container=\".search-list\"\r\n search-in=\".item-title\"\r\n :disable-button=\"!$theme.aurora\"\r\n ></f7-searchbar>\r\n </f7-navbar>\r\n <f7-list class=\"searchbar-not-found\">\r\n <f7-list-item title=\"Nothing found\"></f7-list-item>\r\n </f7-list>\r\n\r\n <f7-block-title><b>Premiership</b></f7-block-title>\r\n <f7-block>\r\n <f7-row no-gap>\r\n <f7-col width=\"10\"><b>SN</b></f7-col>\r\n <f7-col width=\"35\"><b>Clubs</b></f7-col>\r\n <f7-col width=\"5\"><b>P</b></f7-col>\r\n <f7-col width=\"5\"><b>W</b></f7-col>\r\n <f7-col width=\"5\"><b>D</b></f7-col>\r\n <f7-col width=\"5\"><b>L</b></f7-col>\r\n <f7-col width=\"5\"><b>GD</b></f7-col>\r\n <f7-col width=\"15\"><b>PTS</b></f7-col>\r\n <f7-col width=\"15\"><b>Last 5</b></f7-col>\r\n </f7-row>\r\n <f7-row no-gap v-for=\"(englishclub, index) in englishclubs\" :key=\"index\">\r\n <f7-col width=\"10\">{{ englishclub.SN }}</f7-col>\r\n <f7-col width=\"35\">{{ englishclub.team }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.P }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.W }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.D }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.L }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.GD }}</f7-col>\r\n <f7-col width=\"5\">{{ englishclub.PTS }}</f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P1 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P1 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P1 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"englishclub.P2 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P2 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P2 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"englishclub.P3 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P3 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P3 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"englishclub.P4 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P4 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P4 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"englishclub.P5 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P5 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"englishclub.P5 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n\r\n <f7-block-title><b>La Liga</b></f7-block-title>\r\n <f7-block>\r\n <f7-row no-gap>\r\n <f7-col width=\"10\"><b>SN</b></f7-col>\r\n <f7-col width=\"35\"><b>Clubs</b></f7-col>\r\n <f7-col width=\"5\"><b>P</b></f7-col>\r\n <f7-col width=\"5\"><b>W</b></f7-col>\r\n <f7-col width=\"5\"><b>D</b></f7-col>\r\n <f7-col width=\"5\"><b>L</b></f7-col>\r\n <f7-col width=\"5\"><b>GD</b></f7-col>\r\n <f7-col width=\"15\"><b>PTS</b></f7-col>\r\n <f7-col width=\"15\"><b>Last 5</b></f7-col>\r\n </f7-row>\r\n <f7-row no-gap v-for=\"(spainclub, index) in spainclubs\" :key=\"index\">\r\n <f7-col width=\"5\">{{ spainclub.SN }}</f7-col>\r\n <f7-col width=\"35\">{{ spainclub.team }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.P }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.W }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.D }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.L }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.GD }}</f7-col>\r\n <f7-col width=\"5\">{{ spainclub.PTS }}</f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"spainclub.P1 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P1 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P1 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"spainclub.P2 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P2 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P2 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"spainclub.P3 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P3 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P3 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"spainclub.P4 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P4 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P4 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"spainclub.P5 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P5 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"spainclub.P5 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n\r\n <f7-block-title><b>France Ligue 1</b></f7-block-title>\r\n <f7-block>\r\n <f7-row no-gap>\r\n <f7-col width=\"10\"><b>SN</b></f7-col>\r\n <f7-col width=\"35\"><b>Clubs</b></f7-col>\r\n <f7-col width=\"5\"><b>P</b></f7-col>\r\n <f7-col width=\"5\"><b>W</b></f7-col>\r\n <f7-col width=\"5\"><b>D</b></f7-col>\r\n <f7-col width=\"5\"><b>L</b></f7-col>\r\n <f7-col width=\"5\"><b>GD</b></f7-col>\r\n <f7-col width=\"15\"><b>PTS</b></f7-col>\r\n <f7-col width=\"15\"><b>Last 5</b></f7-col>\r\n </f7-row>\r\n <f7-row no-gap v-for=\"(franceclub, index) in franceclubs\" :key=\"index\">\r\n <f7-col width=\"10\">{{ franceclub.SN }}</f7-col>\r\n <f7-col width=\"35\">{{ franceclub.team }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.P }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.W }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.D }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.L }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.GD }}</f7-col>\r\n <f7-col width=\"5\">{{ franceclub.PTS }}</f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P1 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P1 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P1 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"franceclub.P2 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P2 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P2 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"franceclub.P3 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P3 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P3 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"franceclub.P4 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P4 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P4 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n\r\n <f7-col width=\"5\" v-if=\"franceclub.P5 == '1'\">\r\n <f7-icon material=\"check_circle\" color=\"green\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P5 == '2'\">\r\n <f7-icon material=\"remove_circle\" color=\"gray\"></f7-icon>\r\n </f7-col>\r\n <f7-col width=\"5\" v-if=\"franceclub.P5 == '3'\">\r\n <f7-icon material=\"cancel\" color=\"red\"></f7-icon>\r\n </f7-col>\r\n </f7-row>\r\n </f7-block>\r\n </f7-page>\r\n</template>\r\n\r\n<script>\r\nimport firebase from \"firebase\";\r\nimport moment from \"moment\";\r\n\r\nexport default {\r\n data() {\r\n return {\r\n moderator: true,\r\n appState: 1,\r\n myAppVersion: 2,\r\n englishclubs: [],\r\n spainclubs: [],\r\n franceclubs: [],\r\n germanclubs: [],\r\n italyclubs: [],\r\n };\r\n },\r\n watch: {\r\n app_db_version(value) {\r\n //console.log(\"this.app_db_version\", this.app_db_version);\r\n if (this.app_version == \"Android\" || this.app_version == \"iOS\") {\r\n if (this.myAppVersion < value) {\r\n this.$f7router.navigate(\"/newversion/\");\r\n }\r\n }\r\n },\r\n },\r\n\r\n computed: {\r\n app_db_version() {\r\n return this.$store.getters.app_db_version;\r\n },\r\n app_version() {\r\n return this.$store.getters.app_version;\r\n },\r\n contacts() {\r\n return this.$store.getters.contacts;\r\n },\r\n\r\n friends() {\r\n return this.$store.getters.friends;\r\n },\r\n friend_requests() {\r\n return this.$store.getters.friend_requests;\r\n },\r\n },\r\n\r\n methods: {\r\n async checkInternet() {\r\n // console.log(\"members\");\r\n if (window.hasOwnProperty(\"cordova\")) {\r\n let network_status = await this.$store.dispatch(\"checkConnection\");\r\n if (network_status == \"offline\") {\r\n this.$store.commit(\r\n \"setAlertMessage\",\r\n \"It seems you are offline. Kindly check internet connection to continue...\"\r\n );\r\n }\r\n }\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n },\r\n addFrd(frd) {\r\n var request = {};\r\n request.sender = firebase.auth().currentUser.uid;\r\n request.recipient = frd.uid;\r\n console.log(\"request\", request);\r\n this.$store.dispatch(\"sendRequest\", request);\r\n },\r\n gotoChat(frd) {\r\n var frd_string = JSON.stringify(frd);\r\n this.$f7router.navigate(\"/chat/\" + encodeURIComponent(frd_string));\r\n },\r\n initHome() {\r\n this.$store.commit(\"setShowTabs\", true);\r\n },\r\n },\r\n\r\n mounted() {\r\n this.$f7ready((f7) => {\r\n const self = this;\r\n const app = self.$f7;\r\n app.request.get(\r\n \"https://chatme24.com/sportsupdate/goalalert/pullstandingeng.php\",\r\n function (data) {\r\n var obj = JSON.parse(data);\r\n self.englishclubs = obj;\r\n console.log(obj);\r\n }\r\n );\r\n\r\n app.request.get(\r\n \"https://chatme24.com/sportsupdate/goalalert/pullstandingspa.php\",\r\n function (data) {\r\n var obj = JSON.parse(data);\r\n self.spainclubs = obj;\r\n //console.log(obj);\r\n }\r\n );\r\n\r\n app.request.get(\r\n \"https://chatme24.com/sportsupdate/goalalert/pullstandingfrance.php\",\r\n function (data) {\r\n var obj = JSON.parse(data);\r\n self.franceclubs = obj;\r\n // console.log(obj);\r\n }\r\n );\r\n });\r\n },\r\n created() {\r\n this.checkInternet();\r\n this.$store.dispatch(\"getAllUsers\");\r\n this.$store.dispatch(\"getAppDbVersion\");\r\n this.$store.dispatch(\"getAppVersion\");\r\n // this.$store.dispatch(\"getMyRequests\");\r\n // this.$store.dispatch(\"getMyFriends\");\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.small-avatar {\r\n width: 50px;\r\n height: 50px;\r\n border-radius: 50%;\r\n object-fit: cover;\r\n object-position: center;\r\n}\r\n</style>\r\n","import { render, staticRenderFns } from \"./standings.vue?vue&type=template&id=3d494058&scoped=true&\"\nimport script from \"./standings.vue?vue&type=script&lang=js&\"\nexport * from \"./standings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./standings.vue?vue&type=style&index=0&id=3d494058&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d494058\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"},on:{\"page:beforein\":_vm.initHome}},[_c('f7-navbar',{staticClass:\"navbar color-theme-orange\",attrs:{\"title\":\"Club Standings\",\"back-link\":\"Back\"}},[_c('f7-nav-right',[_c('f7-link',{staticClass:\"searchbar-enable\",attrs:{\"data-searchbar\":\".searchbar-demo\",\"icon-ios\":\"f7:search\",\"icon-aurora\":\"f7:search\",\"icon-md\":\"material:search\",\"color\":\"blue\"}})],1),_vm._v(\" \"),_c('f7-searchbar',{staticClass:\"searchbar-demo\",attrs:{\"expandable\":\"\",\"search-container\":\".search-list\",\"search-in\":\".item-title\",\"disable-button\":!_vm.$theme.aurora}})],1),_vm._v(\" \"),_c('f7-list',{staticClass:\"searchbar-not-found\"},[_c('f7-list-item',{attrs:{\"title\":\"Nothing found\"}})],1),_vm._v(\" \"),_c('f7-block-title',[_c('b',[_vm._v(\"Premiership\")])]),_vm._v(\" \"),_c('f7-block',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"10\"}},[_c('b',[_vm._v(\"SN\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_c('b',[_vm._v(\"Clubs\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"P\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"W\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"D\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"L\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"GD\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"PTS\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"Last 5\")])])],1),_vm._v(\" \"),_vm._l((_vm.englishclubs),function(englishclub,index){return _c('f7-row',{key:index,attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"10\"}},[_vm._v(_vm._s(englishclub.SN))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(englishclub.team))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.P))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.W))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.D))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.L))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.GD))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(englishclub.PTS))]),_vm._v(\" \"),(englishclub.P1 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P1 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P1 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P2 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P2 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P2 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P3 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P3 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P3 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P4 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P4 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P4 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P5 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P5 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(englishclub.P5 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e()],1)})],2),_vm._v(\" \"),_c('f7-block-title',[_c('b',[_vm._v(\"La Liga\")])]),_vm._v(\" \"),_c('f7-block',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"10\"}},[_c('b',[_vm._v(\"SN\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_c('b',[_vm._v(\"Clubs\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"P\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"W\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"D\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"L\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"GD\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"PTS\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"Last 5\")])])],1),_vm._v(\" \"),_vm._l((_vm.spainclubs),function(spainclub,index){return _c('f7-row',{key:index,attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.SN))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(spainclub.team))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.P))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.W))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.D))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.L))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.GD))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(spainclub.PTS))]),_vm._v(\" \"),(spainclub.P1 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P1 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P1 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P2 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P2 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P2 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P3 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P3 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P3 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P4 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P4 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P4 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P5 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P5 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(spainclub.P5 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e()],1)})],2),_vm._v(\" \"),_c('f7-block-title',[_c('b',[_vm._v(\"France Ligue 1\")])]),_vm._v(\" \"),_c('f7-block',[_c('f7-row',{attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"10\"}},[_c('b',[_vm._v(\"SN\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_c('b',[_vm._v(\"Clubs\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"P\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"W\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"D\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"L\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('b',[_vm._v(\"GD\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"PTS\")])]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"15\"}},[_c('b',[_vm._v(\"Last 5\")])])],1),_vm._v(\" \"),_vm._l((_vm.franceclubs),function(franceclub,index){return _c('f7-row',{key:index,attrs:{\"no-gap\":\"\"}},[_c('f7-col',{attrs:{\"width\":\"10\"}},[_vm._v(_vm._s(franceclub.SN))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"35\"}},[_vm._v(_vm._s(franceclub.team))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.P))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.W))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.D))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.L))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.GD))]),_vm._v(\" \"),_c('f7-col',{attrs:{\"width\":\"5\"}},[_vm._v(_vm._s(franceclub.PTS))]),_vm._v(\" \"),(franceclub.P1 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P1 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P1 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P2 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P2 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P2 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P3 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P3 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P3 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P4 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P4 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P4 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P5 == '1')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"check_circle\",\"color\":\"green\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P5 == '2')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"remove_circle\",\"color\":\"gray\"}})],1):_vm._e(),_vm._v(\" \"),(franceclub.P5 == '3')?_c('f7-col',{attrs:{\"width\":\"5\"}},[_c('f7-icon',{attrs:{\"material\":\"cancel\",\"color\":\"red\"}})],1):_vm._e()],1)})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./requests.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./requests.vue?vue&type=script&lang=js&\"","<template>\n<f7-page name=\"about\">\n <f7-navbar title=\"Requests\" back-link=\"Back\"></f7-navbar>\n <f7-block-title>Friend requests</f7-block-title>\n <f7-list media-list>\n <f7-list-item swipeout v-for=\"(request, index) in friend_requests\" :key=\"index\" :title=\"request.name\">\n <img class=\"small-avatar\" slot=\"media\" :src=\"request.photo_url\" />\n <f7-swipeout-actions right>\n <f7-swipeout-button color=\"green\" @click=\"confirm(request)\">Add</f7-swipeout-button>\n <f7-swipeout-button color=\"red\" @click=\"remove(request)\">Delete</f7-swipeout-button>\n </f7-swipeout-actions>\n </f7-list-item>\n\n </f7-list>\n</f7-page>\n</template>\n\n<script>\nexport default {\n methods: {\n confirm(request) {\n this.$store.dispatch('confirmRequest', request)\n },\n remove(request) {\n this.$store.dispatch('deleteRequest', request)\n }\n },\n computed: {\n friend_requests() {\n return this.$store.getters.friend_requests\n }\n },\n created() {\n this.$store.dispatch('getMyRequests')\n }\n}\n</script>\n\n<style scoped>\n.small-avatar {\n width: 50px;\n height: 50px;\n border-radius: 50%;\n object-fit: cover;\n object-position: center;\n}\n</style>\n","import { render, staticRenderFns } from \"./requests.vue?vue&type=template&id=626b71e2&scoped=true&\"\nimport script from \"./requests.vue?vue&type=script&lang=js&\"\nexport * from \"./requests.vue?vue&type=script&lang=js&\"\nimport style0 from \"./requests.vue?vue&type=style&index=0&id=626b71e2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"626b71e2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('f7-page',{attrs:{\"name\":\"about\"}},[_c('f7-navbar',{attrs:{\"title\":\"Requests\",\"back-link\":\"Back\"}}),_vm._v(\" \"),_c('f7-block-title',[_vm._v(\"Friend requests\")]),_vm._v(\" \"),_c('f7-list',{attrs:{\"media-list\":\"\"}},_vm._l((_vm.friend_requests),function(request,index){return _c('f7-list-item',{key:index,attrs:{\"swipeout\":\"\",\"title\":request.name}},[_c('img',{staticClass:\"small-avatar\",attrs:{\"slot\":\"media\",\"src\":request.photo_url},slot:\"media\"}),_vm._v(\" \"),_c('f7-swipeout-actions',{attrs:{\"right\":\"\"}},[_c('f7-swipeout-button',{attrs:{\"color\":\"green\"},on:{\"click\":function($event){return _vm.confirm(request)}}},[_vm._v(\"Add\")]),_vm._v(\" \"),_c('f7-swipeout-button',{attrs:{\"color\":\"red\"},on:{\"click\":function($event){return _vm.remove(request)}}},[_vm._v(\"Delete\")])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"","<template>\n <div v-if=\"friend_uid == friend.uid\">\n <f7-page>\n <f7-navbar\n :title=\"this.friend.name\"\n :subtitle=\"this.friend.userStatus\"\n back-link=\"Back\"\n >\n <div slot=\"left\">\n <f7-link fill popup-open=\".demo-popup\">\n <img\n class=\"small-avatar2\"\n slot=\"media\"\n :src=\"this.friend.photo_url\"\n />\n </f7-link>\n </div>\n\n <f7-nav-right>\n <div v-if=\"this.subscribe_affiliate_friend\">\n <f7-link @click=\"pay4me(friend)\">Gift</f7-link>\n </div>\n <span v-if=\"ban_status\">\n <f7-badge color=\"red\">Banned</f7-badge>\n </span>\n <f7-link popover-open=\".popover-menu\">\n <i class=\"f7-icons\">ellipsis_vertical</i>\n </f7-link>\n </f7-nav-right>\n </f7-navbar>\n\n <f7-messagebar\n :placeholder=\"placeholder\"\n ref=\"messagebar\"\n :attachments-visible=\"attachmentsVisible\"\n :sheet-visible=\"sheetVisible\"\n @keydown.native=\"gotoKeyDown(friend)\"\n @keyup.native=\"gotoKeyUp(friend)\"\n >\n <f7-link\n icon-ios=\"f7:folder\"\n icon-aurora=\"f7:folder\"\n icon-md=\"material:folder\"\n slot=\"inner-start\"\n @click=\"launchFilePicker\"\n ></f7-link>\n <f7-link\n icon-ios=\"f7:camera_fill\"\n icon-aurora=\"f7:camera_fill\"\n icon-md=\"material:camera_alt\"\n slot=\"inner-start\"\n @click=\"sheetVisible = !sheetVisible\"\n ></f7-link>\n <f7-link\n icon-ios=\"f7:arrow_up_fill\"\n icon-aurora=\"f7:arrow_up_fill\"\n icon-md=\"